Por que meus iptables entradas bloco não ping uma máquina virtual Xen? [fechadas]

StackOverflow https://stackoverflow.com/questions/653812

  •  19-08-2019
  •  | 
  •  

Pergunta

Eu estou escrevendo um script bash para adicionar firewall simples para Xen.

Aqui está a configuração de firewall real:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere            state NEW udp dpt:ha-cluster
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Eu gostaria de adicionar uma nova cadeia para cada uma das minhas máquinas virtuais (cada um deles tem uma interface virtual chamado vif1.0, vif2.0, etc). interface de saída (ponte) é xenbr0.

Aqui está o que eu faço (por exemplo, para pingue bloco 'in'to domU1, vif1.0):

iptables -N domUFirewall
iptables -I FORWARD -j domUFirewall
iptables -I INPUT -j domUFirewall
iptables -A domUFirewall -i vif1.0 -p icmp -j DROP

Mas .. não trabalho, eu ainda sou capaz de ping-in / out a domU.

Deve ser algo realmente 'burro', mas eu não consigo descobrir o que está errado.

Qualquer pistas?

Thx

Foi útil?

Solução

Uma vez que você estiver usando XEN com a rede em ponte, os pacotes estão sendo interceptado em um nível antes dos comandos do iptables comuns podem influenciá-los. Assim, você provavelmente precisará usar o comando ebtables para pacote influência encaminhamento da maneira que você quiser.

resposta Original esquerda abaixo que irá trabalhar para outras configurações, mas não para XEN com a rede em ponte.

Vou fingir por causa do exemplo que o endereço IP de vif1.0 é 192.168.1.100.

Eu refazer a lógica para não verificar o dispositivo de entrada, mas em vez disso, verifique por endereço IP. Na cadeia de entrada, o pacote é proveniente de (digamos) eth0 dispositivo, não a partir de vif1.0. Assim, esta regra:

iptables -I INPUT -i vif1.0 -j domUFirewall

que eu propus anteriormente nunca encontrou nenhum pacotes. No entanto, se você fazer o seguinte, ele deve fazer o que você quer:

iptables -I INPUT -d 192.168.1.100 -j domUFirewall

, onde neste caso o domUFirewall cadeia está configurado por:

iptables -N domUFirewall
iptables -F domUFirewall
iptables -A domUFirewall -p icmp -j DROP

Se uma determinada cadeia é para um único dispositivo, então você quer fazer esta verificação antes salto na cadeia, em uma regra com a ação "-j chainName". Em seguida, na própria cadeia, você nunca tem que verificar para o dispositivo ou Endereço IP.

Em segundo lugar, eu sempre flush (esvaziar) a cadeia em seu script, apenas no caso de você estiver re-executar o script. Note que quando voltar a executar o script, você pode obter queixas sobre a linha -N. Isso é OK.

Existem outras maneiras que você poderia fazer isso, mas para dar um exemplo diferente, eu preciso saber especificamente como sua VM está configurada - ponte de rede? NAT? Etc. Mas o exemplo que dei aqui deve funcionar em qualquer um desses modos.

Aqui estão alguns links úteis para o futuro:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top