> Ubuntu >

Ubuntu VPS上的pptpd设置NAT转发的问题


在Ubuntu上用pptpd建立PPTP VPN Server这个话题已经被人写烂了,但是由于各家VPS的配置有很大的区别,以致于通过VPN上网这一条的实现方式各家众说纷纭。

基本的pptp的配置简单带过,有问题的话可以留言或者写邮件给我:

apt-get install pptpd

/etc/pptpd.conf文件中主要就是将最后两行──localip和remoteip的注释去掉。建议将localip修改为一个不常见网段的IP地址,如:10.100.55.1神马的。相应的将remoteip改为与之同网段的一段IP地址,如:10.100.55.100-200。别太小气,多给点IP地址,这些IP地址就是用来分配给VPN拨入者的地址池,在这里虽然不需要你设定子网掩码,但你还是应该按照规律来进行设置。

/etc/ppp/pptpd-options中的ms-dns的注释去掉,并将DNS服务器设置为可靠的DNS服务提供者。如果服务器在中国大陆之外,建议使用8.8.8.8、8.8.4.4 etc.。

帐户配置在/etc/ppp/chap-secrets中,需要注意的是密码是明码的。只要追加如下的行即可:

"用户名" * "密码" *

以上我们完成了基本的pptpd的配置,只要这些配置生效后用户就可以进行VPN拨号,但拨号后只能访问服务器不能访问Internet。所以我们要继续如下的步骤:

apt-get install iptables

将/etc/sysctl.conf文件中的net.ipv4.ip_forward=1这行的注释去掉,并执行以下命令使得配置立即生效:

sysctl -p

向iptables添加NAT规则(这是关键点,如果你看别人的文章搞不定这件事的话就执行我提供的指令吧):

iptables -t nat -A POSTROUTING -o venet0 -s 10.100.55.0/24 -j SNAT --to-source 000.000.000.000

希望你还记得10.100.55.0,上文中提到过,这是分配给VPN拨入者的IP地址段。/24么就是3*8=24的意思啰~。000.000.000.000是你的VPS的公开IP地址。特别需要注意的是venet0,这个代表端口。你可以ifconfig一下,看看VPS供应商给你的IP地址到底在哪个端口上(有的是eth0有的是venet0……),反正在哪个端口上就写哪个。

保存iptables配置:

iptables-save > /etc/iptables-rules

上面的命令只是将当前配置保存到一个文件中,并不起什么实际作用。最重要的是编辑/etc/network/interface这个文件。找到venet0这段(请注意结合上面的iptables的命令,你在那条命令中配置的哪个端口,这里就要修改哪个端口那段配置),在该段的最后添加:

pre-up iptables-restore < /etc/iptables-rules

这样每次该端口启动之后,iptables的配置就会被自动加载。

至此为止所有配置完成,老兔建议重启之后再进行配置。这样不但可以验证当前的配置状况,还能确认重启后iptables的配置被正确加载。


(责任编辑:IT)