networkmanager-strongswan vpn - IKEv2 路由问题

networkmanager-strongswan vpn - IKEv2 路由问题

直到今天,我与公司的 VPN 连接都可以使用 networkmanager-strongswan 开箱即用。

但是今天(在内核为 5.8.0-38 的 linux mint 20.1 上),我可以建立与 VPN 主机的连接,但无法访问任何远程服务(web、git、rdp...)。 Ping 远程 IP 也不起作用。

我在互联网上阅读了很多文章和教程,并尝试了很多愚蠢的事情,但我没有设法解决我的问题:这就是我现在寻求帮助的原因。

唯一有效的是使用 Charon-cmd ,如下所示:

sudo charon-cmd --cert <path_to_cert> --host <host_ip> --identity <identity>

但我将此解决方案视为一种解决方法,因为我喜欢使用 NetworkManager 作为 GUI 方法来连接/断开连接,并且通过使用此解决方案,我失去了对 LAN 服务的访问权限。

我真的不擅长网络配置,但据我了解,这可能是一个路由问题,因为 charon-cmd 定义基于路由的连接,而 ipsec 和 networkmanager 使用策略。我还注意到 Charon-cmd 使用 ipsec0 设备,而 ipsec 和 networkmanager 都不使用。

以下是使用网络管理器连接 VPN 时添加的策略:

src 10.x.x.x/32 dst 0.0.0.0/0 
    dir out priority 383615 
    tmpl src 192.168.1.55 dst <host_ip>
        proto esp spi 0xc4ec728f reqid 14 mode tunnel
src 0.0.0.0/0 dst 10.x.x.x/32 
    dir fwd priority 383615 
    tmpl src <host_ip> dst 192.168.1.55
        proto esp reqid 14 mode tunnel
src 0.0.0.0/0 dst 10.x.x.x/32 
    dir in priority 383615 
    tmpl src <host_ip> dst 192.168.1.55
        proto esp reqid 14 mode tunnel

这是 iptable-save 输出:

*mangle
:PREROUTING ACCEPT [58835:28708461]
:INPUT ACCEPT [58835:28708461]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [55809:6989866]
:POSTROUTING ACCEPT [55985:7014824]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
*nat
:PREROUTING ACCEPT [306:39378]
:INPUT ACCEPT [5:2408]
:OUTPUT ACCEPT [1193:105475]
:POSTROUTING ACCEPT [1119:99608]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 192.168.122.0/24 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [12:1454]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8:916]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWX - [0:0]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
-A INPUT -j LIBVIRT_INP
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j LIBVIRT_FWX
-A FORWARD -j LIBVIRT_FWI
-A FORWARD -j LIBVIRT_FWO
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j LIBVIRT_OUT
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ACCEPT
COMMIT

谢谢!


编辑:

不使用 VPN 的路由(表 220)

192.168.1.0/24 dev enp3s0 proto static src 192.168.1.55 
192.168.122.0/24 dev virbr0 proto static src 192.168.122.1 linkdown

通过 NetworkManager 使用 VPN 的路由(表 220)

default via 192.168.1.1 dev enp3s0 proto static src 10.x.x.x 
192.168.1.0/24 dev enp3s0 proto static src 192.168.1.55 
192.168.122.0/24 dev virbr0 proto static src 192.168.122.1 linkdown

通过 Charon-cmd 使用 VPN 的路由(表 220)

default dev ipsec0 proto static src 10.x.x.x 
<host_ip> via 192.168.1.1 dev enp3s0 proto static src 192.168.1.55 
192.168.1.0/24 dev ipsec0 proto static src 192.168.1.55 
192.168.122.0/24 dev ipsec0 proto static src 192.168.122.1 

注意:charon-cmd 定义了 ipsec0 设备,而 NetworkManager 仅创建虚拟 IP 地址。

答案1

最后,我机缘巧合地解决了我的问题! :)

这周末我不在家,并尝试按照@ecdsa 的建议查看统计数据(谢谢!)。当我使用 NM 连接到 VPN 时,它似乎正在工作。我的结论是我的问题不是配置问题而是 ISP 问题。

经过一番搜索后,我发现我的法国 ISP“Free”正在向 4 个客户共享一个 ip v4(通过将端口范围拆分为 4 个子范围)。解决方案是要求我的 IPS 给我一个“全栈 ipv4”。

资料来源:

搜索引擎的法语关键词:
连接问题 VPN IKEv2 Strongswan avec Network Manager - Free freebox

相关内容