FORWARDまたはOUTPUTチェーンに適用されたiptablesタグでポリシールーティングが一貫していないのはなぜですか?

FORWARDまたはOUTPUTチェーンに適用されたiptablesタグでポリシールーティングが一貫していないのはなぜですか?

iptables私はSSHトンネル(-w)を介してHTTPS接続をルーティングするためにタグとルールを使用していますiproute2

tun0デバイスが存在し、必要に応じて動作しており、OUTPUTチェーンにMARKを適用するとルーティングは機能しますが、何らかの理由でFORWARDチェーンにMARKを適用するとルーティングルールが機能しないようです.

オペレーティングシステムはCentOS 6.7、カーネルは2.6.32、iptablesは1.4.7です。表示iptablesと記録:

# iptables -t mangle -A FORWARD -p tcp --dport 443 -j MARK --set-mark 1 
# iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 1 
# iptables -t mangle -A POSTROUTING -m mark --mark 1 -j LOG --log-prefix "marked: "

ルールiproute2設定:

# cat 201 tunneled >> /etc/iproute2/rt_tables
# ip rule add fwmark 1 table tunneled
# ip route add default via 192.168.100.1 dev tun1 table tunneled

ログの小さなセクションに結果が表示されます。

Feb 17 19:11:35 nhopm kernel: marked: IN= OUT=eth0 SRC=192.168.82.2 DST=69.30.217.90 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=16734 DF PROTO=TCP SPT=34619 DPT=443 WINDOW=29200 RES=0x00 SYN URGP=0 MARK=0x1 
Feb 17 19:12:00 nhopm kernel: marked: IN= OUT=tun1 SRC=192.168.81.8 DST=69.30.217.90 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=62747 DF PROTO=TCP SPT=55349 DPT=443 WINDOW=14600 RES=0x00 SYN URGP=0 MARK=0x1 

ホストには2つのNIC(eth0192.168.81.8)があります。ここで、192.168.81.1はデフォルトゲートウェイ、eth1192.168.82.8は192.168.82.0/24のデフォルトゲートウェイとして機能します。この設定に問題はなく、期待どおりに機能します。トンネル tun0 の最後には 192.168.100.1 があります。

あまり詳しく説明せずに問題を説明するために、最も簡単なケースで範囲を絞り込もうとしましたが、問題を見つけるためにできるだけ多くの詳細を提供しました。コンテンツに役立つ内容がある場合は、コメントでお問い合わせください。幸いなことに、私はそれがどのように機能するかについての小さな部分を誤解しています。

解決策

上記の操作を実行する試みは、次のiptablesフローチャートに基づいています。 iptables.infoから

これは同じグループであるという事実を隠す。ルーティング決定FORWARD チェーンのパケットと同様に、OUTPUT チェーンのパケットには適用されません。

これを行うには、FORWARDチェーンの完了したタグをPREROUTINGチェーンの同様の項目と置き換える必要があります。

iptables -t mangle -A PREROUTING -p tcp --dport 443 ! -d 192.168.0.0/16 -j MARK --set-mark 1

とにかく、これは実際に私のニーズに適しています。

まだこれに関する文書が見つからなかったため、これを回答として含めませんでした。誰かが私に勝てない限り、文書を見つけたら答えを提供します。

ベストアンサー1

おすすめ記事