특정 하드웨어 인터페이스를 통해 모든 VPN 트래픽을 라우팅하는 방법은 무엇입니까?

특정 하드웨어 인터페이스를 통해 모든 VPN 트래픽을 라우팅하는 방법은 무엇입니까?

두 개의 eth 인터페이스와 하나의 wlan 인터페이스가 있는 컴퓨터가 있습니다. VPN(openvpn)에도 연결되어 있어서 tun0 인터페이스도 가지고 있습니다. 이제 모든 VPN 트래픽이 이더넷이 아닌 WLAN 인터페이스를 사용하여 전송되는지 확인하고 싶습니다. 기본적으로 실행에서 볼 수 있듯이 eth1을 통해 전송됩니다 iftop. 내 라우팅 테이블은 다음과 같습니다.

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         Teltonika.lan   0.0.0.0         UG    100    0        0 eth1
default         192.168.222.1   0.0.0.0         UG    600    0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 eth0
172.89.0.0      *               255.255.255.0   U     0      0        0 tun0
192.0.2.1       192.168.222.1   255.255.255.255 UGH   600    0        0 wlan0
192.168.0.0     *               255.255.0.0     U     100    0        0 eth1
192.168.3.0     *               255.255.255.0   U     100    0        0 eth0
192.168.222.0   *               255.255.255.0   U     600    0        0 wlan0

답변1

ip ruleLinux에서는 및 명령을 사용하여 라우팅 규칙을 조정할 수 있습니다 ip route. 후자의 명령은 route이 명령과 동등한 상위 수준 명령입니다.

귀하의 경우 wlan0인터페이스의 기본 게이트웨이가 존재하는 유일한(또는 선호하는) 기본 게이트웨이인 별도의 라우팅 테이블을 사용한 다음 tun0해당 테이블에서 들어오는 모든 트래픽을 명시하는 라우팅 규칙을 설정하여 원하는 동작을 얻을 수 있습니다. 인터페이스 이 별도의 라우팅 테이블이 사용됩니다.

예를 들어 다음 두 명령을 사용하여 얻을 수 있습니다.

ip route add default via 192.168.222.1 table 100  # <-- 100 is an arbitrary number for the separate routing table
ip rule add iif tun0 table 100

이를 지우려면 다음을 사용하십시오.

ip rule del iif tun0 table 100
ip route flush table 100

VPN을 설정한 후 실시간으로 명령을 테스트하고 모든 것이 예상대로 작동하는지 확인할 수 있습니다.

openvpn그런 다음 필요할 때 이러한 명령(또는 전체 설정에 가장 적합한 동등한 명령)을 실행할 수 있습니다 . 이를 수행하는 가장 쉬운 방법은 이러한 명령을 (별도로) 두 개의 스크립트에 넣고 OpenVPN route-uproute-pre-down후크를 통해 호출하는 것입니다.

openvpn실제로 OpenVPN을 사용하는 방법에 따라 명령줄에서 지정된 --route-up script-that-adjusts-routing.sh--route-pre-down script-that-undoes-routing.sh(그리고 가능하다면)을 실행하거나 이러한 구성을 터널의 --script-security 2OpenVPN 파일 에 추가 해야 합니다 ..conf

route-up이미 스크립트가 있는 경우 route-pre-down기존 스크립트에 조정 명령을 추가해야 하며, 해당 스크립트의 기능에 따라 추가적인 주의가 필요할 수 있습니다.

관련 정보