Android with root Git for version control Lircd with Raspberry Pi for IR receiver and sender Tips for Windows Depolying your own password management tool -- KeeWeb Depoly your flask app into Heroku Fix shit IE code manually ISBN to Book Category by Scraping DangDang A Generic Makefile for C/C++ Program Configure Raspberry pi Remove watermark with PyPDF2 tips for docker Anaconda+TensorFlow+CUDA Snippets Configure Remote Mathematica Kernel Build your own ngrok server Access Array SSL VPN 使用Rstudio制作html5幻灯片 tips for Mac OS X system Tips for ipython notebook 配置Ubuntu server + Openbox (Obuntu) tips for Vimperator tips for Vim 安装CUDA My First Jekyll Blog rsync常见选项 在Linux中读取Ipod touch的文件 tip for texmacs 在VPS上建站的一些tip Gnuplot绘图札记 Samba系统和autofs自动挂载 Linux中alsamixer声卡无法录音 搭建自己的RSS订阅器——Tiny Tiny RSS Grub2引导安装Ubuntu awk tips 将Ubuntu系统装入U盘 The Great Rtorrent 编译GCC 再这样剁手!!!该死的libgd 使用ulimit进行资源限制 使用SSH代理上IPV6 使用RCurl抓取网页数据 修复Ubuntu Grub记 openbox中的文件关联 在Ubuntu 12.04下编译qtiplot 处理BCM4312网卡驱动纪实 配置我的Ubuntu Server记 Cygwin杂记 Linux 使普通用户具有以超级权限执行脚本 让firefox自定义地处理文件类型 WordPress优秀主题及插件 在phpcloud上搭建wordpress UBUNTU下用pptpd做VPN server ubuntu升级内核过后的一些问题 安装telnet服务 kubuntu札记 64位kubuntu札记 统计软件R Virtualbox stardict星际译王 Ubuntu重装windows系统后的grub引导修复 SSH服务及花生壳域名解析 采用cbp2make工具由code::blocks工程创建makefile文件 UBUNTU 札记

UBUNTU下用pptpd做VPN server

2012年09月07日

悲催的学校在寝室开放了学校的无线WIFI,结果又屏蔽了外网,只能上校园网。难不倒Linuxer!!!果断在办公室UBUNTU12.04上装VPN server来共享网络,因为办公室算是在学校内部,不过这样的话办公室的电脑就不能关了。

服务器端

  1. 安装pptpd

    $sudo apt-get install pptpd

  2. 编辑文件 /etc/pptpd.conf,取消以下内容中的文件注释(也就是去掉语句前面的#号)

    option /etc/ppp/pptpd-options debug #调试好了过后这个应该可以不用打开,这是输出日志的,日志在/var/log/syslog里 logwtmp localip 192.168.1.1 #这个IP是自己自定义的主机IP,就好像局域网内路由器IP一样 remoteip 192.168.1.100-102 #表示可以分配给客户端的IP范围,这里我只打开了3个地址,注意主机IP和客户端IP应该在同一网段内

  3. 编辑文件 /etc/ppp/pptpd-options

    name pptpd #服务器名称,默认为pptpd # 采用mschap-v2协议及mppe-128加密 refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 # 给客户端分配的DNS,和服务器主机一样就行 ms-dns 202.120.80.2 ms-dns 202.120.80.67

    nodefaultroute lock nobsdcomp

  4. 编辑文件 /etc/ppp/chap-secrets

    这个文件是存储VPN客户端用户名和密码的地方,非常抱歉这个是明文存储的,pptpd的安全性不是很好啊。

     #  client用户名    server服务器名    secret密码    IP 允许的addresses客户端IP
           nick             pptpd           IamSecret          * #任意IP均可
    
  5. 接下来就是进行IP转发设置等

    编辑 /etc/sysctl.conf,找到以下内容取消注释以开启数据包转发

     net.ipv4.ip-forward=1
    

    保存后在终端中运行 sudo sysctl -p 使配置生效

    编辑/etc/default/ufw,找到以下内容更改以打开数据包转发防火墙

     DEFAULT_FORWARD_POLICY="ACCEPT"
    

    保存后打开服务器端口

     $sudo ufw allow 1723/tcp #打开TCP1723端口
     $sudo ufw allow 47/tcp #打开TCP47端口
    

    如果服务器是在路由器下面还需要在路由器打开这个端口的映射

    然后添加iptables规则:

     $iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT  #24表示子网掩码,代表24个1.
     $iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
    

    为防止重启后丢失规则,保存规则到文件(注意权限问题)

     $sudo iptables-save |sudo tee /etc/iptables-rules
    

    编辑/etc/network/interfaces 添加以下语句到工作的界面上(如eth0等)

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

    如果iptables经常变化,可以在interface中再次添加以下语句以实现每次变化时备份规则

     $post-down iptables-save > /etc/iptables-rules
    
  6. 重启

     sudo service pptpd restart #重启pptpd服务 
     sudo service ufw restart #重启防火墙 
     sudo reboot #重启计算机
    

用户端

在客户端,可以通过如下方式进行连接

首先新建一个VPN账户:

sudo pptpsetup --create vpnname --server ip --username test --password test --encrypt --start

start参数表示立即开始这个拨号,password密码是可选的。以后要用时:

sudo pon vpnname
sudo poff#断开
plog#查看状态
sudo pptpsetup --delete vpnname#删除保存的会话

开启VPN后还需要添加一条路由信息

sudo route add default dev ppp0