![如何排除 IPsec 隧道故障(从蜂窝路由器到公共服务器)?](https://linux22.com/image/540378/%E5%A6%82%E4%BD%95%E6%8E%92%E9%99%A4%20IPsec%20%E9%9A%A7%E9%81%93%E6%95%85%E9%9A%9C%EF%BC%88%E4%BB%8E%E8%9C%82%E7%AA%9D%E8%B7%AF%E7%94%B1%E5%99%A8%E5%88%B0%E5%85%AC%E5%85%B1%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%89%EF%BC%9F.png)
我是 IPsec 的新手,正在努力研究一种可能很快会在我们的操作中广泛使用的设置(假设我最终理解了它……)。
蜂窝路由器(netModule 的 blackbox,从其日志消息来看,它似乎运行的是 Linux 和 OpenSwan)将客户站点上的传感器网络与我们的公共服务器连接起来。我们需要能够连接到本地网络,所以我让蜂窝提供商给我一个公共 IP(动态 IP)。他们的设置方式是,公共 IP 只允许 IPsec 流量。
我在我们的 Ubuntu 服务器(运行 Jaunty)上设置了 OpenSwan。这是我的连接配置/etc/ipsec.conf
:
conn gprs-field-devices
left=my.pub.lic.ip
[email protected]
#leftsubnet=192.168.1.129/25
right=%any
[email protected]
#rightsubnet=192.168.1.1/25
#rightnexthop=%defaultroute
auto=add
在路由器上,我只有 Web UI,在其中我进行了以下设置:
- “远程端点”:服务器的公网IP,与上文“左”相同
- “本地网络地址”:192.168.1.1
- “本地网络掩码”:255.255.255.128
- “远程网络地址”:192.168.1.129
- “远程网络掩码”:255.255.255.128
服务器上的 pluto 进程正在监听端口 500 上的连接。显然,它无法打开隧道,因为它不知道客户端的 IP 位于哪个 IP 地址。
我设置了一个密码作为 PSK,@field.econemon.com
并/etc/ipsec.secrets
在路由器中对其进行了配置(似乎不支持证书)。
我的问题是,什么都没发生。路由器只是说,IPsec 已“关闭”。当我将 IP 复制粘贴到ipsec.conf
(表示“正确=”)中,并要求服务器时ipsec auto --up gprs-field-devices
,它只是挂起,直到我按下Ctrl-C
。
我的设置有问题吗?我该如何进一步调试?
我的路由器给出了以下看似相关的日志行,但并没有说明我任何事物:
2 月 21 日 23:08:20 Netbox authpriv.warn pluto[2497]: 从“/etc/ipsec.secrets”加载机密
2 月 21 日 23:08:20 Netbox authpriv.warn pluto[2497]: 从“/etc/ipsec.d/hostkey.secrets”加载机密
2 月 21 日 23:08:20 Netbox authpriv.warn pluto[2497]: 从“/etc/ipsec.d/netbox0.secrets”加载机密
2 月 21 日 23:08:20 Netbox authpriv.warn pluto[2497]:“netbox00”#1:启动主模式
2 月 21 日 23:08:20 Netbox daemon.err ipsec__plutorun: 104 "netbox00" #1: STATE_MAIN_I1: 启动
2 月 21 日 23:08:20 Netbox daemon.err ipsec__plutorun:...无法启动 conn“netbox00”
2 月 21 日 23:08:22 Netbox authpriv.warn pluto[2497]: 来自 188.40.57.4:500 的数据包:忽略信息负载,类型 NO_PROPOSAL_CHOSEN
2 月 21 日 23:08:22 Netbox authpriv.warn pluto[2497]: 来自 188.40.57.4:500 的数据包:已接收并忽略信息消息
2 月 21 日 23:08:28 Netbox user.warn parrot.system_controller[762]: IPSECCTRLR: 隧道 0 已关闭 0 秒
2 月 21 日 23:08:40 Netbox user.warn parrot.system_controller[762]: IPSECCTRLR: 隧道 0 已关闭 10 秒
2 月 21 日 23:08:52 Netbox authpriv.warn pluto[2497]: 来自 188.40.57.4:500 的数据包:忽略信息负载,类型 NO_PROPOSAL_CHOSEN
答案1
一些初步想法:
- leftsubnet、rightsubnet 和 rightnexthop 条目是否被故意注释掉?
- leftsubnet 和 rightsubnet 应该是网络地址,而不是节点地址。
- 左边和右边应该是设备的公网 IP 地址。%any 适用于正确的地址。
- leftid 和 rightid 是 vpn 设备要宣传的。有时这是它们的公共 IP 地址。这取决于设备。
一个好的起点是ipsec.conf 手册页,它提供了一些有关设置的好的信息。
ipsec whack --status
在排除 openswan 故障时也是一个很好的命令。这是它的手册页。