![通过 OpenVPN 网关路由](https://linux22.com/image/801937/%E9%80%9A%E8%BF%87%20OpenVPN%20%E7%BD%91%E5%85%B3%E8%B7%AF%E7%94%B1.png)
我有以下设置:
++++++++++++++++++
+ OpenVPN server +........ . . . . (cat pictures)
++++++++++++++++++
|
|
__|__________________________________________Internet________________
| Local
| DSL
|
++++++++++++++++++ +++++++++++++++++++
+ router1 + Ethernet + router2 +
+ DHCP serving +-------------+ DHCP serving +
+ 192.168.1.1/24 + eth0 + 10.0.0.1/24 +
++++++++++++++++++ + OpenVPN client +
. + hostapd/dnsmasq +
. +++++++++++++++++++
. . wlan0
. .
. WLAN 1 . WLAN 2
. .
(wifi clients 1) (wifi clients 2)
这样做的目的是拥有一个单独的 WLAN 2,WiFi 客户端可以连接到该 WLAN 2,并通过路由器 2 的 OpenVPN 连接将所有流量路由到互联网。
router2
在接口上运行一个hostapd
具有相当极简设置的实例wlan0
。dnsmasq.conf 也相当简单:
interface=wlan0
dhcp-range=10.0.0.1,10.0.0.254,12h
no-host
运行正常。我可以连接到 wifi 并分配 IP 地址。
OpenVPN 已设置并正常运行。我正在连接到商业 VPN 服务,因此服务器配置不受我控制。OpenVPN 正在使用tun0
。
我如何通过wifi clients 2
router2 上已建立的 OpenVPN 连接将所有请求路由到互联网?我想我现在必须设置路由表,但是该怎么做呢?
route
说:
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.200.4.1 128.0.0.0 UG 0 0 0 tun0
default router1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 wlan0
10.200.4.0 * 255.255.252.0 U 0 0 0 tun0
<vpn server ip> router1 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.200.4.1 128.0.0.0 UG 0 0 0 tun0
link-local * 255.255.0.0 U 1002 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
答案1
OpenVPN 服务器是否已设置为将10.0.0.1/24
网络路由到 router2?如果 OpenVPN 服务器 ping 成功,会发生什么情况10.0.0.1
?
如果您希望 VPN 另一端的主机能够建立传入连接,那么您将需要修复您的 VPN 服务器。
如果这只是出站流量,那么您可能需要设置 NAT。这样来自10.0.0.0/24
网络的数据包看起来就像来自 VPN 接口。
类似这样的规则iptables -t nat -A POSTROUTING -o tun1 -j SNAT --to-source 10.200.4.1
答案2
您在中定义一个单独的路由表/etc/iproute2/rt_tables
,我们称之为 wlan2(数字无所谓)。
# in this routing table: send everything over the VPN
ip route add table wlan2 $vpn_remote_ip dev tun0
# next line(s) for all LAN networks (which shall be reachable from WLAN 2)
ip route add table wlan2 192.168.1.1/24 via $router1_ip
ip route add table wlan2 $router1_router2_network dev eth0 src $router2_ip
ip route add table wlan2 default via $vpn_remote_ip
# use routing table wlan2 (instead of main) for every packet coming from the WLAN
ip rule add iif $wlan_if priority 100 table wlan2
当然,您必须配置 OpenVPN 服务器以路由到 WLAN 网络(如果您在本地路由器中没有执行 NAT)。
编辑1:
如果所有互联网流量都应通过 OpenVPN 服务器,则配置将变得非常简单。由于 OpenVPN 服务器已经有主机路由,因此您只需将默认路由从 更改router1
为 OpenVPN 服务器的隧道 IP。