我在 ArchLinux 系统上尝试连接到我公司的 VPN,该 VPN 由 Juniper SRX100H 提供服务。我尝试连接 Strongswan (5.5.3-3),似乎成功了:
Starting strongSwan 5.5.3 IPsec [starter]...
generating QUICK_MODE request 2638887156 [ HASH SA No KE ID ID ]
sending packet: from 192.168.1.204[4500] to 10.0.0.1[4500] (396 bytes)
received packet: from 10.0.0.1[4500] to 192.168.1.204[4500] (364 bytes)
parsed QUICK_MODE response 2638887156 [ HASH SA No KE ID ID ]
CHILD_SA test{2} established with SPIs cad5681f_i 4015b7bd_o and TS 192.168.1.204/32 === 192.168.32.0/24
connection 'test' established successfully
问题是,此后我无法 ping 除 10.0.0.1 之外的任何设备,它会返回响应。但我无法访问 192.168.32.0/24 内的任何对等设备。
我的 ipsec.conf 如下所示:
conn test
left=%any
[email protected]
leftauth=psk
leftauth2=xauth
rightsubnet=192.168.32.0/24
rightid=10.0.0.1
rightauth=psk
auto=start
xauth_identity=USER
esp=aes256-sha1-modp1536
ike=aes256-sha2_256-modp1536
aggressive=yes
type=tunnel
的输出ip route show
为:
default via 192.168.1.1 dev wlp3s0 proto static metric 600
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.204 metric 600
其他客户端(Windows)可以连接 NCP 安全客户端,所以我猜测这不是 Juniper 端的防火墙问题。
任何帮助,将不胜感激 :)
更新
输出iptables-save
# Generated by iptables-save v1.6.1 on Tue Aug 8 11:24:43 2017
*filter
:INPUT ACCEPT [5:2010]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7:999]
-A INPUT -s 192.168.32.0/24 -d 192.168.1.204/32 -i wlp3s0 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT
-A OUTPUT -s 192.168.1.204/32 -d 192.168.32.0/24 -o wlp3s0 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT
COMMIT
# Completed on Tue Aug 8 11:24:43 2017
charon_debug.log 在这里:https://pastebin.com/jYiqpLip
答案1
得到@ecdsa 通过 IRC 提供的帮助:
缺少的属性是leftsourceip=%config
和modeconfig=push
,因为 Juniper 正在将所需的设置推送到客户端。
答案2
这是我通过 ssh 连接到隧道另一端网络中的任何主机的解决方案。
允许 IPv4 转发
编辑 /etc/sysctl.conf 以允许在 Linux 内核中转发。
vi /etc/sysctl.conf
在文件中添加以下行。
net.ipv4.ip_forward=1
保存文件,然后应用更改。
sysctl -p
答案3
我猜这与 iptables 有关
尝试添加这个:
leftfirewall=yes
rightfirewall=yes