Porta de espelho via iptables


11

Eu tenho um servidor raiz Linux (Debian 7.5) dedicado, com vários convidados configurados. Os convidados são instâncias KVM e obtêm acesso à rede via utilitários de ponte (NAT, IPs internos, usam o host como um gateway).

Por exemplo, um KVM é meu convidado do servidor da Web e fica acessível via IP do host da seguinte maneira:

    iptables -t nat -I PREROUTING -p tcp -d 148.251.Y.Z 
--dport 80 -j DNAT --to-destination  192.168.100.X:80 

Eu faço o mesmo com outros serviços, mantendo-os independentes, com NAT e isolados.

Mas um convidado deve ser um monitor de rede e deve executar a inspeção do tráfego de rede (como um IDS). Normalmente, em uma instalação não virtual, eu usaria portas VACLs ou SPAN para espelhar o tráfego. Obviamente, dentro deste host, não posso fazer isso ( facilmente , porque não quero usar abordagens de comutação virtual complexas).

  1. Posso obter um espelho de porta usando o iptables e redirecionar todo o tráfego de entrada e saída para um convidado KVM? Todos os hóspedes têm uma interface dedicada, como vnet1.
  2. É possível encaminhar seletivamente o tráfego, com base no protocolo (como uma regra de encaminhamento de VACL, que captura apenas HTTP)?
  3. os convidados precisam de uma configuração de interface específica, quando eu preciso manter vnet1como uma interface de gerenciamento (com um IP)?

Eu ficaria feliz por um ponto na direção certa:

iptables         1.4.14-3.1
linux            3.2.55
bridge-utils     1.5-6

Muito obrigado :)

Respostas:


14

e quanto a anexar as regras da tabela Mangle do módulo de pré-roteamento do servidor raiz por algo como:

iptables -I PREROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee

e, em seguida, anexando as regras da tabela Mangle do módulo pós-roteamento por algo como

iptables -I POSTROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee 

onde 192.168.200.1 é o monitor de rede.

Essas regras espelharão todo o tráfego de entrada e saída encaminhando-o para 192.168.200.1

editar:

mangle table specific
  -j ROUTE            (explicitly route packets, valid at PREROUTING)
      options:
      --iface <iface_name>
      --ifindex <iface_idx> 

mas você também pode usar algo como

iptables -I PREROUTING –t mangle –i eth0 –j TEE –gateway 192.168.200.1

e

iptables -I POSTROUTING –t mangle –j TEE –gateway 192.168.200.1

onde TEEagora é um alvo que PREROUTINGrequer mais opções, como -i, por exemplo -p, etc.


Leitores de NB para SE que usam versões mais recentes iptablesque não têm mais o ROUTEdestino, veja minha resposta em unix.stackexchange.com/a/174619/31228 .
Jonathan Ben-Avraham
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.