OpenVPN路由问题

OpenVPN路由问题

我在运行 Debian 5 的 VPS 上运行 OpenVPN 服务器,在 Ubuntu 11.04 Desktop 上运行 OpenVPS 客户端。我希望客户端的所有传出流量都通过 VPN 服务器进行隧道传输。

我能够启动从客户端到服务器的连接,并在它们之间成功 ping 通,但是当我尝试从客户端访问外部 IP 地址时,却没有成功。

例如,通过 IP ping google 时:

ping -n 74.125.91.106
PING 74.125.91.106 (74.125.91.106) 56(84) bytes of data.
^C
--- 74.125.91.106 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6048ms

在服务器端,我可以看到通过隧道发出的 ping 请求,但没有返回任何答复:

tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
21:24:59.384736 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7537, seq 1,  length 64
21:25:00.391970 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7537, seq 2, length 64
21:25:01.400394 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7537, seq 3, length 64
21:25:02.408914 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7537, seq 4, length 64
21:25:03.416378 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7537, seq 5, length 64
21:25:04.424289 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7537, seq 6, length 64
21:25:05.431804 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7537, seq 7, length 64

我还可以在服务器上的 venet0 接口上看到这些:

tcpdump -i venet0:0 'icmp[icmptype] == icmp-echo or icmp[icmptype] == icmp-echoreply' 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on venet0:0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
21:39:11.397967 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7588, seq 1, length 64
21:39:12.407609 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7588, seq 2, length 64
21:39:13.415194 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7588, seq 3, length 64
21:39:14.423050 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7588, seq 4, length 64
21:39:15.431005 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7588, seq 5, length 64
21:39:16.439687 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7588, seq 6, length 64
21:39:17.446949 IP 10.8.0.6 > qy-in-f106.1e100.net: ICMP echo request, id 7588, seq 7, length 64

我还可以从服务器成功 ping google。

知道这可能是什么原因造成的吗?

服务器配置文件:

开发调谐
服务器 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
ca 证书
证书服务器.crt
密钥服务器.key
dh dh1024.pem
推“路由 10.8.0.0 255.255.255.0”
推“重定向网关”
康普
保持活动 10 60
ping 定时器 rem
坚持-tun
持久密钥
群组守护进程
守护进程

客户端配置文件:

远程 <<服务器 IP>>
开发调谐
康普
ca 证书
证书客户端1.crt
密钥客户端1.key
路由延迟 2
路由方法 exe
重定向网关 def1
dhcp 选项 DNS 10.8.0.1
动词 3

答案1

您需要映射“传入”流量,以便将其正确路由到客户端。即,您需要在服务器上为客户端的 IP(VPN IP)设置 NAT 转换。

您看到的是服务器不知道如何转发回复。

以下是如何执行此操作的说明:http://openvpn.net/index.php/open-source/documentation/howto.html#redirect- 查看服务器上的 iptables 配置。

答案2

已启用 IP 转发?源地址为 VPN 客户端?

源地址转换是将(VPN 客户端)地址转换为外部 IP 地址。正如 sunny 所说,接收服务器不知道如何路由回内部 IP,即使您的 ISP 一开始没有过滤它。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -a FORWARD -i tun0 -j 接受

相关内容