最近通过优惠券买了一个美国的VPS,虽然配置低了点,但是用来做平时网站的备份,或者临时当作离线下载服务器都是很不错的主意!因为国内周知的原因,访问一些国外的网站很受限制,所以想起了用自己的VPS来搭建一个VPN的想法。具体实现如下:
  1. 安装pptpd,这是个VPN服务器端软件
    sudo apt-get install pptpd
  2. 修改文件 /etc/pptpd.conf
    sudo vi /etc/pptpd.conf
    找到# TAG: localip一行,在后面添加以下2行:
    localip 192.168.0.1
    remoteip 192.168.0.234-238,192.168.0.245
  3. 修改文件 /etc/ppp/pptpd-options
    sudo vi /etc/ppp/pptpd-options
    找到 #ms-dns这行,去掉前面的#号,修改成google提供的DNS server或其他DNS:
    ms-dns 8.8.8.8
    ms-dns 8.8.4.4
  4. 修改文件 /etc/ppp/chap-secrets,按一行四列添加账号、服务器名、密码和IP限制。服务器名(默认 写pptpd 即可,务必与 pptpd-options 文件的name一行一样)。如创建一个名为user,密码为userpasswd,不限制登录IP的VPN账号:
    user pptpd userpasswd *
  5. 修改文件 /etc/sysctl.conf,去掉这一行 #net.ipv4.ip_forward=1 的#号,开启ipv4 forward,然后运行命令:
    sudo sysctl –p
    运行后会显示 net.ipv4.ip_forward = 1,就表示修改生效了。
  6. 使用iptables建立一个NAT
    sudo apt-get install iptables
    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
    上面的24表示子网掩码,代表24个1.
    eth0是网卡名字,可以通过命令 ifconfig 查看

为防止重启服务器后iptables丢失,先运行

iptables-save > /etc/iptables.rule

然后修改文件 /etc/network/interfaces ,在eth0/eth1.. 下面加入
pre-up iptables-restore < /etc/iptables.rule
7. 现在应该就搞定了,最后重启 pptpd

sudo /etc/init.d/pptpd restart
  1. 在client端设置连接VPN进行测试,client是Ubuntu的话请看这里
    测试是否可以连接到VPN server:
    ping server_IP
    不能的话,问题应该出在前4步。
    测试是否可以连接到外网:(任何其他外网IP都行)
    ping 8.8.8.8
    不能的话,问题应该出在第5-6步,看看是否正确设置了 ipv4 forward
    测试是否可以解析DNS:
    nslookup google.com