パケットのパケットを表示するには、iptables
通常、ファイアウォールスクリプトに次の行を追加します。
iptables -t mangle -A POSTROUTING -p tcp -m multiport --dports 80,443 -j MARK --set-mark 2
このトピックはやや複雑であることを知っていますが、1つのルールに集中します。上記の内容を追加すると、/proc/net/nf_conntrack
ファイル内の特定の項目にフラグが設定されます。
ipv4 2 tcp 6 3706 ESTABLISHED ... mark=2
この規則の問題は、他の一致規則(ソースまたは宛先アドレスなど)を追加し、他のタグを設定すると、以前のタグがユーザーが設定したとおりに書き換えられることです。しかし、マーカーを「追加」する方法があります。したがって、1つのルールセットmark=2
と別のルールセットがある場合、mark=5
結果タグはmark=7
次のようになります。
私は以下に基づいて実際の例を持っています:ムワン3でも、よく理解できません。mangle
ツールを起動した後、テーブルがどのように見えるか、どのルールが追加されたかを知っています。
したがって、メカニズムを理解するには、到着するパケットに実際に何が起こるのかを知る必要があります。ただし、この例では表示規則が異なります。
2 つの WAN インターフェイスがあります。タグに応じて、パケットは別のルーティングテーブルに入ります。では、ポート443(ポート1000など)に送信されたパケットは実際にはどうなりますか?誰もがルールを分析するのに役立ちますか?
答え1
宛先 "-j MARK --set-mark 2" は、以前の値に関係なく、パケットにマーク 2 を設定します。タグが削除されないようにするには、-j ACCEPTを使用してチェーンのパケットパスを終了します。たとえば、
iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j ACCEPT
iptables -t mangle -A POSTROUTING -d 8.8.8.8 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -d 8.8.8.8 --dport 80 -j ACCEPT
# If you open a connection to 8.8.8.8:80, the mark will be 10
ただし、メインチェーン(POSTROUTINGなど)またはカスタムチェーンにある場合は注意が必要です。 ACCEPT はメインチェーンを終了し、RETURN は現在のチェーンを終了します。それはあなたのニーズによって異なります。
mwan3の例では、フィルタ、nat、rawテーブルがなく、tc設定がないと話すのは難しいです。
しかし、次のようになります。
- 「mwan3_rules」チェーンは、dport 80または443の新しい接続から「mwan3_policy_balanced」チェーンにパケットを送信します。
- "mwan3_policy_balanced"チェーンは、パケットの40%にフラグ200を設定し、他のパケットに100を設定します。
- 「mwan3_rules」チェーンは、dport 80または443を使用しない新しい接続のパケットを「mwan3_policy_wan_only」チェーンに送信します。
- "mwan3_policy_wan_only"チェーン設定フラグ100
- 100とマークされたパケットはケーブルを通過し、200とマークされたパケットはLTEを通過するようです。
したがって、http(s)トラフィックの40%はLTEを経由し、60%はケーブルを通過し、他のすべてのトラフィックはケーブルを通過します。
目標が2つのISPにわたって接続負荷分散を実行することである場合、mwan3ルールは読みにくいので、最初から独自のiptablesルールを作成する必要があります。
から始めることができますこれ質問。
頑張ってください!
バージョン:
これ文書状態:
--set-xmark value[/mask]
Zero out the bits given by mask and XOR value into the ctmark.
0x100マークがあり、xmarkを0x200/0xff00に設定しようとすると:
- ctmark でマスクによって提供されるビットをクリアします。 0000 0001 0000 0000 AND NOT 1111 1111 0000 0000 --> 0000 0000 0000 0000
- 値を ctmark に XOR します。
0x100マークがあり、xmarkを0x200/0xf000に設定しようとすると:
- ctmarkのマスクによって提供されるビットをクリアします:0000 0001 0000 0000 AND NOT 1111 0000 0000 0000
- 値を ctmark に XOR します。
0x100 マークがあり、xmark 0x100/0xf000 を設定します。
- ctmarkのマスクによって提供されるビットをクリアします:0000 0001 0000 0000 AND NOT 1111 0000 0000 0000
- 値を ctmark に XOR します。
0x100 マークがあり、xmark 0x100/0xff00 を設定します。
- ctmark でマスクによって提供されるビットをクリアします。 0000 0001 0000 0000 AND NOT 1111 1111 0000 0000 --> 0000 0000 0000 0000
- 値を ctmark に XOR します。
mwan3ファイルでは、状況は常に次のようになります。
- 0x0 マークがあり、xmark 0x??00/0xff00 を設定してみてください。
- ctmark でマスクによって提供されるビットをクリアします。 0000 0000 0000 0000 AND NOT 1111 1111 0000 0000 --> 0000 0000 0000 0000
- ctmarkの値をXORします:0000 0000 0000 0000
- このマスクとこれらの値を使用して、set-xmarkは単に古い値を置き換えます。
それではチェーンを見てみましょう。
- 事前ルーティングは mwan3_hook にジャンプします。
- mwan3_hook 復元 connmark to mark
- mwan3_hookはmwan3_ifacesに新しい接続(tag = 0x0)を送信します。
- mwan3_ifaces は mwan3_iface_wan に新しい接続を送信します。
- mwan3_iface_wanは、ソースアドレスがipsetリストmwan3_connectedにある場合、インターフェイスeth0の新しい接続にフラグ0xff00を設定します。
- mwan3_iface_wan は、タグ 0x100 をインターフェイス eth0 の他の新しい接続に設定します。
- mwan3_ifaces は mwan3_iface_lte に新しい接続を送信します。
- mwan3_iface_lteソースアドレスがipsetリストにあるときにインターフェイスwwanの新しい接続にフラグ0xff00を設定します。
- mwan3_iface_lte タグ 0x200 をインターフェイス wwan の他の新しい接続に設定
- 注:この時点で着信接続はすべてタグ付けされています。
- mwan3_hook は mwan3_connected に接続を送信します。
- 宛先アドレスが ipset リスト mwan3_connected にある場合、mwan3_connected はフラグ 0xff00 を設定します。
- mwan3_hook は mwan3_track に接続を送信します。
- mwan3_track 宛先 IP が ipset リスト mwan3_track_wan にある場合、接続に対してマーク 0xff00 が設定されます。パケットは32バイト長のicmpエコーです。
- mwan3_track宛先IPがipsetリストmwan3_track_lteにある場合、接続にマーク0xff00が設定され、データパケットは32バイト長のicmpエコーです。
- mwan3_hook は mwan3_rules に接続を送信します。
- mwan3_rulesは、内部的にmwan3_policy_balancedに新しいtcp / 80またはtcp / 443接続を送信します。
- mwan3_policy_balancedは、表示0x200を新しい接続の40%に設定します。
- mwan3_policy_balanced は、フラグ 0x100 を別の新しい接続に設定します。
- mwan3_hook復元マークをconnmarkに
- mwan3_hook はタグ 0xff00 を表示されない接続に設定します (内部的には icmp タイプ 8、tcp/80、または tcp/443 ではありません)。
- 事前ルーティングはfwmarkにジャンプしますが、チェーンは画面に表示されません。
- フォワードリカバリmss
- 出力はmwan3_hookにジャンプし、各ステップが繰り返されます。
最後に3つの状態があります。
- 0x100フラグ(256):WAN接続とインターネットへのhttp(s)接続の60%
- 0x200フラグ(512):LTEからの接続とインターネットへのhttp(s)接続の40%
- 0xff00タグ(65280):その他のトラフィック
IPルールがないため、次のように推測できます。
- 0x100 表示は wan ルーティングテーブルを通過します。
- 0x200 表示は LTE ルーティングテーブルを通過します。
- 0xff00は他のルーティングテーブルを通過します。