如何标记输出数据包并让 ip-rule 看到它?

如何标记输出数据包并让 ip-rule 看到它?

我已经配置了路由:

# ip rule

0:      from all lookup local
25555:  from all fwmark 0x3000 lookup main
32766:  from all lookup another
32767:  from all lookup default

我正在尝试用 0x3000 标记输出 HTTP 请求(例如curl http://ifconfig.io/ip)以使 25555 工作:

# iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 0x3000

但它不起作用。我错过了什么?

答案1

事实证明,路由代码必须有默认路由才能触发 fwmark 规则,否则就会直接出现“网络不可达”且不会生成数据包。

我通过在规则列表末尾添加默认路由来解决这个奇怪的规则:

ip route add default via 127.0.0.1 dev lo table 4222222222
ip rule add table 4222222222 priority 4294967295

相关内容