Preciso configurar regras do iptables que alterem todos os endereços de origem dos pacotes de saída para o endereço IP público do roteador e redirecionam todos os pacotes de entrada com a porta de destino 80 para uma das máquinas em que o servidor da web está. Esta é uma tarefa da uni e eu já tenho respostas para isso, mas elas são um tanto inconsistentes. Um conjunto de respostas vem do livro de onde essa tarefa vem (por isso deve estar realmente correta) e o outro vem do professor. Portanto, o livro diz que isso deve ser feito dessa maneira (eth0 é uma interface pública com IP público e eth1 é uma interface conectada à rede local - uma imagem para uma melhor referência ):
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source IPX
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-
destination IP1:80
e meu professor acha que estas são as respostas corretas:
iptables -t nat -A POSTROUTING -i eth1 -j SNAT --to-source IPX
iptables -t nat -A PREROUTING -p -o eth1 tcp --dport 80 -j DNAT --to-\
destination IP1:80
Como você pode ver, a diferença está nas interfaces escolhidas. Pelo que entendi, as opções -i
e -o
são para diferenciar entre "subinterfaces" de saída e entrada em uma única interface.
Portanto, a primeira regra na resposta do meu livro diz que todos os pacotes que devem ser enviados via interface eth0 devem ter seu IP de origem alterado para o IP público do roteador. Meu professor diz que todos os pacotes que chegam na interface local do roteador devem ter seu endereço de origem alterado para IP público dos roteadores.
Na segunda regra, o livro diz que todos os pacotes que chegam na "subinterface" de entrada de eth0 destinada à porta 80 devem ter seu endereço de destino alterado e meu professor diz que todos os pacotes que saem de eth1 devem ter seu endereço alterado.
Qual conjunto de respostas está correto? Para mim, ambos parecem corretos, apenas abordam o problema de lados diferentes, mas depois de algumas pesquisas, descobri que a maioria dos guias na internet segue a abordagem do livro e é possível que meu professor cometa um erro, então não sei realmente qual um está verdadeiramente correto. Eu ficaria muito grato pela resposta rápida, porque eu tenho um teste desse assunto em dois dias.