![OpenVPN 서버 뒤에 있는 서브넷을 ping할 수 없습니다.](https://rvso.com/image/1568464/OpenVPN%20%EC%84%9C%EB%B2%84%20%EB%92%A4%EC%97%90%20%EC%9E%88%EB%8A%94%20%EC%84%9C%EB%B8%8C%EB%84%B7%EC%9D%84%20ping%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내 인프라는 다음과 같습니다.
dns of mydomain.com:
vpn A 90.90.90.1
vpn A 90.90.90.2
client vpn config:
client
dev tun
proto udp
nobind
remote vpn.mydomain.com 1394
server1
net.ipv4.ip_forward = 1
iptables:
FORWARD defaults to ACCEPT
vpn config:
dev tun
topology subnet
port 1394
proto udp
server 10.10.1.0 255.255.255.0
push "route 10.90.90.0 255.255.255.0"
interfaces:
ifpub: 90.90.90.1/24
ifpriv: 10.90.90.1/24
ifvpn: 10.10.1.1/24
routes:
10.10.1.0/24 src 10.10.1.1 dev ifvpn
10.10.2.0/24 via 10.90.90.2 dev ifpriv
server2
net.ipv4.ip_forward = 1
iptables:
FORWARD defaults to ACCEPT
vpn config:
dev tun
topology subnet
port 1394
proto udp
server 10.10.2.0 255.255.255.0
push "route 10.90.90.0 255.255.255.0"
interfaces:
ifpub: 90.90.90.2/24
ifpriv: 10.90.90.2/24
ifvpn: 10.10.2.1/24
routes:
10.10.1.0/24 via 10.90.90.1 dev ifpriv
10.10.2.0/24 src 10.10.2.1 dev ifvpn
문제는 내 클라이언트에서 내가 연결된 OpenVPN 서버를 핑할 수 있지만 10.90.90.0/24 서브넷의 다른 서버는 핑할 수 없다는 것입니다.
tcpdump
ICMP 요청이 동일한 서버에서 다른 서버 ifvpn
로 이동 ifpriv
하지만 ICMP 요청 패킷은 더 이상 진행되지 않음을 보여줍니다.
iptables에 로깅을 추가하면 ICMP 요청 패킷이 삭제되지 않고 POSTROUTING 상태로 전환되지만 패킷이 목적지에 도달하지 않았으며 여기서 무슨 일이 일어나는지 알 수 없으며 해결책이 없습니다.
내 패킷을 가장할 수 있다는 것을 알고 있었지만 권장되지 않기 때문에 그렇게 하고 싶지 않습니다(https://community.openvpn.net/openvpn/wiki/NatHack), 아니면 이것이 나의 마지막 해결책이 될 것입니다.
답변1
원격 서버가 "서브넷을 노출"하는 경우 OpenVPN 설명서에 자세히 설명된 대로 지시어 ccd
가 있는 파일이 포함된 디렉터리가 있어야 합니다 . 또한 클라이언트에 지시문을 푸시 iroute
해야 합니다 .route
모든 것이 올바르게 작동하는 경우:
- 클라이언트가 핑을 보냅니다.
- 클라이언트의 OS에는 이 트래픽을 로컬 OpenVPN 서버로 보내는 라우팅 명령이 있습니다.
- 정보
ccd
는 OpenVPN을 알려줍니다연결된 원격배달을 위해 트래픽을 보냅니다. - 트래픽은 이 원격지에서 발생하여 목적지로 진행됩니다.
- 왕복 여행의 경우 원격 시스템이 다음을 수행해야 합니다.또한트래픽을 다시 보내는 운영 체제 경로가 있습니다.그것은OpenVPN 서버.