iptables 在 OUTPUT 里使用 cgroup 匹配的连接在-j MARK 后似乎没有重路由

30 天前
 Smokovsky

如题,例子:

# Generated by iptables-save v1.8.10 (nf_tables) on Sun May 26 07:35:13 2024
*mangle
:PREROUTING ACCEPT [3938050:2380423593]
:INPUT ACCEPT [47464987:94663961441]
:FORWARD ACCEPT [89904:8730904]
:OUTPUT ACCEPT [40543507:96091968422]
:POSTROUTING ACCEPT [40624330:96099741064]
:DIVERT - [0:0]
:XRAY - [0:0]
:XRAY_MASK - [0:0]
-A PREROUTING -p tcp -m socket -j DIVERT
-A PREROUTING -j XRAY
-A OUTPUT -j XRAY_MASK
-A DIVERT -j MARK --set-mark 1
-A DIVERT -j ACCEPT
# -A XRAY -m mark --mark 1 -j DROP # 有效,会导致本机断网
# -A XRAY -m mark --mark 2 -j DROP # 无效,没有匹配到任何流量,aria2.service 也能正常连网
-A XRAY -m mark --mark 0xff -j RETURN
-A XRAY -d 223.5.5.5/32 -j RETURN
-A XRAY -d 192.168.240.0/24 -j RETURN
-A XRAY -d 127.0.0.0/24 -j RETURN
-A XRAY -d 224.0.0.0/4 -j RETURN
-A XRAY -d 255.255.255.255/32 -j RETURN
-A XRAY -d 192.168.239.0/24 -p tcp -j RETURN
-A XRAY -d 192.168.239.0/24 -p udp -j RETURN
# ↓ 为 aria2 单独配置代理,但是不工作
-A XRAY -m mark --mark 2 -p tcp -j TPROXY --on-port 1089 --on-ip 127.0.0.1 --tproxy-mark 1
-A XRAY -m mark --mark 2 -p udp -j TPROXY --on-port 1089 --on-ip 127.0.0.1 --tproxy-mark 1
-A XRAY -p udp -j TPROXY --on-port 1088 --on-ip 127.0.0.1 --tproxy-mark 1
-A XRAY -p tcp -j TPROXY --on-port 1088 --on-ip 127.0.0.1 --tproxy-mark 1
-A XRAY_MASK -m conntrack --ctdir REPLY -j RETURN
-A XRAY_MASK -m mark --mark 0xff -j RETURN
-A XRAY_MASK -d 223.5.5.5/32 -j RETURN
-A XRAY_MASK -d 192.168.240.0/24 -j RETURN
-A XRAY_MASK -d 127.0.0.0/24 -j RETURN
-A XRAY_MASK -d 224.0.0.0/4 -j RETURN
-A XRAY_MASK -d 255.255.255.255/32 -j RETURN
-A XRAY_MASK -d 192.168.239.0/24 -p tcp -j RETURN
-A XRAY_MASK -d 192.168.239.0/24 -p udp -j RETURN
# ↓ 匹配到了流量,但是似乎没有在 XRAY chain 里进行重路由
-A XRAY_MASK -m cgroup --path "/system.slice/aria2.service" -j MARK --set-mark 2
-A XRAY_MASK -p udp -j MARK --set-mark 1
-A XRAY_MASK -p tcp -j MARK --set-mark 1
COMMIT
# Completed on Sun May 26 07:35:13 2024
# Generated by iptables-save v1.8.10 (nf_tables) on Sun May 26 07:35:13 2024
*filter
:INPUT ACCEPT [47464985:94663961243]
:FORWARD ACCEPT [89903:8730876]
:OUTPUT ACCEPT [40534420:96091009174]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Sun May 26 07:35:13 2024
# Generated by iptables-save v1.8.10 (nf_tables) on Sun May 26 07:35:13 2024
*nat
:PREROUTING ACCEPT [653605:112402271]
:INPUT ACCEPT [463059:49309506]
:OUTPUT ACCEPT [701626:54916380]
:POSTROUTING ACCEPT [348272:27059931]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 192.168.239.0/24 ! -d 192.168.239.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.240.0/24 ! -o wg1 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sun May 26 07:35:13 2024
633 次点击
所在节点    Linux
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1044126

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX