게이트웨이가 설정되지 않아 OpenVPN이 작동하지 않습니다

게이트웨이가 설정되지 않아 OpenVPN이 작동하지 않습니다

Debian 시스템에서 openVPN 서버에 연결하는 데 문제가 있습니다.

인터페이스가 추가되고 여기에 10.130.xx IP가 할당되기 때문에 연결을 설정할 수 있지만 VPN을 통해 트래픽을 얻을 수는 없습니다. 모든 트래픽은 여전히 ​​원래 공용 IP 주소를 통과합니다.

root@vps2:~# route -n  
Kernel IP routing table  
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
92.222.32.0     0.0.0.0         255.255.255.0   U     0      0        0 venet0  
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 venet0  
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo  
92.222.32.42  
root@vps2:~# service openvpn start  
[ ok ] Starting virtual private network daemon: myvpn.  
root@vps2:~# route -n  
Kernel IP routing table  
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
10.130.3.137    0.0.0.0         255.255.255.255 UH    0      0        0 tun0  
92.222.32.0     0.0.0.0         255.255.255.0   U     0      0        0 venet0  
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 venet0  
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo  
92.222.32.42  
root@vps2:~#   

내 시스템 로그에서 참고: 기본 게이트웨이를 리디렉션할 수 없습니다 - 시스템에서 현재 기본 게이트웨이를 읽을 수 없습니다라는 메시지를 볼 수 있습니다. 검색을 해보니 기본 게이트웨이가 명시적으로 설정되지 않았기 때문이라는 것을 알게 되었습니다. 원격 VPN이 명시적으로 설정된 기본 게이트웨이보다 더 많은 것을 찾으려는 일종의 클라이언트 스크립트를 사용하고 있는 것 같습니다.

기본 게이트웨이를 명시적으로 설정하기 위해 두 가지 방법을 시도했습니다. 그리고둘 다 유효합니다!

  • 먼저 원래 공용 IP 주소를 기본 게이트웨이로 설정해 보았더니 다음과 같이 작동했습니다.

    route add default gw 92.222.32.42  
    root@vps2:~# route add default gw 92.222.32.42  
    root@vps2:~# route -n  
    Kernel IP routing table  
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
    92.222.32.0     0.0.0.0         255.255.255.0   U     0      0        0 venet0  
    0.0.0.0         92.222.32.42    0.0.0.0         UG    0      0        0 venet0  
    0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 venet0  
    root@vps2:~# service openvpn start  
    [ ok ] Starting virtual private network daemon: myvpn.  
    root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo  
    217.23.15.239  
    root@vps2:~#   
    
  • 그런데 원래 공용 IP를 기본 게이트웨이로 사용해야 하는 이유는 무엇입니까? 나는 모른다. 그래서 무작위 추적 경로의 첫 번째 홉을 기본 게이트웨이로 설정해 보았습니다. 이것은 또한 작동합니다:

    root@vps2:~# traceroute foo.com  
    traceroute to foo.com (121.232.122.233), 30 hops max, 60 byte packets  
     1  49.ip-92-222-50.eu (92.222.50.49)  0.039 ms  0.011 ms  0.012 ms  
     2  [......... I stop the traceroute when I see the first hop]  
     ^C  
    root@vps2:~# route add default gw 92.222.50.49
    root@vps2:~# route -n  
    Kernel IP routing table  
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
    92.222.32.0     0.0.0.0         255.255.255.0   U     0      0        0 venet0  
    0.0.0.0         92.222.50.49    0.0.0.0         UG    0      0        0 venet0  
    0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 venet0  
    root@vps2:~# service openvpn start  
    [ ok ] Starting virtual private network daemon: myvpn.  
    root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo  
    217.23.15.239  
    root@vps2:~#   
    

    오랫동안 살다! 나는 혼자서 여기까지 왔습니다.

이제 VPN에 연결하면 경로가 자동으로 변경됩니다. 괜찮았지만 이제 원래 공용 IP 주소를 통한 모든 연결이 끊어졌고 SSH 연결이 끊어졌습니다. 웹 서버는 더 이상 액세스할 수 없으며, 심지어 제가 제공하는 다른 서비스에도 액세스할 수 없습니다. 나는 이것이 들어오는 모든 연결이 이제 VPN을 통해 라우팅되기 때문에 이것이라고 추측합니다. 동일한 IP로부터 응답을 얻기 위해 원래 공용 IP를 통해 들어오는 모든 연결을 확인하고 싶습니다. VPN은 내 서버에서 외부 세계로의 연결에만 사용됩니다. 이 부분은 아직 파악하지 못했습니다.

