如何配置 OpenVPN 以使用一个 NIC 访问互联网?

如何配置 OpenVPN 以使用一个 NIC 访问互联网?

在阅读了许多问题后,如何, 这常问问题甚至部分Linux 网络指南,我无法连接到互联网。

我正在尝试在 VPS 上设置 OpenVPN 服务器,其用于:

  • 安全访问互联网
  • 绕过端口限制(例如 directadmin/2222)
  • IPv6 连接(我的客户端只有 IPv4 连接,而 VPS 同时具有 IPv4 和原生 IPv6 连接)(如果可能)

连接到我的服务器并访问机器(HTTP),但 Internet 连接失败完全。我用它ping 8.8.8.8来测试我的连接是否有效。

使用tcpdumpiptables -t nat -A POSTROUTING -j LOG,我可以确认数据包已到达我的服务器。如果我在 VPS 上 ping 到 8.8.8.8,我会echo-reply按预期收到来自 8.8.8.8 的 。从客户端 ping 时,我没有收到echo-reply

VPS 只有一个 NIC:。etho它在 Xen 上运行。我想避免网络桥接 (br0)。

摘要:我想使用 OpenVPN 在笔记本电脑和互联网之间建立安全连接。如果可行,我也想建立 IPv6 连接。

网络设置和软件:

 Home laptop    (eth0: 192.168.2.10) (tap0: 10.8.0.2)
  |      |       (running Kubuntu 10.10; OpenVPN 2.1.0-3ubuntu1)
  | wifi |
router/gateway  (gateway 192.168.2.1)
      |
  INTERNET
      |
     VPS        (eth0:1.2.3.4)       (gateway, tap0: 10.8.0.1)
                  (running Debian 6; OpenVPN 2.1.3-2)

由于所有流量都通过 UDP 端口 1194 加密,因此 wifi 和我的家庭路由器不会造成问题。

我已打开 IP 转发:

# echo 1 > /proc/sys/net/ipv4/ip_forward

iptables已配置为允许转发流量:

iptables -F FORWARD
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j DROP

我分别尝试了这些规则,但没有成功(执行前刷新链条):

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to 1.2.3.4
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

route -n之前(服务器):

1.2.3.4         0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         1.2.3.4         0.0.0.0         UG    0      0        0 eth0

route -n之后(服务器):

1.2.3.4         0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tap0
0.0.0.0         1.2.3.4         0.0.0.0         UG    0      0        0 eth0

route -n之前(客户):

192.168.2.0     0.0.0.0         255.255.255.0   U     2      0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0
0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 wlan0

route -n之后(客户端):

1.2.3.4         192.168.2.1     255.255.255.255 UGH   0      0        0 wlan0
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tap0
192.168.2.0     0.0.0.0         255.255.255.0   U     2      0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0
0.0.0.0         10.8.0.1        128.0.0.0       UG    0      0        0 tap0
128.0.0.0       10.8.0.1        128.0.0.0       UG    0      0        0 tap0
0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 wlan0

服务器配置

proto udp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
log-append openvpn-log
verb 3
mute 10

客户端配置

dev tap
proto udp
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20

traceroute 8.8.8.8按预期工作(未激活 OpenVPN 时输出类似):

 1  10.8.0.1 (10.8.0.1)  24.276 ms  26.891 ms  29.454 ms
 2  gw03.sbp.directvps.nl (178.21.112.1)  31.161 ms  31.890 ms  34.458 ms
 3  ge0-v0652.cr0.nik-ams.nl.as8312.net (195.210.57.105)  35.353 ms  36.874 ms  38.403 ms
 4  ge0-v3900.cr0.nik-ams.nl.as8312.net (195.210.57.53)  41.311 ms  41.561 ms  43.006 ms
 5  * * *
 6  209.85.248.88 (209.85.248.88)  147.061 ms  36.931 ms  28.063 ms
 7  216.239.49.36 (216.239.49.36)  31.109 ms  33.292 ms 216.239.49.28 (216.239.49.28)  64.723 ms
 8  209.85.255.130 (209.85.255.130)  49.350 ms 209.85.255.126 (209.85.255.126)  49.619 ms 209.85.255.122 (209.85.255.122)  52.416 ms
 9  google-public-dns-a.google.com (8.8.8.8)  41.266 ms  44.054 ms  44.730 ms

如果您有任何建议,请评论或回答。

提前致谢。

答案1

原来是提供商方面的问题,他们的 Xen 网络设置过时了。有关 IPv6 之旅,请参阅如何使用 Tap 设备设置使用 IPv4 和 IPv6 的 OpenVPN?

答案2

我不确定我是否发现了什么,但在我看来,当源是 10.8.0.0/24 时您允许转发,那么您如何期望来自目的地 8.8.8.8 的回复能够遍历到 10.8.0.0/24?

相关内容