在Linode上安装VPN
最近美国的Office准备修改VPN的设置,1、用OpenVPN取代现在的PPTP VPN.
2、限制VPN对Internet的访问,今后通过VPN只能访问内部资源。
对我的影响则是:
1、不能用手机连入VPN了,iPhone不支持OpenVPN。
2、不能用公司VPN了。
不得以想到自己在Linode的VPS,通常只用来做一些测试和host一些Imified的Bot,每月200G的流量大多浪费了,不如干脆自己建一个VPN好了。
因为单纯自用,不需要什么复杂的配置,很简单的就搞定了,步骤如下:
1、安装PPTP服务,因为系统是Ubuntu,所以简单的apt-get就可以了。
sudo apt-get install pptpd -y
2、修改/etc/pptpd.conf
这个配置文件内容很简单,主要需要修改的就是文件末尾的localip和remoteip
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
remoteip指的是将来分配给VPN Client的IP,localip则是将来VPN Client看到的远端地址。VPN Client建立VPN连接后:
在VPN Client上ifconfig看到的:
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1444
inet 192.168.0.234 --> 192.168.0.1 netmask 0xffffff00
在Linode上ifconfig看到的:
ppp0Link encap:Point-to-Point Protocol
inet addr:192.168.0.1 P-t-P:192.168.0.234 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1496 Metric:1
RX packets:385 errors:0 dropped:0 overruns:0 frame:0
TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:56584 (56.5 KB) TX bytes:91628 (91.6 KB)
3、修改/etc/ppp/chap-secrets,这个文件名中保存了访问VPN的用户名密码,格式如下:
username pptpd password *
Username和password都是明文;pptpd代表服务名,和/etc/ppp/options.pptpd里的name对应,通常默认值就是pptpd;最后一项是分配这个用户的ip,*代表随机分配。
4、修改/etc/ppp/options.pptpd,大多数配置项都不需要修改,除了DNS设置:
#ms-dns x.x.x.x
#ms-dns x.x.x.x
去掉前面的#注释符号,修改地址为真正有效的DNS服务器地址。VPN Client建立VPN连接后,就会使用这里指定的DNS服务器来解析域名。如果这里不指定,就需要在每个VPN Client上指定。
如果系统是Ubuntu,还需要在这个文件中指定log文件的位置,否则就需要在/etc/pptpd.conf中注释掉logwtmp以彻底关闭log。
logfile /var/log/pptpd.log
5、重启PPTP
/etc/init.d/pptpd restart
通常这样VPN就可以工作,Client已经可以建立到Server的VPN连接,并且访问Server的资源了。但是因为没有建立从VPN到Internet的路由,所以Client是无法通过VPN访问Internet,需要通过设置路由规则来解决。
6、开启IP转发
修改/etc/sysctl.conf,打开net.ipv4.ip_forward=1
执行sysctl -p使配置生效。
7、安装iptables,通过iptables设置转发规则简单,
apt-get intall iptables
8、添加转发规则
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
192.168.0.0/24 对应remoteip的网段
9、保存iptables转发规则
由于iptables添加的转发规则在系统或网络设备重启后就会失效,所以需要保存iptables的配置,并使它能在重启后恢复。
保存转发规则到/etc/iptables-rules
iptables-save > /etc/iptables-rules
创建新文件/etc/network/if-up.d/iptables
#!/bin/sh
iptables-restore < /etc/iptables-rules
chmod +x /etc/network/if-up.d/iptables
这样每次网卡启动时都会重新从iptables-rules读取iptables的转发规则
页:
[1]