2つのインターフェースがあります。eth0
各wlan0
インターフェイスは異なるルータに接続されています。対応するネットワーク仕様は次のとおりです。
eth0:
ip: 192.168.1.7
Gateway: 192.168.1.1
Submask: 255.255.255.0
wlan0:
ip: 192.168.2.21
Gateway: 192.168.2.1
Submask: 255.255.255.0
次のようにルーティングを設定します。
ip route add table eth0 to 192.168.1.0/24 dev eth0 scope link
ip route add table eth0 default via 192.168.1.1 dev eth0
ip rule add from 192.168.1.7 table eth0
その値を使用するwlan0の場合も同様です。したがって、パス出力は次のようになります。
ip rule
0: from all lookup local
32764: from 192.168.2.21 lookup wlan0
32765: from 192.168.1.7 lookup eth0
32766: from all lookup main
32767: from all lookup default
ip r s
default via 192.168.1.1 dev eth0 proto static
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.7 metric 1
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.21 metric 9
ip r s table eth0
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 scope link
ip r s table wlan0
default via 192.168.2.1 dev wlan0
192.168.2.0/24 dev wlan0 scope link
そしてまた変更されsysctl "net.ipv4.conf.all.rp_filter=0"
ましたsysctl -w "net.ipv4.ip_forward=1"
。 (実際にはこれが必要だとは思わないが、ip_forward
万が一の場合に備えて変更しました。)
しかし、奇妙なことは、強制インターフェースをGoogleにpingすると、他のインターフェースは正常に機能するというメッセージがwlan0
表示されることです。Destination Host Unreachable
ping -I wlan0 google.es
PING google.es (173.194.45.183) from 192.168.2.21 wlan0: 56(84) bytes of data.
From 192.168.2.21 icmp_seq=1 Destination Host Unreachable
From 192.168.2.21 icmp_seq=2 Destination Host Unreachable
From 192.168.2.21 icmp_seq=3 Destination Host Unreachable
From 192.168.2.21 icmp_seq=4 Destination Host Unreachable
ping -I eth0 google.es
PING google.es (173.194.45.191) from 192.168.1.7 eth0: 56(84) bytes of data.
64 bytes from mad06s09-in-f31.1e100.net (173.194.45.191): icmp_seq=1 ttl=56 time=21.5 ms
64 bytes from mad06s09-in-f31.1e100.net (173.194.45.191): icmp_seq=2 ttl=55 time=21.7 ms
64 bytes from mad06s09-in-f31.1e100.net (173.194.45.191): icmp_seq=3 ttl=56 time=24.6 ms
64 bytes from mad06s09-in-f31.1e100.net (173.194.45.191): icmp_seq=4 ttl=55 time=31.1 ms
答え1
この強制インターフェイスバインディングの場合、ソースアドレスをどのように決定するのかわかりません。デバイスからソースアドレスを取得しない場合、問題はセレクタがip rule
一致しないため、パケットがmain
ルーティングテーブルに移動することです。
default via 192.168.1.1 dev eth0 proto static
これは機能しませんwlan0
。
私はこれを試すことをお勧めします:
ip rule add from 192.168.1.7 table eth0
ip rule add oif eth0 table eth0
ip rule add from 192.168.2.21 table wlan0
ip rule add oif wlan0 table wlan0
延長
ip route add table eth0
ip route add table wlan0
src
オプションコマンドを介して 。