通过 OpenVPN 网关路由

通过 OpenVPN 网关路由

我有以下设置:

++++++++++++++++++
+ 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 2router2 上已建立的 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。

相关内容