Entendendo como o dnat funciona no iptables

1

Estou executando 3 máquinas virtuais com o Fedora 19. A máquina B é configurada com dois adaptadores de rede e fornece um canal que entre a máquina A e a máquina C.

O IP da máquina é definido como 192.168.1.3 e o IP da máquina C está definido como 172.16.1.1 . Na máquina B eu tenho um adaptador com IP 192.168.1.254 e outro adaptador com IP 172.16.1.254 .

Eu tenho que criar uma regra na máquina B na tabela NAT que permite uma conexão SSH para a máquina A, mas usando o endereço IP externo da máquina B.

Eu criei esta regra (não sei se isso está correto ou não):

iptables -t nat -A PREROUTING -i p8p1 -s 172.16.1.1 -d 172.16.1.254 -p tcp --dport 22 -j DNAT --to-destination 192.168.1.3

Se eu fizer isso, se eu usar netcat , não consigo me conectar à máquina A. Agora, se eu inserir esta regra:

iptables -A FORWARD -i p8p1 -o p7p1 -s 172.16.1.1 -d 192.168.1.3 -p tcp --dport 22 -j ACCEPT

Eu posso fazer a conexão.

Minha pergunta é esta:

Inserir a segunda regra não torna a primeira regra desnecessária?

    
por Favolas 19.10.2013 / 16:45

1 resposta

2

A primeira regra diz ao kernel para os pacotes nat vindos de 172.16.1.1 para 172.16.1.254 na porta 22 para 192.168.1.3.

A segunda regra diz-lhe para permitir pacotes vindos de 172.16.1.1 para 192.168.1.3 na porta 22. Esta regra é aplicada depois que o primeiro nomeou o pacote, então ambos são necessários se a sua política padrão é rejeitar pacotes redirecionados. .

Diagrama de arte ASCII descrevendo o processo:

                      Packet (src -> dst)

          +-----------------------+--------------------+
machine C |            172.16.1.1 -> 172.16.1.254      |
          +-----------------------+--------------------+
                                  |
                                  v
          +---------------------p8p1-------------------+
          |                       |                    |
          |PREROUTING: 172.16.1.1 -> 192.168.1.3 (DNAT)|
machine B |                       |                    |
          |FORWARD:            ACCEPT                  |
          |                       |                    |
          +---------------------p7p1-------------------+
                                  v
                                  |
          +-----------------------+--------------------+
machine A |           172.16.1.1 -> 192.168.1.3        |
          +--------------------------------------------+
    
por 19.10.2013 / 18:09