设想
在 Gentoo 上运行的 OpenVPN 服务器
eno1:(服务器公网 IP)有静态 IP……无 dhcp
eno2:vlan(目前已关闭)
tun0:openvpn隧道接口
服务器配置文件
local <external ip>
port 443
proto tcp
dev tun
ca ca.crt
cert cert.crt
key key.key
dh dh.pem
tls-auth hmac.key 0
server 10.77.198.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
comp-lzo
max-clients 10
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
log-append /var/log/openvpn.log
verb 4
客户端配置文件
client
remote <server ext ip>
port 443
comp-lzo
dev tun
proto tcp
persist-key
persist-tun
verb 4
<ca>
removed
</ca>
<cert>
removed
</cert>
<key>
removed
</key>
key-direction 1
<tls-auth>
removed
</tls-auth>
从 Win7 x64 计算机连接
...工作正常
我被分配了一个来自 10.77.198.0 池的 IP
我可以从客户端 ping 服务器的外部 IP
问题:
流量不通过 VPN 路由
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 <ext ip>.254 0.0.0.0 UG 2 0 0 eno1
10.77.198.0 10.77.198.2 255.255.255.0 UG 0 0 0 tun0
10.77.198.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
<ext ip>.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eno2
除了 iptables 规则之外,我还遗漏了什么吗?
如果没有,请提供一套完整的 iptables 规则,以便正确路由 tun0 和 eno1 之间的流量。请记住 eno1 有一个静态 IP。
附言
推送到客户端的网关也来自 10.77.198.0 池
答案1
通过启用 ip_forward 并按照以下示例解决
https://community.openvpn.net/openvpn/wiki/BridgingAndRouting