Debian 11 では fwmark は使用できません (bulleyes)

Debian 11 では fwmark は使用できません (bulleyes)

よく使ったレシピがありますが、今回はDebian 11(カーネル5.10.0-10-amd64)では動作しません。

私の設定は、デフォルトでRFC1918 LAN用の内部インターフェイスeth0といくつかのISPボックスに接続されている2つの外部インターフェイスです。

ISP1のeth1は、アドレスが10.0.0.254で、パブリックIPが1.2.3.4(シンボル)のデフォルトルータとして機能します。

ISP2のeth2には、アドレスが10.0.3.254でパブリックアドレスが2.3.4.5のルーターがあります。

可能なパスが異なります。私はパケットのパスを制御したいので、いくつかのルールとfwmarkを作成しました。まず 2<tab>secondrouter追加します。/etc/iproute2/rt_tables

ip rule add fwmark 0x3 lookup secondrouter
ip route add default via 10.0.3.254 table secondrouter

ip route list table secondrouterすべてがいいですip rule list

この時点で私は次のことができます:

curl -4 ifconfig.me
1.2.3.4 #<- public ip address of my default route

だから私はやる

iptables-legacy -t mangle -A OUTPUT -d 34.117.59.81 -j MARK --set-mark 0x3 

今私がそうすれば

curl -4 ifconfig.me
<timeout>

パブリックIPで2.3.4.5を期待しています。示されたパケットがIPルーティングテーブルから経路を取得できないことは明らかであり、さらに悪いことにはタイムアウトが生じる。

以前のバージョンの Debian と同じ方法でこれを行うと、完璧に動作します。

注:私がした場合

ip route add 34.117.59.81 via <second router IP>

私のカールテストは期待どおりに完全に実行されます。

curl -4 ifconfig.me
2.3.4.5 #<- Pub ip address of my second router

iptablesルーティングにパケットを使用または表示するときにiptables-legacy問題が発生します。ところで、私はうまく動作する多くのiptablesルールを持っているので、iptablesの問題のようには見えません。

編集:回避策:テーブル出力に変装を追加してください。ナット

ベストアンサー1

パケットがシステムを離れると、デフォルトの出力インターフェイスに対応する送信元 IP アドレスが割り当てられます。

したがって、マーキングルールはパケットに計画されている宛先以外の宛先を提供するため、出力インターフェイスにMASQUERADEルールを追加する必要があります。

iptables-legacy -t nat -A POSTROUTING -o eth2 -j MASQUERADE

netfilter の処理順序を理解するには:プルーフ)

                     (input interface)
                             |
                             v
                     /-------+-------\
                     | sanity checks |
                     \-------+-------/
                             |
                             v hook NF_IP_PRE_ROUTING
                      +------+------+
                      | conntrack   |
                      | defrag.     |
                      +-------------+
                      | mangle      |
                      | PREROUTING  |
                      +-------------+
                      | nat (dst)   |
                      | PREROUTING  |
                      +------+------+
                             |
                             v
        local delivery  /----+----\    forward
       +---------------+   route   +---------------+
       |                \---------/                |
       v                                           v
 /-----+-----\                               /-----+-----\
 |  defrag.  |                               | TTL check |
 \-----+-----/                               | dec. TTL  |
       |                                     \-----+-----/
       v hook NF_IP_LOCAL_IN                       |
+------+------+                                    |
| mangle  (1) |                                    |
| INPUT       |                                    |
+-------------+                                    |
| filter      |                                    v
| INPUT       |                              /-----+-----\
+-------------+                              | DF check  |
| nat (src)(2)|                              \-----+-----/
+-------------+                                    |
| conntrack   |                                    |
| confirm     |                                    | 
+------+------+                               hook v NF_IP_FORWARD
       |                                    +------+------+
       v                                    | mangle  (1) |
/------+--------\                           | FORWARD     |
| local process |                           +-------------|
\------+--------/                           | filter      |
       |                                    | FORWARD     |
       v                                    +------+------+
 /-----+-----\                                     |
 |   route   |                                     |
 |   frag.   |                                     |
 \-----+-----/                                     |
       |                                           |
       v hook NF_IP_LOCAL_OUT                      |
+------+------+                                    |
| conntrack   |                                    |
| defrag.     |                                    |
+-------------+                                    |
| mangle      |                                    |
| OUTPUT      |                                    |
+-------------+                                    v
| nat (dst)(3)|                              /-----+-----\
| OUTPUT      |                              |   frag.   |
+-------------+                              \-----+-----/
| filter      |                                    |
| OUTPUT      |                                    |
+------+------+                                    |
       |                                           |
       v                                           |
 /-----+-----\                                     |
 |  reroute  |                                     |
 \-----+-----/                                     |
       |                                           |
       +------------------+     +------------------+
                          |     |
                          v     v hook NF_IP_POST_ROUTING
                      +---+-----+---+
                      | mangle  (1) |
                      | POSTROUTING |
                      +-------------+
                      | nat (src)   |
                      | defrag.     |
                      | POSTROUTING |
                      +-------------+
                      | conntrack   |
                      | confirm     |
                      | frag.       |
                      +------+------+
                             |
                             v
                   (output interface)

おすすめ記事