VPN에 연결한 후 내 경로는 다음과 같습니다.

root@vps2:~# route -n  
Kernel IP routing table  
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
10.130.0.1      10.130.3.73     255.255.255.255 UGH   0      0        0 tun0  
10.130.3.73     0.0.0.0         255.255.255.255 UH    0      0        0 tun0  
217.23.15.239   92.222.32.42    255.255.255.255 UGH   0      0        0 venet0  
92.222.32.0     0.0.0.0         255.255.255.0   U     0      0        0 venet0  
0.0.0.0         10.130.3.73     128.0.0.0       UG    0      0        0 tun0  
128.0.0.0       10.130.3.73     128.0.0.0       UG    0      0        0 tun0  
0.0.0.0         92.222.32.42    0.0.0.0         UG    0      0        0 venet0  
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 venet0  
root@vps2:~#   

그래서 내 질문은 다음과 같습니다

  • 두 가지 방법 모두 작동하므로 기본 게이트웨이로 무엇을 사용해야 합니까? 내 원래 공개 IP 또는 추적 경로의 첫 번째 홉이 있습니까? 아니면 완전히 다른 것일까요?

  • 시작 시 게이트웨이가 자동으로 설정되도록 이를 자동화하려면 어떻게 해야 합니까? 즉, 시작 시 서버는 기본 게이트웨이가 설정되어 있는지 확인하고 그렇지 않은 경우 내 공용 IP 또는 추적 경로의 첫 번째 홉을 기본 게이트웨이로 설정합니다.

  • 마침내 openVPN에 연결한 후 원래 공용 IP 주소를 통한 연결이 끊어지는 것을 방지하면서도 나가는 모든 연결은 여전히 ​​VPN을 사용하도록 하려면 어떻게 해야 합니까?

답변1

처음부터 시작하여 순서대로 문제를 해결하세요.

  1. 연결을 설정할 수 없습니다.

    연결이 설정되고 IP를 얻을 수 있지만 기본 게이트웨이가 설정되지 않았기 때문에 VPN을 통해 트래픽을 얻을 수 없습니다 [...]

    연결의 원격 측에 ping을 실행할 수 없다면 기본 경로를 변경하는 것보다 더 중요한 문제가 있는 것입니다. 잠재적인 라우팅 문제를 살펴보기 전에 원격 측에 ping을 보낼 수 있는지 확인하세요. 클라이언트 구성 파일의 대략적인 내용조차 포함하지 않았기 때문에 구체적인 명령을 드릴 수 없습니다.

  2. 기본 게이트웨이를 변경하는 방법은 무엇입니까?

    기본 게이트웨이를 직접 변경하지 마십시오. VPN 연결을 통해 모든 트래픽을 라우팅하려면 다음을 사용하십시오.redirect-gateway def1구성 매개변수OpenVPN HOWTO에 설명된 대로입니다.

  3. 부팅 시 VPN을 시작하는 방법은 무엇입니까?

    이것은 또한OpenVPN HOWTO에 설명되어 있습니다.적절한 구성 파일을 생성하고 /etc/openvpnDebian 파생 시스템에서 편집하여 /etc/default/openvpn자동 시작을 활성화합니다.

  4. 다른 인터넷 연결이 끊어지지 않는 방법

    마침내 openVPN에 연결되면 기본 게이트웨이를 openVPN을 사용하도록 변경하세요. 그러나 기존 연결(예: SSH 연결)이 끊어지고 더 이상 인터넷을 통해 컴퓨터에 액세스할 수 없습니다. 이 행동을 멈출 수 있나요?

    모든 트래픽을 VPN을 통해 라우팅하려는 경우 일부 트래픽을 인터넷을 통해 라우팅하도록 선택할 수는 없습니다. VPN을 통해 "모든" 트래픽을 라우팅하는 기준을 다시 고려해 볼 수 있습니다. 예를 들어 "HTTP/HTTPS 트래픽만", "SSH를 제외한 모든 트래픽"이 될 수 있나요?

답변2

귀하의 경로로 venet인해 OpenVZ와 같은 것을 실행하고 있다고 생각됩니까?

그렇다면 하이퍼바이저에 tun 모듈을 로드하고 게스트가 이를 사용할 수 있도록 허용해야 할 수도 있습니다. OpenVZ를 사용한다고 가정하면 다음과 같습니다.

vz# modprobe tun && echo tun >>/etc/modules
vz# vzctl set $CTID --devnodes net/tun:rw --capability net_admin:on --save

관련 정보