내 서버에 OpenVPN이 설치되어 있고 git과 웹 서버도 실행 중입니다. 설치를 시작하기 전에 처음에는 VPN 클라이언트가 특정 웹 사이트에 액세스하고 git의 SSH에만 액세스하도록 허용해야 한다고 생각했습니다. VPS의 로컬 IP인 10.254.1.0/24에서만 포트 접속을 허용할 줄 알았는데, VPN의 IP가 아닌 실제 내 IP로 패킷이 전달되는 것 같았다. tun 인터페이스에서 사전 라우팅을 위한 현재 규칙(저는 UFW를 사용하고 있으며 이는 ufw before.rules에 있는 iptables 규칙의 일부입니다):
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.254.1.0/24 -o eth0 -j MASQUERADE
COMMIT
VPN을 통해 전송되는 패킷에 클라이언트의 실제 IP가 할당되는 이유를 잘 모르겠습니다. 오히려 이 패킷이 VPN 네트워크에서 전송될 것으로 예상합니다. 저는 이 문제에 대한 해결책을 생각하고 있는데 유일한 아이디어는 두 번째 서버에 OpenVPN을 설치하고 거기에서 연결하는 것입니다. 하지만 제가 이 질문을 게시하는 이유는 이미 OpenVPN이 설치되어 있는 현재 서버에서 이 작업을 수행하는 것을 선호하기 때문입니다. 어떤 제안이라도 환영합니다.
답변1
나는 귀하가 공개 주소를 통해 VPN 서버에 액세스하려고 하며 이 연결이 터널을 통과할 것으로 예상한다고 가정합니다 .
이런 일이 발생하지 않습니다. 클라이언트는 터널을 설정하고 유지하기 위해 공용 네트워크를 통해 VPN 서버에 연결해야 합니다.
여러 가지 옵션이 있는데, 그 중 더 간단한 것은 Dnsmasq를 사용하여 분할-수평 DNS를 설정하는 것 같습니다.
- 서버에 Dnsmasq 설치
/etc/hosts
서버 이름을 VPN 주소로 가리키는 항목을 설정하십시오.DNS 8.8.8.8
고객을 밀어붙이는 것 보다DNS 10.254.1.1
이렇게 하면 클라이언트가 VPN에 연결할 때 내부적으로 서버 이름을 확인하게 됩니다.
서버 자체가 자신의 이름을 공개 주소로 계속 확인하도록 하려면 대신 Dnsmasq의 추가 호스트 파일을 사용하세요 /etc/hosts
.
*: 가정이 틀렸다면 전체 답변이 소용없으니 꼭 말씀해주세요 :-)