通过 OpenVPN 隧道路由子网流量

通过 OpenVPN 隧道路由子网流量

我有一台 Linux 机器设置为隔离子网和网络其余部分之间的网关。

NAT 通过 iptables 完成并且工作正常。

# Generated by iptables-save v1.6.1 on Mon Nov 27 10:22:22 2017
*filter
:INPUT ACCEPT [14459:13422943]
:FORWARD DROP [323:21689]
:OUTPUT ACCEPT [9723:3273357]
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.112.0.0/16 -d 10.113.0.0/16 -i eth0 -o eth1 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -s 10.113.0.0/16 -i eth1 -o tun0 -m conntrack --ctstate NEW -j ACCEPT
COMMIT
# Completed on Mon Nov 27 10:22:22 2017
# Generated by iptables-save v1.6.1 on Mon Nov 27 10:22:22 2017
*nat
:PREROUTING ACCEPT [795:105677]
:INPUT ACCEPT [20:3379]
:OUTPUT ACCEPT [12:777]
:POSTROUTING ACCEPT [12:777]
-A POSTROUTING -s 10.113.0.0/16 -o tun0 -j MASQUERADE
COMMIT
# Completed on Mon Nov 27 10:22:22 2017

如果我通过 openVPN 路由连接来重定向从服务器推送的所有流量,这也可以正常工作。

0.0.0.0/1 via 10.211.1.142 dev tun0
default via 10.112.0.1 dev eth0 proto static
10.112.0.0/16 dev eth0 proto kernel scope link src 10.112.0.2
10.113.0.0/16 dev eth1 proto kernel scope link src 10.113.0.1
10.211.1.142 dev tun0 proto kernel scope link src 10.211.1.141
118.241.176.13 via 10.112.0.1 dev eth0
128.0.0.0/1 via 10.211.1.142 dev tun0

不过,我只想通过 tun0 接口重定向来自子网 10.113.0.0 的 NAT 流量,并让网关本身保持正常的互联网连接(用于更新等)。

我以为添加路由-nopull我的 openvpn.conf 可以解决这个问题,因为流量通过 iptable 规则重定向到 tun0,但显然这还不够(子网客户端无法连接到互联网)

看来我只是缺少一些简单的 ip 路由条目或其他东西。

相关内容