내 시스템은 armbian 11.6을 실행 중입니다.
wlan0을 통해 인터넷에 연결되어 제대로 작동합니다. 또한 openvpn(tun0) 연결도 있습니다.
tun0을 사용해야 하는 몇 가지 프로그램을 제외하고 모든 트래픽이 wlan0을 통해 라우팅되기를 원합니다. VPN 서버가 제대로 실행되고 있으며 NAT 구성도 괜찮습니다.
내 armbian 시스템에는 다음과 같은 경로가 있습니다.
default via 192.168.10.1 dev wlan0 proto dhcp metric 600
default via 10.8.0.1 dev tun0 metric 900
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.52
169.254.0.0/16 dev wlan0 scope link metric 1000
192.168.10.0/24 dev wlan0 proto kernel scope link src 192.168.10.100 metric 600
이제 컬을 실행하는 데 문제가 발생합니다. 다음과 같이 작동합니다.
curl --interface tun0 https://api.ipify.org?format=json
이 시간 초과:
curl --interface 10.8.0.52 https://api.ipify.org?format=json
흥미로운 사실: IP 주소로 실행하고 tcpdump와 병렬로 모니터링할 때 소스 IP 10.8.0.52에 대한 아웃바운드 패킷이 wlan0을 통해 나가는 것을 볼 수 있습니다. 분명히 그것이 실패한 이유입니다.
소스 IP를 지정하는 기능이 있는 다른 애플리케이션에서도 동일한 동작이 관찰되었습니다.
이 문제를 어떻게 해결할 수 있습니까? 즉, IP가 속한 어댑터를 사용하도록 시스템에 지시할 수 있습니까?
또 다른 흥미로운 동작은 wlan0을 tun0보다 높은 메트릭으로 설정하면 문제가 반대 방향으로 발생한다는 것입니다.
답변1
경로는 (보통) 목적지에 있습니다. 서로 다른 메트릭을 가진 여러 기본 경로를 갖는 것은 의미가 없습니다. 소스 기반 정책 라우팅을 사용해야 합니다.
ip ro del default via 10.8.0.1
ip rule add from 10.8.0.52/32 table 10
ip route add default via 10.8.0.1 table 10
확인하다 man ip-rule
.