我在libnetfilter_queue库中使用。
我需要更改数据包中的dest ip。我更改了目标IP并重新注入数据包: nfq_set_verdict(qh,id,NF_ACCEPT,size,originalPacket);
但改变没有生效。
但是,如果我更改数据包,请将其复制到新的char数组,并调用set复制数组的判定,而不是更改生效。
我做错了吗?
谢谢
答案 0 :(得分:2)
需要使用NF_REPEAT判决重新将数据包重新发送到 相同的链条。使用NF_ACCEPT判决将数据包注入后续 链。但为此目的,您应该标记数据包以避免循环, 即:
iptables -t raw -A PREROUTING -p tcp -m tcp --dport 80 -m mark !
--mark 0x1/0x1 -m tcp -j NFQUEUE
iptables -t raw -A PREROUTING -p tcp -m tcp --dport 80 -m mark --mark
0x80/0x80 -m tcp ACCEPT # altered packets
iptables -t raw -A PREROUTING -p tcp -m tcp --dport 80 -m mark --mark
0x1/0x1 -m tcp ACCEPT # rest