
노트
이 질문은 원래 OpenVPN이 기본 게이트웨이가 없으면 --redirect-gateway local
또는를 지정하더라도 기본 게이트웨이를 설정하지 않는 것에 관한 것입니다 --redirect-gateway def1
.2.4.1 이후, VPN을 엽니다하다이 옵션을 사용하면 기본 게이트웨이가 이미 존재하는지 여부에 관계없이 설정되므로 해당 버전을 사용하는 경우 더 이상 사용되지 않습니다.
Ubuntu Zesty의 OpenVPN 버전은 2.4.0이며 이러한 변경 사항이 없습니다. 하지만 Artful 버전은 Zesty에 문제없이 설치됩니다.
Ubuntu 14.04.5에서 네트워크 네임스페이스를 만들었으며 그 안에서 VPN을 실행할 계획입니다(OpenVPN 2.3.2 및 구성 파일 사용). VPN이 실행될 때까지 트래픽이 네임스페이스 외부로 라우팅될 수 없다는 것이 아이디어입니다.
저는 기본 경로를 생성하지 않고 VPN 서버 IP 주소를 화이트리스트에 추가하여 이를 수행했습니다. 내 라우팅 테이블은 다음과 같습니다.
# ip netns exec testns ip route add A.B.C.D/32 via 10.200.200.1 dev veth1
# ip netns exec testns ip route show
10.200.200.0/24 dev veth1 proto kernel scope link src 10.200.200.2
A.B.C.D via 10.200.200.1 dev veth1
참고로 이는 10.200.200.1
가상 인터페이스( )의 반대쪽 주소입니다. 루트 네임스페이스의 규칙과 IP 전달을 통해 라우팅이 존재할 때 네임스페이스 안팎으로 트래픽이 흐르도록 허용하는 것을 확인했습니다. VPN 서버 주소입니다.veth0
veth1
10.200.200.2
iptables
testns
A.B.C.D
VPN을 시작하기 위해 ip netns exec testns openvpn abcd.ovpn
구성 파일에는 pull
지시문이 포함되어 있으며 push
서버의 ed 구성에는 다음이 포함되어 있습니다.
PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option[...]
그러나 잠시 후 나는 다음과 같은 사실을 보았습니다.
NOTE: unable to redirect default gateway -- Cannot read current default gateway from system
따라서 내 네임스페이스에는 기본 경로가 설정되어 있지 않습니다 testns
.
매뉴얼에 따르면,redirect-gateway def1
아니요기본 경로를 바꾸려고 시도했지만 두 개의 새로운 경로 0.0.0.0/1
와 128.0.0.0/1
. 기본 경로 없이 이러한 경로가 생성되지 않도록 하려면 어떻게 해야 합니까? 기본 경로가 처음에 존재하지 않는 경우 OpenVPN이 자동으로 VPN을 통해 모든 트래픽을 라우팅하도록 하려면 어떻게 해야 합니까?
답변1
매뉴얼에 따르면 리디렉션 게이트웨이 def1은 기본 경로를 대체하려고 시도하지 않고 단지 두 개의 새로운 경로 0.0.0.0/1 및 128.0.0.0/1을 생성합니다. 기본 경로 없이 이러한 경로가 생성되지 않도록 하려면 어떻게 해야 합니까?
OpenVPN이 기본 게이트웨이만 재정의하는 경우 더 이상 원래 게이트웨이를 통해 피어 엔드포인트에 연결할 수 없습니다. 따라서 가장 먼저 하는 일은 기본 게이트웨이를 살펴보고 피어 엔드포인트에 대해 해당 게이트웨이를 통해 명시적인 호스트 경로를 설정하는 것입니다.
OpenVPN의 매뉴얼 페이지는 이에 대해 매우 명확합니다.
--게이트웨이 플래그 리디렉션...
VPN을 통해 나가는 모든 IP 트래픽을 리디렉션하는 라우팅 명령을 자동으로 실행합니다. 이것은 클라이언트 옵션입니다.
이 옵션은 다음 세 단계를 수행합니다.
(1) --remote 주소에 대한 고정 경로를 생성하여 기존 기본 게이트웨이로 전달합니다. 이는 (3) 라우팅 루프가 생성되지 않도록 수행됩니다.
(2) 기본 게이트웨이 경로를 삭제합니다.
(3) 새 기본 게이트웨이를 VPN 엔드포인트 주소로 설정합니다(--route-gateway 또는 --dev tun이 지정된 경우 --ifconfig의 두 번째 인수에서).
터널이 철거되면 위의 모든 단계를 취소하고 원래 기본 경로를 복원합니다.
그럼 네가 물어봐
기본 경로가 처음에 존재하지 않는 경우 OpenVPN이 자동으로 VPN을 통해 모든 트래픽을 라우팅하도록 하려면 어떻게 해야 합니까?
OpenVPN 클라이언트에는 피어 엔드포인트(예: 서버)에 도달하기 위한 경로(어딘가)가 있어야 합니다. 따라서 경로가 무엇이든 위의 세 가지 작업을 스크립트에 구현해야 합니다 --up
. 물론 이를 스크립트로 작성해야 합니다.
답변2
두 가지 솔루션:
- 가짜 기본 게이트웨이(예: 127.0.0.1)를 설정하고 OpenVPN이 이를 무시하도록 허용합니다.
- 실행 후 스크립트를 사용하여 IP 경로를 통해 게이트웨이 설정