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에 강제 인터페이스를 핑할 때 ...다른 인터페이스는 정상적으로 작동한다는 메시지 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
옵션 명령을 통해 .