显示标签为“VPN”的博文。显示所有博文
显示标签为“VPN”的博文。显示所有博文

2012年2月7日星期二

Openswan的证书认证

Openswan支持证书认证的IPSec。用OpenSSL生成CA、用户证书,然后在Windows下导入证书后连接,在服务器日志/var/log/secure中发现错误:
could not open host cert with nick name '/etc/pki/CA/private/cakey.pem' in NSS DB
Google搜索发现要把证书导入到NSS数据库中。这是Openswan 2.6.23之后改变的,要用Mozilla的Network Seurity Services管理证书。看了openswan-doc提供的README.nss,发现这个变动又引入了一堆新东西,而且不是那么容易搞定的,就暂时放弃了,还是用Preshared Key就够了。

2012年1月20日星期五

VPN故障排除

在Linux上配置了L2TP/IPSec,用 Android手机连上去,不能访问因特网。后来想到服务器内核的ip_forward没有打开,这样手机的请求在ppp0上可以看到,但是内核不会转发 给默认网关网卡。开了后,在服务器的默认网关网卡上可捕捉到手机对Internet的访问,但是收不到回复包。连DNS都不通,先搞定这个。

直接在服务器上查询dig @8.8.8.8 ebay.com是成功的:
11:11:26.994869 IP 10.146.18.213.50984 > 8.8.8.8.domain: 17471+ A? ebay.com. (26)
11:11:26.997250 IP 8.8.8.8.domain > 10.146.18.213.50984: 17471 4/0/0 A 66.135.205.13, A 66.135.205.14, A 66.211.160.87, A 66.211.160.88 (90)
该包的源地址10.146.18.213eth0的inet地址。而手机上的DNS查询,在服务器eth0抓的包如下:
11:16:11.133115 IP 192.168.1.128.58100 > 8.8.8.8.domain: 57041+ A? www.ebay.com. (30) 
eth0上出发的包,地址却是VPN上客户端的地址192.168.1.128,这应该是失败的原因,这样的包到都到不了DNS服务器(内核会丢弃吗?)。

后来才想到要做SNAT的,要让VPN用户访问外网这是必须的一步:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.146.18.213
以后一定要记得了。虽然忘记了这一步,但是通过冷静分析,通过抓包搞清了问题的原因。

2010年12月31日星期五

折腾VPS

1)VPN
在RapidXen买的VPS,PPTP和OpenVPN的转发都有问题。就是在这个诊断方法中的第6步挂了。从客户机ping某个因特网主机,然后一切都正常,但是从该主机应答的包回不来。具体就是开VPN的情况下,ping g.cn,在VPN服务器端抓包是如下结果:
# tcpdump -n -i tun0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 96 bytes
19:56:47.576331 IP 10.8.0.10 > 203.208.39.99: ICMP echo request, id 5592, seq 18, length 64
19:56:48.576924 IP 10.8.0.10 > 203.208.39.99: ICMP echo request, id 5592, seq 19, length 64
19:56:49.576452 IP 10.8.0.10 > 203.208.39.99: ICMP echo request, id 5592, seq 20, length 64
19:56:50.575835 IP 10.8.0.10 > 203.208.39.99: ICMP echo request, id 5592, seq 21, length 64
可以看到,只有echo request却没有从g.cn的echo reply。
所有的数据包都回不来,导致VPN没法用来翻墙了。

2)VPS
在VPS的客服里面提问,他们说可能是内核有问题,让我用PV-GRUB后使用发行版的内核。用PV-GRUB可以在Xen虚拟机中使用发行版的内核,而不是Xen提供的内核。

话说RapidXen的支持实在是太烂了,管理界面改成PV-GRUB,从操作界面里面的Send shutdown signal再Start the VPS不行,要用Immediately stop VPS才能在提供的内核和PV-GRUB之间成功切换。整个Web管理应用功能非常之简陋,而对VPS的配置也没有任何文档积累,到服务商的支持IRC里面问,也半天没人说话。

最后是根据Linode的文档,用上了Ubuntu 10.04 LTS(Lucid Lynx)自带的内核。但VPN的问题仍然没有消失。没办法啊,只好用SSH了,反正SSH也比较方便。

更新:2011年1月2日。客服回复说在library里面有PV-GRUB的设置文档,让我才知道他们也有知识库,不过里面只有3篇文章。

2010年10月5日星期二

VPN的流量转发

开的PPTP一直能连上,但是连上后一个包也收不到。知道是防火墙的路由设置有问题。这几天终于搞定了,其实和OpenVPN的文档里面介绍的方法一样,就是加上类似下面的防火墙规则:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-s后面的是VPN内网地址。还是以前任晓磊说的对,就一个MASQUERADE设置对就可以转发了。