网上的教程太多,今天尝试了几个后,配置成功,记录下来,方便以后参考。
一、安装环境
DigitalOcean VPS, $5/mo套餐,512MBMemory,1 CoreProcessor,20GBSSD Disk, 1TBTransfer。昨天选择的是网上推荐的三潘市的机房,浙江电信宽带下速度还可以,但是在浙江移动宽带下速度非常慢,ssh上去都有卡顿,换了新加坡的机房后,网速明显提升。
二、安装说明
使用root登录安装,若非root登录,需在下面的每个命令前添加sudo。以下出现的%YOUR_VPS_IP%都需要用你的VPS公网IP地址来替换(一共有4处)。
安装过程中会询问你是否需要是否用X.509证书来验证IPSec的连接,选择No。
三、安装配置步骤
1. 更新和安装必要的软件
apt-get update && apt-get upgrade && apt-get install openswan xl2tpd ppp lsof
这里没有安装防火墙软件UFW,昨天折腾了一下没有成功。
2. 配置防火墙,允许VPN数据流
iptables -t nat -A POSTROUTING -j SNAT --to-source %YOUR_VPS_IP% -o eth+
这里的%YOUR_VPS_IP%需要用你的VPS IP地址替换。
3. 转发设置
3.1 开启系统IP包转发,并禁用ICP重定向
echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.accept_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_source_route = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" | tee -a /etc/sysctl.conf
echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" | tee -a /etc/sysctl.conf
3.2 将以上设置应用到其它网络接口
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
3.3 应用配置
sysctl -p
3.4 开机自动加载
vi /etc/rc.local
在exit 0前写入以下代码:
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
iptables -t nat -A POSTROUTING -j SNAT --to-source %YOUR_VPS_IP% -o eth+
这里的%YOUR_VPS_IP%需要用你的VPS IP地址替换。
4. 配置Openswan (IPSEC)
备份/etc/ipsec.conf:
mv /etc/ipsec.conf /etc/ipsec.conf.bak
新建/etc/ipsec.conf:
vi /etc/ipsec.conf
写入如下内容:
version 2.0
config setup
dumpdir=/var/run/pluto/
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v6:fd00::/8,%v6:fe80::/10
protostack=netkey
force_keepalive=yes
keep_alive=60
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
ike=aes256-sha1,aes128-sha1,3des-sha1
phase2alg=aes256-sha1,aes128-sha1,3des-sha1
type=transport
left=%YOUR_VPS_IP%
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
dpddelay=10
dpdtimeout=20
dpdaction=clear
这里的left=行的值需要用你的VPS IP地址替换。
5.设置共享密钥Shared Secret,即PSK
vi /etc/ipsec.secrets
在末尾添加如下代码:
%YOUR_VPS_IP% %any: PSK "psk_password"</pre>
这里的%YOUR_VPS_IP%需要用你的VPS IP地址替换
6. 验证IPSEC设置
ipsec verify
忽略第三行 SAref kernel support N/A,倒数第三行 Checking /bin/sh is not /bin/dash WARNING和最后一行的Opportunistic Encryption Support DISABLE,其他OK即可。
如果碰到Two or more interfaces found, checking IP forwarding [FAILED]也没有关系,只要cat /proc/sys/net/ipv4/ip_forward返回结果是1就没事。
7. 配置xl2tpd
备份/etc/xl2tpd/xl2tpd.conf:
mv /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.bak
新建/etc/xl2tpd/xl2tpd.conf:
vi /etc/xl2tpd/xl2tpd.conf
编辑/etc/xl2tpd/xl2tpd.conf, 内容如下:
[global]
ipsec saref = yes
saref refinfo = 30
;debug avp = yes
;debug network = yes
;debug state = yes
;debug tunnel = yes
[lns default]
ip range = 172.16.1.30-172.16.1.100
local ip = 172.16.1.1
refuse pap = yes
require authentication = yes
;ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
8. 配置ppp
在/etc/ppp目录下新建options.xl2tpd文件,
vi /etc/ppp/options.xl2tpd
内容如下:
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
auth
mtu 1200
mru 1000
crtscts
hide-password
modem
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
9. 添加用户
vi /etc/ppp/chap-secrets
一行即为一个用户,依次是用户名、服务、密码、IP限制,如:
# Secrets for authentication using CHAP
# client server secret IP addresses
aaa l2tpd helloworld *
10. 重启相关服务
service ipsec restart
service xl2tpd restart
如果连接上VPN后,然后无法访问某些站点,需要把DNS设置成Google的域名服务器8.8.8.8或8.8.4.4
Windows上的设置很简单。
在Ubuntu12.04下,所有的DNS设置信息保存在/etc/resolv.conf文件中。
但是/etc/resolv.conf内的内容是自动生成的,在系统重启后会被自动覆盖掉。
#Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
设置方法:
首先我们需要创建一个文件/etc/resolvconf/resolv.conf.d/tail:
vi /etc/resolvconf/resolv.conf.d/tail
然后我们在这个文件里写入自己要添加的DNS服务器,格式与以前的/etc/resolv.conf文件一致:
nameserver 8.8.8.8
nameserver 8.8.4.4
接下来我们重启下resolvconf程序,让配置生效:
/etc/init.d/resolvconf restart
再去看看/etc/resolv.conf文件,自己添加的DNS服务器已经写进去了。
评论 在此处输入想要评论的文本。