通过 OpenVPN 路由无线 LAN

通过 OpenVPN 路由无线 LAN

我正在尝试将我的家庭服务器设置为 OpenVPN 网关,这样我就可以从任何设备连接到我的 VPN,而无需安装它们的特殊软件。我的服务器运行的是 Ubuntu 14.04。

主机有3个接口:

  • eth0 - IP 地址 10.0.1.253 位于内部 NAT 网络上,而不是网关(网关是 10.0.1.1,它提供互联网连接)。
  • wlan0 - IP 地址 10.0.2.1,它是我想通过 VPN 提供服务的无线 LAN 的所有者/网关。 hostapd 和 isc-dhcp-server 用于管理此接口上的客户端。
  • tun0 - IP 地址 10.8.8.86,这是 VPN 的连接。

我不希望服务器的默认路由更改为 VPN,因为服务器上正在运行一些进程,我希望允许它们进行“正常”的互联网访问。

我已经通过以下命令设置了 VPN 网络的默认路由(显示的所有命令均通过 sudo 以 root 身份运行):

echo "201 vpn" >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table vpn
ip route add default via 10.8.8.86 table vpn
ip route flush cache

并伪装成:

echo 1 | tee /proc/sys/net/ipv4/ip_forward
iptables -A PREROUTING -i wlan0 -t mangle \! -d 10.0.1.0/24 -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -s 10.0.2.0/24 \! -d 10.0.1.0/24 -o tun0 -j MASQUERADE

我也尝试添加

iptables -A FORWARD -i tun0 -j ACCEPT

但这似乎没有任何区别。

我看到的是流量被路由到 tun0 设备,并正确伪装,但返回信息只是消失,它没有被路由回 wlan0 请求。

我已运行 tcpdump 来尝试查找问题,并附有示例。这是从 wlan0 网络上的设备请求网站时产生的。

在 wlan0 端:

tcpdump -n -i wlan0 not port mdns
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
17:54:18.703395 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:19.706732 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:22.714178 IP 10.0.2.2.53203 > 8.8.4.4.53: 46870+ A? www.whatismyip.com. (36)
17:54:23.717681 IP 10.0.2.2.53203 > 8.8.4.4.53: 46870+ A? www.whatismyip.com. (36)
17:54:26.725358 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)
17:54:32.081146 ARP, Request who-has 10.0.2.1 tell 10.0.2.2, length 28
17:54:32.081192 ARP, Reply 10.0.2.1 is-at 80:1f:02:49:47:a0, length 28
17:54:35.744061 IP 10.0.2.2.53203 > 208.67.222.222.53: 46870+ A? www.whatismyip.com. (36)

DNS 请求可见,但没有响应。

在 tun0 端:

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
17:54:18.703494 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:19.011244 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:19.706815 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:20.009089 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.14, A 141.101.120.15 (68)
17:54:22.714279 IP 10.8.8.86.53203 > google-public-dns-b.google.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:23.075728 IP google-public-dns-b.google.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:23.717755 IP 10.8.8.86.53203 > google-public-dns-b.google.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:24.059747 IP google-public-dns-b.google.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.15, A 141.101.120.14 (68)
17:54:26.725404 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:35.744099 IP 10.8.8.86.53203 > resolver1.opendns.com.domain: 46870+ A? www.whatismyip.com. (36)
17:54:36.046371 IP resolver1.opendns.com.domain > 10.8.8.86.53203: 46870 2/0/0 A 141.101.120.14, A 141.101.120.15 (68)

这表明 DNS 响应是从 VPN 连接返回的。

对于我错过的内容有什么建议吗?

相关内容