Eu tenho uma máquina Ubuntu no IP 192.168.3.1, outra máquina está conectada a ela no IP fixo de 192.168.3.2. Esta máquina também está conectada a um roteador via usb0 que compartilhou o IP 172.30.220.17 com a máquina
O que eu quero fazer é encaminhar qualquer pacote TCP ou UDP recebido por esta máquina através do IP 192.168.3.1 para 172.30.220.19 do roteador e vice-versa
Por exemplo, se a máquina em 192.168.3.2 enviar um pacote TCP "Hello" na porta 33000 para o computador principal, ela deverá enviar o pacote para 172.30.220.19:33000
Depois de ler a documentação do iptables e algumas perguntas anteriores, tentei os comandos abaixo para NAT, mas não funciona, não sei por quê. Eu ficaria feliz se alguém pudesse me orientar sobre o que fiz de errado. Obrigado pelo seu tempo
sudo iptables -t nat -A PREROUTING -p tcp -j DNAT --to-destination 172.30.220.19
sudo iptables -t nat -A POSTROUTING -p tcp -d 172.30.220.19 -j SNAT --to-source 192.168.3.2
O que você está descrevendo parece que você está configurando um gateway/roteador de rede. Aqui está o que você precisa para fazer isso.
No exemplo public_nic é o nome da nic com endereço IP 172.30.220.17 e gateway_nic é a nic com endereço IP 192.168.3.1. E estou assumindo que ambas as NICs estão na mesma máquina.
1) Habilite o encaminhamento de IP
Você deve certificar-se de ativar o encaminhamento de IP.
Para ativar temporariamente, você pode executar este
Para habilitar permanentemente, você pode editar /etc/sysctl.conf e adicionar a seguinte linha
Em seguida, execute isto para aplicar as alterações. (necessário apenas se você seguir o caminho de modificar o arquivo de configuração sysctl)
2) Configurar mascaramento
Isso fará com que todos os pacotes pareçam vir do IP público ou, neste caso, do seu endereço 172.30.220.19, e não do IP privado do host de origem.
3) Configure suas regras de encaminhamento
4) Configurar roteamento
Você precisará certificar-se de que o dispositivo em sua rede interna que você deseja encaminhar (192.168.3.2) usa o ip ${gateway_nic} como gateway padrão. No seu caso 192.168.3.1.
Esse script foi o que finalmente fez com que funcionasse para mim no meu cenário. usb0 é o nome da interface para a sub-rede 172.30.220.17 e end0 é o nome da interface para a sub-rede 192.168.3.1 na máquina principal