![如何通过已建立的 L2TP 连接路由互联网流量?](https://linux22.com/image/730616/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%B7%B2%E5%BB%BA%E7%AB%8B%E7%9A%84%20L2TP%20%E8%BF%9E%E6%8E%A5%E8%B7%AF%E7%94%B1%E4%BA%92%E8%81%94%E7%BD%91%E6%B5%81%E9%87%8F%EF%BC%9F.png)
我正在努力连接,更重要的是,从Ubuntu路由流量服务器(这意味着网络管理器和任何 GUI 工具都是不可能的)到在完全不同的网络中的另一台 Ubuntu 机器上运行的 L2TP-IPSec VPN 服务器。
VPN 服务器设置在这个docker容器并且运行良好:我可以轻松地从我的 Ubuntu 台式笔记本电脑连接到它,几乎不需要任何额外的配置。
在阅读了许多文章后,我发现它们似乎都缺少了一些东西,于是我设法得出了一半的结果,我的方法是基于另一个 docker 容器。唯一的区别是,我将所有配置文件从容器中取出并直接在主机上运行所有内容。
# ipsec status
Security Associations (1 up, 0 connecting):
L2TP-PSK[1]: ESTABLISHED 3 minutes ago, 192.168.234.5[192.168.234.5]...VPN-SERVER-IP[VPN-SERVER-IP]
L2TP-PSK{1}: INSTALLED, TRANSPORT, reqid 1, ESP in UDP SPIs: c36b6571_i ee9aeaf1_o
L2TP-PSK{1}: 192.168.234.5/32[udp/l2f] === VPN-SERVER-IP/32[udp/l2f]
到目前为止,一切都很好。
运行下一对命令后
(sleep 3 && echo "c strong-vpn" > /var/run/xl2tpd/l2tp-control) &
/usr/sbin/xl2tpd -p /var/run/xl2tpd.pid -c /etc/xl2tpd/xl2tpd.conf -C /var/run/xl2tpd/l2tp-control -D
我得到以下输出
xl2tpd[17164]: Not looking for kernel SAref support.
xl2tpd[17164]: Using l2tp kernel support.
xl2tpd[17164]: xl2tpd version xl2tpd-1.3.10 started on mn-hdap05 PID:17164
xl2tpd[17164]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
xl2tpd[17164]: Forked by Scott Balmos and David Stipp, (C) 2001
xl2tpd[17164]: Inherited by Jeff McAdams, (C) 2002
xl2tpd[17164]: Forked again by Xelerance (www.xelerance.com) (C) 2006-2016
xl2tpd[17164]: Listening on IP address 0.0.0.0, port 1701
xl2tpd[17164]: Connecting to host VPN-SERVER-IP, port 1701
xl2tpd[17164]: Connection established to VPN-SERVER-IP, 1701. Local: 21439, Remote: 14830 (ref=0/0).
xl2tpd[17164]: Calling on tunnel 21439
xl2tpd[17164]: Call established with VPN-SERVER-IP, Local: 21474, Remote: 10460, Serial: 1 (ref=0/0)
xl2tpd[17164]: start_pppd: I'm running:
xl2tpd[17164]: "/usr/sbin/pppd"
xl2tpd[17164]: "plugin"
xl2tpd[17164]: "pppol2tp.so"
xl2tpd[17164]: "pppol2tp"
xl2tpd[17164]: "7"
xl2tpd[17164]: "passive"
xl2tpd[17164]: "nodetach"
xl2tpd[17164]: ":"
xl2tpd[17164]: "debug"
xl2tpd[17164]: "file"
xl2tpd[17164]: "/etc/ppp/options.l2tpd.client"
此外,还出现了一个新的网络接口ppp0
。路由表也发生了一些变化,最初是这样的
0.0.0.0 192.168.234.1 0.0.0.0 UG 0 0 0 bond0
192.168.234.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
对此
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
VPN-SERVER-IP 192.168.234.1 255.255.255.255 UGH 0 0 0 bond0
192.168.42.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.234.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
相比之下,在我的笔记本电脑上,当我连接到同一个 VPN 时,路由表会如下变化:
BEFORE
0.0.0.0 172.22.44.1 0.0.0.0 UG 600 0 0 wlp59s0
172.22.44.0 0.0.0.0 255.255.252.0 U 600 0 0 wlp59s0
AFTER
0.0.0.0 0.0.0.0 0.0.0.0 U 50 0 0 ppp0
0.0.0.0 172.22.44.1 0.0.0.0 UG 600 0 0 wlp59s0
VPN-SERVER-IP 172.22.44.1 255.255.255.255 UGH 600 0 0 wlp59s0
172.22.44.0 0.0.0.0 255.255.252.0 U 600 0 0 wlp59s0
172.22.44.1 0.0.0.0 255.255.255.255 UH 600 0 0 wlp59s0
192.168.42.1 0.0.0.0 255.255.255.255 UH 50 0 0 ppp0
我怀疑我的问题确实与路由表有关,但尝试在服务器上手动复制笔记本电脑上的路由表结构却没有帮助。如果在我的笔记本电脑上返回curl ifconfig.me
,VPN-SERVER-IP
则在服务器上我通常无法访问任何主机。我能做的最好的就是ping
或curl
IP192.168.42.1
并获得预期结果,确认我至少连接到了我的 VPN 服务器,但我的一般传出互联网流量肯定不会通过它。可能是什么问题?