CentOS 6 iptables nat router

1

Estou tentando configurar um roteador nat para um laboratório para simular uma rede privada conectada a uma WAN. Eu tenho três máquinas virtuais:

  • ip público 192.168.0.5/24
  • ip privado 172.16.0.5/24
  • roteador 192.168.0.1/24 (eth0), 172.16.0.1/24 (eth1)

Comecei configurando a rede de cada sistema e confirmei que podia fazer ping do roteador e router privados e > e do roteador público e > de volta.

Em seguida, defino net.ipv4.ip_forward para 1 usando sysctl.conf e apliquei as alterações.
Neste ponto, não consegui fazer ping privado para público e público para privado. As regras iptables do roteador de limpeza corrigiram o problema.

iptables -F
iptables -t net -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle-X

Em seguida, seguindo o guia do CENTOS6 / RHEL6, emiti estes comandos do iptables para configurar o encaminhamento

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

A confusão começa. Eu sou capaz de ping de privado para público, usando um despejo de tcp eu posso confirmar o endereço IP está mascarando corretamente. No entanto, também sou capaz de fazer ping de público para privado.

Aqui está um dump do arquivo /etc/sysconfig/iptables do roteador linux

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -o eth1 -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

Eu brinquei com a adição de rejeições, estado de entrada relacionado / estabelecido. Eu não consigo impedir que o host supostamente pubiano perscrute a rede privada. Alguma ideia? Tenho certeza que tenho algo errado.

    
por pacmanwa 09.10.2016 / 08:50

2 respostas

0

Eu finalmente descobri! Primeiro, descarregue iptables como antes:

iptables -F
iptables -t net -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

Configurar políticas de filtro

iptables -P OUTPUT ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP

Em seguida, configure o mascaramento

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Em seguida, configure um filtro para impedir o roteamento para sua interface privada. Isso impede que os hosts públicos usem o roteador como um gateway. Sem isso eu posso pingar a interface privada do roteador de público.

iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -j DROP

Por fim, o encaminhamento de configuração

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Espero que isso ajude alguém.

    
por 10.10.2016 / 19:06
0

Sua política padrão para a tabela de filtros deve ser DROP, não ACCEPT, caso contrário você encaminha todos os pacotes por padrão.

iptables -P FORWARD DROP
    
por 09.10.2016 / 15:27