为了完成一些转发任务,我使用脚本来添加自定义链。部分代码如下(以 root 身份运行):
iptables -t nat -N v2ray_forwarder
iptables -t nat -I OUTPUT -j v2ray_forwarder
iptables -t nat -A v2ray_forwarder -p tcp -m set --match-set srv_ip dst -j RETURN
iptables -t nat -A v2ray_forwarder -d 0.0.0.0/8 -j RETURN
iptables -t nat -A v2ray_forwarder -d 10.0.0.0/8 -j RETURN
iptables -t nat -A v2ray_forwarder -d 127.0.0.0/8 -j RETURN
iptables -t nat -A v2ray_forwarder -d 192.168.0.0/16 -j RETURN
iptables -t nat -A v2ray_forwarder -p tcp -m set --match-set gfw_ip dst -j REDIRECT --to-port 1081
iptables -t nat -A v2ray_forwarder -p tcp -m set ! --match-set chn_ip dst -j REDIRECT --to-port 1081
代码运行正常,我确信包已正确转发。但是,在我点击 之后sudo iptables -L
,它显示:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
在我的路由器(OpenWRT)上,iptables -L
总是显示所有链都存在,但它在我的笔记本电脑上不起作用。有人能告诉我为什么吗?
谢谢你!
答案1
自定义链与表绑定。这意味着您不能在表的规则中使用已在表中创建的mangle
链。filter
nat
该iptables -L
命令仅显示filter
表链。检查 的输出iptables -t nat -L
。但最好使用该iptables-save -c
命令列出带有计数器的完整规则集。