두 개의 서로 다른 네트워크 인터페이스(이더넷과 WiFi)를 통해 연결된 두 개의 인터넷 연결이 있습니다. 구성된 IP 주소는 각각 192.168.1.10 및 192.168.2.5입니다. ip route get 8.8.8.8
시스템을 사용할 때 메트릭이 가장 낮은 기본 게이트웨이(이더넷 경로)가 사용됩니다. 하지만 이렇게 하면 ip route get from 192.168.2.5 8.8.8.8
시스템은 여전히 Wi-Fi 게이트웨이 대신 이더넷 게이트웨이를 사용하려고 합니다.
8.8.8.8 from 192.168.2.5 via 192.168.1.1 dev eno1 uid 1000
왜 이런 일이 발생합니까?
내 라우팅 테이블:
default via 192.168.1.1 dev eno1 proto dhcp src 192.168.1.10 metric 100
default via 192.168.2.1 dev wlan0 proto dhcp src 192.168.2.5 metric 600
<subnet routes>
답변1
내 생각에 당신이 원하는 것은 "소스 기반 라우팅"을 설정하는 것입니다. 일반적으로 라우팅은 대상 기반입니다.
ip
이를 위해서는 다음을 생성하여 고급 기능을 활용해야 합니다.두번째라우팅 테이블을 작성하고 테이블을 사용할 시기를 시스템에 알려줍니다.
/etc/iproute2/rt_tables
따라서 먼저 다음 내용 으로 끝에 줄을 추가하십시오.
100 wifiroute
이제 다음 명령으로 이 테이블을 사용할 수 있습니다.
ip rule add from 192.168.2.5 table wifiroute
테이블에 마지막으로 추가된 기본 경로
ip route add default via 192.168.2.1 dev wlan0 table wifiroute
물론 이 두 ip
명령은 재부팅 시 손실되므로 이 명령이 부팅 순서의 일부인지 확인해야 합니다.
이제 이것을 테스트할 수 있습니다.traceroute
traceroute www.google.com
traceroute www.google.com -s 192.168.2.5
두 번째 주소는 소스 주소를 설정하고 있으므로 wlan0을 통해 나가야 합니다.
ip route show table wifiroute
;을 사용하여 라우팅 테이블을 볼 수 있습니다. 다음 명령을 사용하면 모든 테이블의 모든 경로를 볼 수 있습니다.ip route show table all
답변2
정의에 따르면 유효한 기본 경로는 하나만 가질 수 있습니다. 이는 라우팅 테이블(따라서 이름)에 특정 항목이 없는 모든 트래픽이 사용하는 기본 경로입니다.
경로는 목적지를 기준으로 정의됩니다. 모든 호스트의 IP 주소를 트래픽 소스로 지정할 수 있지만 대상에 도달하는 방법을 결정하기 위해 모두 동일한 라우팅 테이블을 사용합니다.
실제로 다른 네임스페이스와 라우팅 테이블을 가질 수 있으므로 이는 전적으로 사실이 아니지만 이는 이 답변을 넘어서는 복잡합니다.