OpenVPN 터널을 통해 외부 서버에 대한 ping이 작동하지 않음

OpenVPN 터널을 통해 외부 서버에 대한 ping이 작동하지 않음

OpenVPN 서버와 클라이언트가 있고 이 터널을 사용하여 10.0.8.0/24인터넷 전체에 액세스하고 싶습니다. 지금까지는 클라이언트에서 인터페이스를 통해 서버에 ping을 보내는 것이 tun0작동하며 그 반대의 경우도 마찬가지입니다.

그러나 www.google.com클라이언트로부터의 ping은 tun0작동하지 않습니다(모든 패킷이 손실됨).

나는 인터넷 대상에서 들어오는 모든 패킷이 전달되도록 서버를 구성해야 한다고 생각하여 tun0다음과 같은 iptables 구성 라인을 생각해 냈습니다.

interface_connecting_to_the_internet='eth0'
interface_openvpn='tun0'
internet_ip_address=`ifconfig "$interface_connecting_to_the_internet" | sed -n s'/.*inet \([0-9.]*\).*/\1/p'`

iptables -t nat -A POSTROUTING -o "${interface_connecting_to_the_internet}" -j SNAT --to-source "${internet_ip_address}"
echo '1' > /proc/sys/net/ipv4/ip_forward

그러나 이것은 작동하지 않습니다. 패킷은 여전히 ​​손실되며 내 설정에 무엇이 문제가 될 수 있는지 궁금합니다.


일부 세부정보:

IP 경로는 서버에 다음을 제공합니다.

default via 176.31.127.254 dev eth0  metric 3 
10.8.0.0/24 via 10.8.0.2 dev tun0 
10.8.0.2 dev tun0  proto kernel  scope link  src 10.8.0.1 
127.0.0.0/8 via 127.0.0.1 dev lo 
176.31.127.0/24 dev eth0  proto kernel  scope link  src 176.31.127.109 

IP 경로는 클라이언트에 다음을 제공합니다.

default via 192.168.1.1 dev wlan0  proto static 
10.8.0.1 via 10.8.0.5 dev tun0 
10.8.0.5 dev tun0  proto kernel  scope link  src 10.8.0.6 
127.0.0.0/8 via 127.0.0.1 dev lo  scope link 
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.109 

  • 클라이언트는 Wi-Fi 어댑터 wlan0와 TUN 어댑터를 사용합니다 tun0.
  • 서버는 이더넷 어댑터 eth0와 TUN 어댑터를 사용합니다 tun0.
  • VPN은 다음 위치에 있습니다.10.0.8.0/24

  • 클라이언트와 Linux 모두 Linux 3.6.1을 사용하고 있습니다.

답변1

토론을 요약하면 다음과 같습니다.

클라이언트 C에서 서버 S까지 VPN을 통해 특정 호스트 A에 도달하려면 다음을 수행해야 합니다.

  • S에서 IP 전달 활성화( sysctl -w net.ipv4.ip_forward=1)
  • iptables -t nat -A POSTROUTING -o ext_if -j MASQUERADES:에서 iptables를 통해 또는 and iptables -t nat -A POSTROUTING -o ext_if-j SNAT --to-source ext_ip의 명백한 의미를 사용하여 가장 또는 snat를 활성화합니다 .ext_ifext_ip
  • C에서 적절한 라우팅을 설정합니다(S는 S의 IP 주소를 나타냄).VPN에서):
    • S를 통해 A로 명시적인 경로를 설정하여:ip route add A via S dev vpn_if
    • S: 를 통해 기본 경로를 설정합니다. ip route add default via S dev vpn_if여기서 적절한 경로도 S: 로 설정해야 합니다 ip route add S via previous_gateway dev prev_if.
    • 서버에서 를 사용하면 OpenVPN은 S를 통해 C에 대한 push "redirect-gateway def1"경로를 설정합니다 . 이 경로는 기본 경로보다 더 구체적이고 터널이 중지되면 쉽게 제거할 수 있습니다.0.0.0.0/1128.0.0.0/1

관련 정보