平时自己翻墙都是使用ssh-D,可惜手机上不好用,于是决定在我日本的VPS上装个PPTPD,linode的vps还是满好的,假设pptp也很方便,网上的教程有点老,iptable部分遇到一些问题,下面就说说架设的步骤:
一、安装
1、检查环境是否支持(linode一般没有问题的)
如下执行zgrep MPPE /proc/config.gz和cat /dev/net/tun,
看看结果是不是和下面一样,一样就表示环境支持
[root@li399-18 ~]# zgrep MPPE /proc/config.gz CONFIG_PPP_MPPE=y [root@li399-18 ~]# cat /dev/net/tun cat: /dev/net/tun: File descriptor in bad state
2、安装所需服务:iptable、ppp,这个可以使用yum安装:
[root@li399-18 ~]# yum install ppp iptable
3、安装pptp,这个没法用yum安装,需要到sourceforge下载,最新版是1.3.4,然后用rpm安装
64位系统下载:http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.x86_64.rpm
32位系统下载:http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
以64系统为例
[root@li399-18 ~]# rpm -Uvh pptpd-1.3.4-2.rhel5.x86_64.rpm
二、配置
1、配置pptp
打开/etc/pptpd.conf,将96行和97行的井号去掉,使用默认的ip配置即可
96 localip 192.168.0.1 97 remoteip 192.168.0.234-238,192.168.0.245
打开/etc/ppp/options.pptpd,配置dns地址,网上都建议用google的dns
66 #ms-dns 10.0.0.1 67 #ms-dns 10.0.0.2 68 ms-dns 8.8.8.8 69 ms-dns 8.8.4.4
打开/etc/ppp/chap-secrets,配置pptp的用户名和密码
这个文件开始是空的,直接在最后添加“用户名 pptpd 密码 ip地址”,一般天朝都用的是非固定ip,用*号代替
user pptpd password *
2、修改内核配置,支持网络转发
打开/etc/sysctl.conf,启用ipv4的ip_forward,同时关闭ipv4的tcp_syncookies
net.ipv4.ip_forward=1 #net.ipv4.tcp_syncookies = 1
修改后需要执行sysctl -p命令,让修改生效
[root@li399-18 ~]# sysctl -p
3、添加iptables转发规则
假设你的机器外网ip为30.30.30.30,可以用ifconfig查一下
[root@li399-18 ~]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 30.30.30.30
保存下
[root@li399-18 ~]# service iptables save Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
4、开机启动服务
[root@li399-18 ~]# chkconfig pptpd on [root@li399-18 ~]# chkconfig iptables on
5、修复iptables错误
如果现在启动pptpd,在启动iptables会遇到两个failed,如下
[root@li399-18 ~]# service iptables start Flushing firewall rules: [ OK ] Setting chains to policy ACCEPT: security raw nat mangle fi[FAILED] Unloading iptables modules: [ OK ] Applying iptables firewall rules: [ OK ] Loading additional iptables modules: ip_conntrack_netbios_n[FAILED]
这两个问题主要是iptables版本和内核对不上导致的,不知道linode是不是修改过内核
第一个failed可以参考这里
第二个failed可以参考这里
第一个问题的修复需要在/etc/init.d/iptables,找到set_policy函数,添加一个security选项,如下123-128行
120 for i in $tables; do 121 echo -n "$i " 122 case "$i" in 123 security) 124 $IPTABLES -t security -P INPUT $policy \ 125 && $IPTABLES -t security -P OUTPUT $policy \ 126 && $IPTABLES -t security -P FORWARD $policy \ 127 || let ret+=1 128 ;; 129 raw) 130 $IPTABLES -t raw -P PREROUTING $policy \ 131 && $IPTABLES -t raw -P OUTPUT $policy \ 132 || let ret+=1 133 ;;
第二个问题的修复需要修改/etc/sysconfig/iptables-config配置,关闭ip_conntrack_netbios_ns模块,如下
IPTABLES_MODULES="" IPTABLES_MODULES_UNLOAD="no"
6、启动服务
[root@li399-18 ~]# service pptpd start Starting pptpd: [ OK ] [root@li399-18 ~]# service iptables start Flushing firewall rules: [ OK ] Setting chains to policy ACCEPT: security raw nat mangle fi[ OK ] Unloading iptables modules: [ OK ] Applying iptables firewall rules: [ OK ]
到这里,所有的东西就架设完成了。原文地址http://blog.zquan.me/?p=559