本文详细介绍VPN On OpenBSD 配置小记
而运行isakmpd就比较复杂了,他在静态的网关和需要拨号连接的网关上工作方法不同。对于静态网关,只需要修改/etc/rc.conf成'isakmpd_flags=""',然后isakmpd就可以每次重起都自动运行了。但是在拨号连接的网关上,这种方法就会毫无用处,因为他刚刚重起过以后并没有Internet连接。这时候,如果我们需要每次建立PPP连接以后都自动运行isakmpd、取消PPP连接的时候也同时关闭isakmpd。可以在/etc/ppp.linkup和/etc/ppp.linkdown里面加入一行字。在/etc/ppp.linkup里面加入
MYADDR:
!bg isakmpd
而在/etc/ppp.linkdown里面加入
MYADDR:
!bg /etc/ppp/killisakmpd
这里killisakmpd是一个shell脚本,内容如下:
#!/bin/sh
kill `cat /var/run/isakmpd.pid`
这样,就可以完全将VPN的配置运行自动化了,很方便。
4.测试和调试
如果读者的VPN第一次没有正常运行,那么你就不得不调试。如果isakmpd的一些功能没有正确配置、也就是虽然能够设立路由,但是没能加密所有的密钥,那这将是极为危险的。
首先,最好先ping一下对方LAN的机器。上面已经讲过。如果工作不正常,那么在Gateway1上:
tcpdump -i [网络外部接口名称,比如fxp1, tun0 等等] host [Gateway2的IP]
这条命令可以显示所有从 Gateway2到Gateway1的流量。理论上应该只有加密的ping命令被传送,就像这样:
16:10:07.543323 esp d7-lp-23.dial-up.net > gateway.whatever.com spi
0xEFBF34AA seq 146 len 132
16:10:07.712902 esp gateway.whatever.com spi > d7-lp-23.dial-up.net
0xB17F45A2 seq 146 len 132
这表示进入的所有信息都是以esp方式进行加密的,而且你的VPN正常工作。如果你没有看到任何有关ICMP的信息,你的Internet连接还是未被VPN加密的。
当笔者的VPN没有正常工作的时候,却也得到了以上信息,但是没有ping的回答,表示加密的信息根本没有在对方Gateway上处理。原因很简单:对方Gateway运行的是OpenBSD 2.8系统!
5. 与NAT和防火墙(ipf)的交互性
当以上所有工作都完成,并在没有Ipfilter的情况下正常工作了,笔者就打开了NAT和ipf。没有对标准的NAT设置作任何修改。然后在/etc/ipf.rules加上几行用来允许加密信息可以通过网关
# VPN: allow any traffic on the ISAKMP port
pass in on fxp1 proto udp from any port = 500 to 25.50.100.200 port = 500
pass out on fxp1 proto udp from 25.50.100.200 port = 500 to any port = 500
# VPN: allow all traffic in ESP form
pass in proto esp from any to 25.50.100.200
pass out proto esp from 25.50.100.200 to any
这些规则会允许所有通过isakmpd进行的的密钥交换和后来的加密esp过程能够正常进行。
6. 结论
从以上的记述来讲,对于一个对网络、网关、NAT、ipf、ppp有基本认识的读者,配置一个VPN不是很难的事情。当设定好一切,还可以尝试运用各种不同的加密和认证手段。
作者:刘稳 责编:豆豆技术应用