Skip to content

Commit 8a6ceff

Browse files
committed
routing: Add note
1 parent 12f3b98 commit 8a6ceff

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

docs/ops/network/routing.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,11 +316,11 @@ default via 198.51.100.1 dev eth1
316316
:FORWARD ACCEPT [0:0]
317317
:OUTPUT ACCEPT [0:0]
318318
:POSTROUTING ACCEPT [0:0]
319-
# 若数据包属于已建立连接,恢复 connmark fwmark
319+
# 若数据包属于已建立的连接,从 connmark 恢复到 fwmark
320320
-A PREROUTING -j CONNMARK --restore-mark
321321
-A PREROUTING -m mark ! --mark 0 -j RETURN
322322

323-
# 初次确定上游接口,打标并保存到 conntrack
323+
# 初次确定上游接口,打标并保存到 connmark
324324
-A PREROUTING -i eth0 -j MARK --set-mark 100
325325
-A PREROUTING -i eth1 -j MARK --set-mark 101
326326
-A PREROUTING -j CONNMARK --save-mark
@@ -330,4 +330,10 @@ COMMIT
330330
前两条规则会尝试从 CT 中恢复 connmark 到 fwmark,如果恢复成功,那么数据包的标记就不再为零,可以直接 RETURN,避免重复打标。
331331
若标记仍为零,则表示这是一个新连接的数据包,需要根据输入接口打上对应的标记,并保存到 CT 中以备后续使用。
332332

333-
注意到,尽管打标的规则仅使用了 `-i`(输入接口)条件,对于从 LAN 侧向 WAN 侧发起的连接来说,在收到第一个回包时,输入接口自然就是对应的 WAN 接口,因此打标是正确的。
333+
注意到,尽管打标的规则仅使用了 `-i`(输入接口)条件,对于从 LAN 侧向 WAN 侧发起的连接来说,在收到第一个回包时,输入接口自然就是对应的 WAN 接口,此时根据 `-i` 条件能够正确打标。
334+
335+
对于入向(WAN → LAN)的连接,由于 `main` 表的优先级很高(1 < 3),因此会优先匹配到 `main` 表中的路由规则,从而无视标记正常发送到 LAN 侧。
336+
337+
显然,本节所述的方法不区分 IPv4 和 IPv6,因此只需要将相同的配置在 `ip -6 rule``ip6tables` 中重复一遍即可。
338+
339+
相信你也注意到了,如果 LAN 侧还需要进一步的类似「源进源出」式路由的话,就需要更复杂的打标和路由规则设计了。

0 commit comments

Comments
 (0)