![Strongswan 并非所有流量都经过加密](https://linux22.com/image/1512744/Strongswan%20%E5%B9%B6%E9%9D%9E%E6%89%80%E6%9C%89%E6%B5%81%E9%87%8F%E9%83%BD%E7%BB%8F%E8%BF%87%E5%8A%A0%E5%AF%86.png)
我已经使用以下配置设置了 Cisco 路由器的 strongswan:
config setup
uniqueids=never
ca default_ca
auto=add
conn %default
keyexchange=ikev1
type=tunnel
left=%any
auto=add
dpdaction=clear
margintime=0s
rekeyfuzz=20%
conn cisco-ezvpn
keyexchange=ikev1
left=10.0.1.2
leftid=lab
leftsourceip=%config
leftfirewall=yes
right=10.0.1.1
rightsubnet=0.0.0.0/0
xauth_identity=test
auto=add
leftauth2=xauth
xauth=client
aggressive=yes
leftauth=psk
rightauth=psk
ikelifetime=86000s
lifetime=86000s
ike=aes256-sha256-ecp256
esp=aes256-sha256
但我发现并非所有流量都是加密的。
- 如果在 ipsec up 之前某些程序,比如 ssh,已经连接到远程服务器,这些连接将不会使用 VPN 隧道,从 tcpdump 输出中可以看到:
[root@lorawan ~]# tcpdump -i eth0 tcpdump: 详细输出被抑制,使用 -v 或 -vv 进行完整协议解码 监听在 eth0 上,链路类型 EN10MB(以太网),捕获大小 262144 字节 22:17:54.407463 IP 10.0.1.1 > 10.0.1.2: ESP(spi=0xc0920b53,seq=0x4a),长度 184 22:17:59.454819 IP 10.0.1.2 > 10.0.1.1: ESP(spi=0x3ec810fd,seq=0x97),长度 120 22:17:59.455637 IP 10.0.1.1 > 10.0.1.2: ESP(spi=0xc0920b53,seq=0x4c),长度 104 22:17:59.455637 IP 10.0.1.1 > 10.10.0.0:ICMP 10.0.1.1 udp 端口域不可达,长度 36 22:17:59.455787 IP 10.0.1.2 > 10.0.1.1:ESP(spi=0x3ec810fd,seq=0x98),长度 120 22:18:01.000771 STP 802.1d,配置,标志[无],桥接 ID 8000.80:e0:1d:66:2f:a2.8001,长度 43 22:18:03.000814 STP 802.1d,配置,标志 [无],网桥 ID 8000.80:e0:1d:66:2f:a2.8001,长度 43 22:18:04.738096 IP 10.0.1.2.33457 > 10.0.1.1.5888:标志 [P.],序号 4216930160:4216930182,ack 50432821,win 17584,长度 22 22:18:04.738618 IP 10.0.1.1.5888 > 10.0.1.2.33457:标志 [.],序号 1:27,ack 22,win 3446,长度 26 22:18:04.738679 IP 10.0.1.2.33457 > 10.0.1.1.5888:标志 [.],ack 27,win 17584,长度 0
默认接口:eth0,仍然可以被外部主机进程访问,例如 ssh:
[root@lorawan ~]# tcpdump -i eth0 tcpdump: 详细输出被抑制,使用 -v 或 -vv 进行完整协议解码 监听在 eth0 上,链路类型 EN10MB(以太网),捕获大小 262144 字节 22:24:28.021347 IP 10.0.1.2 > 10.0.1.1: ESP(spi=0x3ec810fd,seq=0xa9),长度 120 22:24:28.169729 IP 10.0.1.1.36550 > 10.0.1.2.ssh: 标志 [P.],seq 156:208,ack 825,win 2944,长度 52 22:24:28.170144 IP 10.0.1.2.ssh
10.0.1.1.36550:标志 [P.],序号 825:893,ack 208,win 16616,长度 68 22:24:28.370727 IP 10.0.1.1.36550 > 10.0.1.2.ssh:标志 [.],ack 893,win 2876,长度 0
我的 iptables 转发器看起来正常:
[root@lorawan ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 10.10.0.0 policy match dir in pol ipsec reqid 1 proto esp
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
ACCEPT udp -- anywhere anywhere udp dpt:bootps
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 10.10.0.0 policy match dir in pol ipsec reqid 1 proto esp
ACCEPT all -- 10.10.0.0 anywhere policy match dir out pol ipsec reqid 1 proto esp
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 10.10.0.0 anywhere policy match dir out pol ipsec reqid 1 proto esp
我的问题是:有没有办法将“所有流量”路由到 VPN?
答案1
我认为这个问题可能是 Linux 网络堆栈的工作方式以及库 libpcap 如何捕获流量的副作用。
https://wiki.strongswan.org/issues/1114 https://wiki.strongswan.org/projects/strongswan/wiki/CorrectTrafficDump
我希望我能帮到你。
问候