ipsec隧道-iptables假面舞会间歇性地工作

问题描述

TL; DR-在我的ipsec隧道启动并运行了一段时间后,间歇性地,来自隧道另一端的MASQUERADE流量的iptables规则有时无法工作。

我在AWS中有一个专用子网,所有流量都需要通过我们数据中心中运行Centos 7.3的网关VM进行路由。网关VM位于数据中心防火墙之后,并且NAT位于公共IP之后。设置如下:

AWS subnet (10.10.101.0/24) <- ipsec tunnel -> Gateway VM (10.10.110.245)

我从AWS导出了OpenSwan的站点站点VPN配置,并在网关VM上安装了ipsec。 ipsec.conf看起来像这样:

conn Tunnel1
    type=tunnel
    authby=secret
    auto=start
    left=%defaultroute
    leftid=<Gateway VM public IP>
    leftsubnets={10.10.110.245/32,0.0.0.0/0,}
    right=<AWS IP>
    rightsubnet=10.10.101.0/24
    ikelifetime=8h
    keylife=1h
    phase2alg=aes128-sha1;modp1024
    ike=aes128-sha1;modp1024
    keyingtries=%forever
    keyexchange=ike
    dpddelay=10
    dpdtimeout=30
    dpdaction=restart_by_peer

我按照AWS指令配置sysctl:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0

然后将防火墙配置为伪装来自AWS子网的所有数据包:

iptables -t nat -A POSTROUTING -s 10.10.101.0/24 -j MASQUERADE

最后,我启动ipsec隧道。隧道已启动并正在运行,并且最初,AWS子网中的计算机可以连接到互联网(ping 8.8.8.8)。网关VM(10.10.110.245)上的Tcpdump显示了从AWS端到达的数据包,并且最初正确地伪装了VM的IP地址。

但是,经过一段时间(通常大约1个小时)之后,网关VM不再遵守iptables中的伪装规则。网关VM(10.10.110.245)上的Tcpdump显示了从AWS子网到达的ICMP数据包,发往8.8.8.8,但没有被伪装。因此,没有响应从远端返回。

发生这种情况时,/ var / log / pluto.log中的日志显示以下内容

Sep  1 18:51:29.013427: "Tunnel1/2x0" #4: initiating Quick Mode PSK+ENCRYPT+TUNNEL+PFS+UP+IKEV1_ALLOW+IKEV2_ALLOW+SAREF_TRACK+IKE_FRAG_ALLOW+ESN_NO to replace #3 {using i
sakmp#1 msgid:6a19c08b proposal=AES_CBC_128-HMAC_SHA1_96-MODP1024 pfsgroup=MODP1024}
Sep  1 18:51:29.091604: "Tunnel1/2x0" #4: STATE_QUICK_I2: sent QI2,IPsec SA established tunnel mode {ESP/NAT=>0x694e0f34 <0xb094bfa2 xfrm=AES_CBC_128-HMAC_SHA1_96 NATOA=none NATD=<AWS_IP>:4500 DPD=active}
Sep  1 18:54:58.974795: "Tunnel1/1x0" #5: initiating Quick Mode PSK+ENCRYPT+TUNNEL+PFS+UP+IKEV1_ALLOW+IKEV2_ALLOW+SAREF_TRACK+IKE_FRAG_ALLOW+ESN_NO to replace #2 {using isakmp#1 msgid:53ff8204 proposal=AES_CBC_128-HMAC_SHA1_96-MODP1024 pfsgroup=MODP1024}
Sep  1 18:54:59.050329: "Tunnel1/1x0" #5: STATE_QUICK_I2: sent QI2,IPsec SA established tunnel mode {ESP/NAT=>0x0e9d2c4a <0xe1c78e2c xfrm=AES_CBC_128-HMAC_SHA1_96 NATOA=none NATD=<AWS_IP>:4500 DPD=active}

在18:54:59,从AWS子网对8.8.8.8的ping停止获得响应。

什么可能导致这种情况发生?我该如何解决

我还注意到,如果在启动ipsec隧道后创建iptables伪装规则,则该规则将永远不会被兑现,数据包也不会被伪装。我认为这可能有关吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)