여러 라우팅 테이블을 갖춘 OpenVPN

여러 라우팅 테이블을 갖춘 OpenVPN

openvpn 클라이언트를 사용하고 있으며 기본 구성으로 기본 GW를 덮어씁니다. (서버의 리디렉션 게이트웨이)
내 Linux 클라이언트에는 2개의 라우팅 테이블이 있습니다. 1(기본 eth0), 100 = tun0은 up 스크립트에 의해 추가됩니다.
내가 필요한 것은 2개의 다른 라우팅 테이블을 사용하여 분할 라우팅을 갖는 것입니다.

openvpn 클라이언트 구성:

client
dev tun
proto udp
remote blea.com
auth-user-pass
persist-key
persist-tun
remote-cert-tls server
reneg-sec 0
keepalive 10 60
route-nopull
pull-filter ignore "ifconfig-ipv6"
script-security 2
up /etc/openvpn/route-up.sh
mute-replay-warnings
explicit-exit-notify 3
cipher AES-256-CBC
auth SHA512
tls-version-min 1.2

라우팅 스크립트:

if [ $(/bin/cat /etc/iproute2/rt_tables | /bin/grep $dev | /usr/bin/wc -l) -eq 0 ]; then
/bin/echo "100 tun0" >> /etc/iproute2/rt_tables

/bin/ip route add default via $route_vpn_gateway dev $dev table $dev

Route-nopull을 사용할 때 $route_vpn_gateway 환경 변수가 채워지지 않는 한 가지 문제가 있습니다.
Route-nopull을 비활성화하면 기본 라우팅 테이블의 기본 게이트웨이가 덮어쓰기되어 모든 트래픽이 터널을 통과하게 됩니다.
서버에 액세스할 수 없으므로 서버에서 아무것도 변경할 수 없습니다.
OpenVPN 서버가 제공하는 기본 GW는 동적이므로 이를 정적으로 설정할 수 없습니다.

이 문제를 해결하는 방법은 무엇입니까?

답변1

이를 수행하는 한 가지 방법은 route-noexec( 대신 route-nopull) 옵션을 사용하는 것입니다. 이렇게 하면 Route-* 환경 변수가 완전히 채워지지만 실제로 경로 테이블이 수정되지는 않습니다. 모든 경로 수정 사항은 사용자에게 그대로 남게 됩니다.Route-up.sh

관련 정보