
estou executando o kerenl 3.14.18 e usando o iptables 1.4.21, construído com estas opções --static-enable --disable-shared. quando executo este comando: /sbin/iptables -A PREROUTING -m -d 127.3.0.2/24 -j DNAT --to-destination 10.0.0.1 -p udp -dport 69 recebo esta mensagem de erro: iptables v1.4.21: Não foi possível carregar a correspondência `-d': Arquivo ou diretório inexistente
Alguém pode ajudar a explicar o que estou perdendo? Agradeço antecipadamente.
Responder1
oi, tenho um sistema host com 2 interfaces, eth0 e eth1. eth0 receberá pacotes com ip 127.3.xx quero encaminhar esses pacotes para sair da eth1 para um servidor (10.0.1). eth1 tem ip de 192.168.0.100. o servidor precisa ver os pacotes como se eles viessem do host (192.168.0.100). acho que posso remover o sinalizador -m, mas quando o faço, recebo este erro: iptables v1.4.21: vários sinalizadores -d não permitidos
Para fazer isso, você usaria as seguintes regras do iptables:
iptables -t nat -A PREROUTING -d 127.3.0.2/24 -p udp --dport 69 -j DNAT --to-destination 10.0.0.1 iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100
Mas você deve substituir 127.3.0.2/24 por um único IP (ou seja, 127.3.0.2) ou por um intervalo CIDR válido (por exemplo, 127.3.0.0/24). 127.3.0.2/24 não é um intervalo CIDR válido, pois /24 cobriria 127.3.0.0-127.3.0.254. Isso também redirecionaria qualquer tráfego para qualquer IP nesse intervalo para a porta 69 em 10.0.0.1.
Além disso, como a porta 69 é TFTP, sinto-me obrigado a mencionar - se você estiver tentando usar isso para uma inicialização PXE ou outra solução baseada em DHCP, há uma grande probabilidade de que não funcione, pois a maioria dos fornecedores tem problemas para atravessar sub-redes usando PXE .