OpenVPN 서버 뒤에 있는 서브넷을 ping할 수 없습니다.

OpenVPN 서버 뒤에 있는 서브넷을 ping할 수 없습니다.

내 인프라는 다음과 같습니다.

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 서브넷의 다른 서버는 핑할 수 없다는 것입니다.

tcpdumpICMP 요청이 동일한 서버에서 다른 서버 ifvpn로 이동 ifpriv하지만 ICMP 요청 패킷은 더 이상 진행되지 않음을 보여줍니다.

iptables에 로깅을 추가하면 ICMP 요청 패킷이 삭제되지 않고 POSTROUTING 상태로 전환되지만 패킷이 목적지에 도달하지 않았으며 여기서 무슨 일이 일어나는지 알 수 없으며 해결책이 없습니다.

내 패킷을 가장할 수 있다는 것을 알고 있었지만 권장되지 않기 때문에 그렇게 하고 싶지 않습니다(https://community.openvpn.net/openvpn/wiki/NatHack), 아니면 이것이 나의 마지막 해결책이 될 것입니다.

답변1

원격 서버가 "서브넷을 노출"하는 경우 OpenVPN 설명서에 자세히 설명된 대로 지시어 ccd가 있는 파일이 포함된 디렉터리가 있어야 합니다 . 또한 클라이언트에 지시문을 푸시 iroute해야 합니다 .route

모든 것이 올바르게 작동하는 경우:

  • 클라이언트가 핑을 보냅니다.
  • 클라이언트의 OS에는 이 트래픽을 로컬 OpenVPN 서버로 보내는 라우팅 명령이 있습니다.
  • 정보 ccd는 OpenVPN을 알려줍니다연결된 원격배달을 위해 트래픽을 보냅니다.
  • 트래픽은 이 원격지에서 발생하여 목적지로 진행됩니다.
  • 왕복 여행의 경우 원격 시스템이 다음을 수행해야 합니다.또한트래픽을 다시 보내는 운영 체제 경로가 있습니다.그것은OpenVPN 서버.

관련 정보