我有以下情况:
UDM pro
192.168.20.1 默认 LAN 网关端口 6000 转发到运行 Docker OpenVPN 服务器的服务器。Ubuntu
20.04 LTS
192.168.20.2 服务器运行 Docker VPN 服务器和 OpenVPN 客户端,充当本地 LAN 的互联网网关。
只要我不连接到服务器上的 PIA,一切都会正常。当我连接到 PIA 时,所有到 VPN 服务器的流量都会丢失。我怀疑我的 VPN 客户端的答案现在通过 PIA 服务器的默认路由进行路由。
我的配置:
Iptables:
# Flush
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X
# Block All
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
# allow Localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Make sure you can communicate with any DHCP server
iptables -A OUTPUT -d 255.255.255.255 -j ACCEPT
iptables -A INPUT -s 255.255.255.255 -j ACCEPT
# Make sure that you can communicate within your own network
iptables -A INPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -s 172.16.0.0/12 -d 172.16.0.0/12 -j ACCEPT
iptables -A OUTPUT -s 172.16.0.0/12 -d 172.16.0.0/12 -j ACCEPT
# Allow established sessions to receive traffic:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow TUN
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -o tun+ -j ACCEPT
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE
iptables -A OUTPUT -o tun+ -j ACCEPT
# allow VPN connection
iptables -I OUTPUT 1 -p udp --destination-port 1197 -m comment --comment "Allow VPN connection" -j ACCEPT
# Block All
iptables -A OUTPUT -j DROP
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP
# Log all dropped packages, debug only.
iptables -N logging
iptables -A INPUT -j logging
iptables -A OUTPUT -j logging
iptables -A logging -m limit --limit 2/min -j LOG --log-prefix "IPTables general: " --log-level 7
iptables -A logging -j DROP
echo "saving"
iptables-save > /etc/iptables.rules
echo "done"
route:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 x.x.x.x 128.0.0.0 UG 0 0 0 tun06
default 192.168.20.1 0.0.0.0 UG 0 0 0 enp0s25
10.37.110.0 0.0.0.0 255.255.255.0 U 0 0 0 tun06
128.0.0.0 x.x.x.x.x 128.0.0.0 UG 0 0 0 tun06
unn-138-199-18- 192.168.20.1 255.255.255.255 UGH 0 0 0 enp0s25
link-local 0.0.0.0 255.255.0.0 U 203 0 0 docker0
link-local 0.0.0.0 255.255.0.0 U 307 0 0 veth4c4488b
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.10.0 192.168.20.1 255.255.255.0 UG 0 0 0 enp0s25
192.168.20.0 0.0.0.0 255.255.255.0 U 202 0 0 enp0s25
192.168.30.0 192.168.20.1 255.255.255.0 UG 0 0 0 enp0s25
192.168.40.0 192.168.20.1 255.255.255.0 UG 0 0 0 enp0s25
192.168.50.0 192.168.20.1 255.255.255.0 UG 0 0 0 enp0s25
我尝试了互联网上能找到的所有方法,包括:
基于策略的路由
第二网卡并通过该网卡路由
通过 20.1 更改默认路由
新增航线:
ip rule add from 192.168.20.2 table 128
ip route add table 128 to 192.168.20.0/24 dev enp0s25
ip route add table 128 default via 192.168.20.1
最后一个很久以前就起作用了,但不知何故现在不再起作用了。
我目前已禁用防火墙,因为我的路由器上有一个很好的防火墙,我想先让它工作。
编辑:已修复,请参阅下面的我的答案
答案1
在寻找其他东西时我找到了答案:
#!/bin/sh
echo "Adding default route to $route_vpn_gateway with /0 mask..."
ip route add default via $route_vpn_gateway
echo "Removing /1 routes..."
ip route del 0.0.0.0/1 via $route_vpn_gateway
ip route del 128.0.0.0/1 via $route_vpn_gateway
建立 vpn 连接后运行此程序即可
来源: https://stackoverflow.com/questions/45692255/how-make-openvpn-work-with-docker