실행 중인 OpenVPN 클라이언트가 명령줄을 통해 터널링하는 원격 VPN 게이트웨이의 IP 주소를 얻을 수 있는 방법이 있습니까?
--remote
자세한 내용: OpenVPN이 원격 서버에 연결되어 있고 "remote"를 제공하는 .opvn 파일을 지정하거나 Ubuntu의 네트워크 관리자에 의해 옵션이 있는 명령줄을 통해 시작된다고 가정합니다 . 명령줄을 통해 원격 VPN 서버의 IP 주소를 얻는 방법은 무엇입니까?
경우에 따라 작동할 수 있는 해킹은 명령줄 인수 ps aux | grep openvpn
와 일치하는 정규식을 실행하는 것이지만 --remote
저는 좀 더 안정적인 것을 원합니다.
(중복일수도 있어요OpenVPN 터널 서버 IP를 안정적으로 확보, 하지만 이 문제에는 아직 어떤 활동도 접수되지 않았으며 의도가 동일하다고 100% 확신할 수 없습니다. )
배경: 저는 이 문제 자체에 관심이 있지만 이 문제를 해결하기 위한 다른 방법에 대한 제안도 환영합니다. iptables
VPN 터널을 통과하지 않는 모든 트래픽을 차단하고 싶습니다 . 이를 위해 나는 다른 규칙의 일부로 다음을 사용합니다.
iptables -I OUTPUT 1 -d $serverip -j ACCEPT
이는 서버의 로컬 IP(10.xx1 등)가 아닌 서버의 외부 IP여야 하는 것 같습니다.
답변1
.ovpn 파일 내부를 보는 것만으로는 충분하지 않은 경우 .ovpn 파일을 구문 분석하고 dns를 확인하고 해당 주소로 실행하는 데 필요한 모든 iptables 명령을 실행하는 작은 lua 스크립트를 작성할 수 있습니다. Lua에서는 이 작업을 수행할 필요가 없으며 원하는 스크립트 언어를 사용할 수 있습니다.
기본적으로 제공되는 명령줄 도구에 대해서는 예상하지 못했습니다. 당신은 당신 자신의 질문에 대답했지만 이것은 모든 VPN 클라이언트에 대한 openvpn xxxx.ovpn인 명령줄 매개 변수만 제공하므로 내 시스템에서도 작동하지 않습니다.
참고 사항: 이 기능이 모든 openvpn 클라이언트에서 안정적으로 작동하도록 하려면 .ovpn 파일 내에 프록시 서버를 지정하고 Nodejs와 같은 것을 사용하여 직접 빠른 프록시 서버를 구현할 수도 있습니다(Openvpn은 HTTP/1.0에 대해 TCP SOCKS5를 지원합니다). CONNECT 프록시 및 UDP) SOCKS5는 특히 UDP 부분에서 빠르게 구현하기가 어렵습니다. openvpn이 연결되면 안정적으로 IP 주소를 얻을 수 있으며, 원격 호스트에서 소켓을 열기 전에 iptables 명령을 실행할 수 있습니다.
그런데, 저는 매우 비슷한 문제가 있었고 결국 라우터 역할을 하는 IoT 장치를 구입하게 되었습니다. 비록 제가 구입한 장치(Banana Pi BPI R1)를 추천할 수는 없지만 이제 작동하고 제 역할을 합니다. 고통스럽습니다. 이 장치에 대한 더 나은 대안이 있을 수 있습니다.
내가 사용하는 "트릭"은 IoT 라우터에서 VPN Tun Tap 장치를 입력 또는 출력으로 사용하지 않는 한 모든 전달을 차단한다는 것입니다. 이는 VPN 클라이언트 자체가 출력/입력 체인의 영향만 받아 문제를 완전히 회피할 수 있기 때문에 작동합니다.
이것의 또 다른 장점은 유료 VPN 제공업체가 특정 시간에 내가 사용하는 장치 수를 알 수 없다는 것입니다(장치는 3개로 제한됩니다). VPN 공급자가 보는 것은 내 IoT 라우터에 트래픽이 많고 연중무휴로 연결되어 있다는 것뿐입니다.