Пакет Iptables src ip не NAT в случае icmp-ответа и tcp ack

Пакет Iptables src ip не NAT в случае icmp-ответа и tcp ack

Я использую iptablesего совместно с net-filterочередью, чтобы программно изменять пакеты.

Я использую iptablesправила в лабораторной среде Ubuntu с двумя сетевыми картами: eth0 для Интернета и eth1 для локальной сети. Я использовал известные правила iptables для NAT с маскарадингом на eth0.

sudo iptables --table nat --append POSTROUTING -o eth0 -j MASQUERADE 
sudo iptables -append FORWARD -i eth1 -j ACCEPT. 
sudo iptables -t mangle -A PREROUTING -j NFQUEUE --queue-num 0 
sudo iptables -t mangle -A OUTPUT -j NFQUEUE

Эти 4 правила помогают мне перехватывать пакеты внутри моей программы и изменять пакеты или отбрасывать то, что я хочу, используя nfq_set_verdict.

На самом деле все идет так, как я и ожидал, то есть три типа протокола icmp, tcpи udpпакеты изменяются и повторно вводятся. В очереди затем выходит eth0 в интернет, принимая eth0 ip адрес в качестве исходного адреса (эффект использования правила MASQUERADE NAT).
Это справедливо для всех пакетов, КРОМЕ: ICMP pingотвечатьили TCPАСКпакеты.
Они выходят в интернет, используя частный IP-адрес устройства локальной сети - 192.168.xx на eth1, и достигают другой стороны с этим частным IP-адресом источника.

Есть идеи? Спасибо.

Связанный контент