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
처음부터 시작하여 순서대로 문제를 해결하세요.
연결을 설정할 수 없습니다.
연결이 설정되고 IP를 얻을 수 있지만 기본 게이트웨이가 설정되지 않았기 때문에 VPN을 통해 트래픽을 얻을 수 없습니다 [...]
연결의 원격 측에 ping을 실행할 수 없다면 기본 경로를 변경하는 것보다 더 중요한 문제가 있는 것입니다. 잠재적인 라우팅 문제를 살펴보기 전에 원격 측에 ping을 보낼 수 있는지 확인하세요. 클라이언트 구성 파일의 대략적인 내용조차 포함하지 않았기 때문에 구체적인 명령을 드릴 수 없습니다.
기본 게이트웨이를 변경하는 방법은 무엇입니까?
기본 게이트웨이를 직접 변경하지 마십시오. VPN 연결을 통해 모든 트래픽을 라우팅하려면 다음을 사용하십시오.
redirect-gateway def1
구성 매개변수OpenVPN HOWTO에 설명된 대로입니다.부팅 시 VPN을 시작하는 방법은 무엇입니까?
이것은 또한OpenVPN HOWTO에 설명되어 있습니다.적절한 구성 파일을 생성하고
/etc/openvpn
Debian 파생 시스템에서 편집하여/etc/default/openvpn
자동 시작을 활성화합니다.다른 인터넷 연결이 끊어지지 않는 방법
마침내 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