我有一个运行 OpenVPN 服务器的树莓盒,我使用它作为在家庭网络之外连接以使用我的 Pihole 安装的一种方式。这是没有问题的工作。
| HOME NETWORK/Pihole |
(Remote client) -- (Open VPN Server ) --- Internet
Run Code Online (Sandbox Code Playgroud)
另外,我有一个远程 VPN 服务,我可以从 Pi 设备通过 OpenVPN 客户端连接到该服务。我也测试成功。
| HOME NETWORK/Pihole |
(Open VPN Client ) - VPN provider
Run Code Online (Sandbox Code Playgroud)
我想结合这两种服务,这样最终的安装看起来像这样
| HOME NETWORK /Pihole |
(Remote client) -- (Open VPN Server) -- (Open VPN Client) --- Remote VPN service
Run Code Online (Sandbox Code Playgroud)
我尝试过类似这个类似问题(带有活动 OpenVPN 客户端的 Wireguard 服务器)中描述的解决方案,但结果类似:一旦激活 Open VPN 客户端 (tun1),服务器 (tun0) 将无法访问。
这是两个接口 tun[01] 都启动时路由表的样子
0.0.0.0/1 via 10.50.11.5 dev tun1
default via 192.168.1.1 dev wlan0 src 192.168.1.164 metric 303
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
10.50.11.1 via 10.50.11.5 dev tun1
10.50.11.5 dev tun1 proto kernel scope link src 10.50.11.6
128.0.0.0/1 via 10.50.11.5 dev tun1
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.164 metric 303
199.116.115.135 via 192.168.1.1 dev wlan0
Run Code Online (Sandbox Code Playgroud)
这是我尝试连接时 openvpn 服务器的当前输出。
pi@raspberrypi:/etc/openvpn $ sudo more openvpn-status.log
OpenVPN CLIENT LIST
Updated,Sat Jun 29 23:30:41 2019
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
UNDEF,x.x.x.x:39159,860,442,Sat Jun 29 23:30:02 2019
Run Code Online (Sandbox Code Playgroud)
这是错误日志的样子
Sat Jun 29 23:34:47 2019 x.x.x.x:28162 TLS Error: incoming packet authentication failed from [AF_INET]172.58.87.22:28162
Sat Jun 29 23:34:48 2019 x.x.x.x:28162 Authenticate/Decrypt packet error: bad packet ID (may be a replay): [ #1 / time = (1561869285) Sat Jun 29 23:34:45 2019 ] -- see the man page entry for --no-replay and --replay-window for more
info or silence this warning with --mute-replay-warnings
Sat Jun 29 23:34:48 2019 x.x.x.x:28162 TLS Error: incoming packet authentication failed from [AF_INET]x.x.x.x:28162
Run Code Online (Sandbox Code Playgroud)
显然客户端连接被破坏了?
我还在同一台机器上的 OpenVPN 客户端和服务器中尝试了解决方案- 服务器不允许在客户端连接时连接,这是我在发布此问题后发现的,但无济于事。这似乎与我的问题直接相关,但它仍然无法正常工作。
iptables -I POSTROUTING -t nat -s 10.8.0.0/24 -o tun1 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)
您将需要此规则通过 openvpn 客户端连接 (tun1) 路由来自 openvpn 服务器 (10.8.0.0/24) 的传出流量
要从家庭网络外部访问您的 openvpn 服务器,您必须使用此答案中的以下规则:
ip rule add from 192.168.1.164 lookup 10 # Pi server
ip route add default via 192.168.1.1 table 10 # LAN router
Run Code Online (Sandbox Code Playgroud)
其中192.168.1.164是您的 Pi-IP。
仅允许 VPN 流量的替代方法是:
iptables -A PREROUTING -t mangle -p udp --dport 1149 -j MARK --set-mark 1
ip rule add fwmark 1 table 10
ip route add default via 192.168.1.1 dev wlan0 dev table 10
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
522 次 |
最近记录: |