GNU/Linux >> Linux の 問題 >  >> Linux

着信と同じインターフェイスで応答しますか?

echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> table isp2 prio 1
ip route add default via <gateway_IP> dev <interface> table isp2

上記では、ipfilter によるパケットのマーキングは必要ありません。発信 (応答) パケットには、2 番目のインターフェイスに接続するために最初に使用された IP アドレスが発信パケットの送信元 (送信元) アドレスとして含まれるため、これが機能します。


次のコマンドは、eth1 を介して代替ルーティング テーブルを作成します。 マーク 1 を持つパケット (localhost へのパケットを除く)。 ip コマンドは iproute2 スイートからのものです (Ubuntu:iproute インストール iproute http://bit.ly/software-small, iproute-doc インストール iproute-doc http://bit.ly/software-small)。

ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
ip route add 0.0.0.0/0 table 1 dev eth1

ジョブの残りの半分は、マーク 1 を取得する必要があるパケットを認識することです。次に iptables -t mangle -A OUTPUT … -j MARK --set-mark 1 を使用します これらのパケットに対して、ルーティング テーブル 1 を介してルーティングされるようにします。次のようにする必要があると思います (1.2.3.4 を非デフォルト ルート インターフェイスのアドレスに置き換えます):

iptables -t mangle -A OUTPUT -m conntrack --ctorigdst 1.2.3.4 -j MARK --set-mark 1

これで十分かどうかはわかりませんが、着信パケットを追跡するように conntrack モジュールに指示する別のルールが必要になるかもしれません。


Peter が提案した解決策では、ローカルで生成されたパケットに問題がありました。次の方法で解決できることがわかりました:

echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> table isp2 priority 900
ip rule add from dev <interface> table isp2 priority 1000
ip route add default via <gateway_IP> dev <interface> table isp2
ip route add <interface_prefix> dev <interface> proto static scope link src <interface_IP> table isp2

注: 上記の 4 行目で構文の問題が発生する可能性があります。このような場合、4 番目のコマンドの構文は次のようになります:

ip rule add iif <interface> table isp2 priority 1000

Linux
  1. Linux –着信と同じインターフェースで応答しますか?

  2. ScpへのSftpインターフェース?

  3. クラウドネットワークインターフェイスをクラウドサーバーに追加します

  1. MySQLでテーブルを削除する

  2. Linux でインターフェイスの IP アドレスを取得する

  3. Linux で特定のインターフェイスを介してマルチキャスト パケットを送信する方法

  1. Ifconfig:ネットワーク インターフェイスを構成する 7 つの例

  2. HTML テーブルからのデータの抽出

  3. 任意の VLAN インターフェイス名