Eu tenho um dispositivo com dois IPs válidos diferentes (por exemplo, x.x.x.x
e y.y.y.y
). Eu quero publicar um servidor na porta 996
, então eu uso iptables dnat rules
para fazer isso.
iptables -I PREROUTING -d x.x.x.x -p tcp --dport 996 -j DNAT --to 192.168.0.1
iptables -I PREROUTING -d y.y.y.y -p tcp --dport 996 -j DNAT --to 192.168.0.1
iptable -I FORWARD -j ACCEPT
quando o x.x.x.x
é meu gateway padrão (com mais prioridade), posso conectar-me ao meu servidor através de x.x.x.x:996
e não consigo me conectar a y.y.y.y:996
e ao contrário de y.y.y.y
.
Eu tive algumas tentativas em ip rule
também, mas não deu certo!
ip rule add from x.x.x.x lookup x.out
ip rule add from y.y.y.y lookup y.out
ip route add default via x.x.x.x table x.out
ip route add default via y.y.y.y table y.out
Mas também não funciona!
Eu usei tcpdump
para analisar os pacotes e não consigo ver os pacotes nativos para o IP não trabalhado.
por exemplo:
09:21:43.456367 IP 55.23.109.187.10616 > y.y.y.y.996: Flags [S], seq 4191468044, win 65535, options [mss 1390,sackOK,TS val 11838421 ecr 0,nop,wscale 8], length 0
09:21:45.456367 IP 55.23.109.187.10616 > y.y.y.y.996: Flags [S], seq 4191468044, win 65535, options [mss 1390,sackOK,TS val 11838421 ecr 0,nop,wscale 8], length 0
09:21:49.456367 IP 55.23.109.187.10616 > y.y.y.y.996: Flags [S], seq 4191468044, win 65535, options [mss 1390,sackOK,TS val 11838421 ecr 0,nop,wscale 8], length 0
09:21:52.456367 IP 55.23.109.187.10616 > y.y.y.y.996: Flags [S], seq 4191468044, win 65535, options [mss 1390,sackOK,TS val 11838421 ecr 0,nop,wscale 8], length 0
qual é o problema e como posso corrigi-lo?
NOTA: não quero resolver o problema com o CONNMARK!