VPN 클라이언트가 "인트라넷"에 있는 서버에 액세스하도록 허용하는 방법을 이해하는 데 도움이 필요합니다.
ovh(중요한 경우)에 4개의 추가 IP가 있는 전용/물리적 서버가 하나 있습니다. 설치된 OS는 proxmox이고 두 개의 네트워크 장치가 있습니다(해당 유형은 'Linux 브리지'입니다). 하나는 서버의 공용 IP가 할당되어 있고(vmbr0), 다른 하나(vmbr1)는 IP 172.20.0.1과 넷마스크가 255.252.0.0입니다.
vmbr1만 할당된 가상 머신을 만들었습니다. 나는 이 기계들 사이에서 행복하게 핑을 보낼 수 있습니다. 또한 마치 내 집 라우터 뒤에 있는 것처럼 이 컴퓨터에서 인터넷에 액세스할 수 있습니다. 중요한 경우 172.20.0.2에는 dhcp 서버가 있고 172.20.0.3 및 172.20.0.4에는 두 개의 DNS 서버가 있습니다.
vmbr0과 vmbr1이 모두 할당된 또 다른 가상 머신을 만들었습니다. vmbr0에 추가 공용 IP 중 하나를 구성했으며 여기에 SSH를 통해 연결할 수 있습니다. 또한 openvpn을 설치하고 클라이언트가 VPN 서버를 통해 인터넷에 액세스할 수 있도록 구성했습니다. VPN 클라이언트는 10.8.0.0/24 네트워크에서 IP를 가져옵니다.
지금 하고 싶은 것은 172.20.0.0/14에서 ping/ssh/etc까지의 모든 서버를 10.8.0.0/24 네트워크에 있는 VPN 클라이언트에 허용하는 것입니다.
나는 openvpn 서버가 일부 경로를 클라이언트에 푸시하도록 해야 한다는 것을 알아냈습니다(클라이언트가 다른 네트워크에 대해 알 수 있도록).
나는 proxmox 호스트 자체에서 뭔가를 해야 한다고 확신합니다(172.20.0.0/14 네트워크에 대한 게이트웨이가 있기 때문에). 또한 openvpn 서버 자체에 몇 가지 iptable 규칙을 추가해야 한다고 생각합니다. 네트워크 간의 트래픽을 전달/가장하지만 정확히 어떤 규칙을 이해할 수 없습니다.
그래서 내 질문은: 이 설정에서 VPN 클라이언트가 가상 서버에 액세스할 수 있도록 하려면 어떻게 해야 합니까?
답변1
OpenVPN 호스트에 방화벽이 없으면 기본적으로 트래픽을 허용하므로 무시해도 됩니다.
내부 서브넷으로 향하는 트래픽이 VPN을 통해 라우팅되도록 하려면 클라이언트에 경로를 푸시해야 합니다. 이는 기본 경로(모든 트래픽이 클라이언트에서 VPN을 통해 전송되도록 함)이거나 내부 서브넷에 대한 특정 경로일 수 있습니다. VPN 구성에서 이를 푸시할 수 있음을 확인했습니다(인증서 기반 인증을 사용하는 경우).
OpenVPN 호스트에서 IP 전달을 활성화해야 합니다. sysctl
값을 1로 설정하는 데 사용합니다 . 다시 시작해도 이 값이 유지되도록 net.ipv4.conf.all.forwarding
파일을 추가합니다 ./etc/sysctl.d
또한 로컬 호스트에는 OpenVPN 서브넷에 액세스하는 방법을 알 수 있도록 경로가 필요합니다. 다음 중 하나를 수행할 수 있습니다.
OpenVPN 호스트에서 NAT를 사용하면 전달된 패킷이 내부 IP에서 오는 것처럼 보이도록 할 수 있습니다. 이는 10.8.0.0/24 서브넷의 존재를 숨기므로 다른 장치가 이에 대해 알 필요가 없지만 모든 VPN 클라이언트의 모든 트래픽이 단일 호스트에서 발생하는 것처럼 보입니다.
10.8.0.0/24로 향하는 트래픽이 OpenVPN 호스트로 전달되도록 경로를 설정합니다. 이는 각 VM 또는 호스트 시스템에 추가될 수 있습니다. 도구를 사용
route
하고 네트워크 인터페이스 선언에 명령을 추가하여 재부팅 후에도 지속되는지 확인하세요.