这是个很奇怪的事情,应聘了一家搞 CDN 的公司,结果上去看了一下根本不对路。就立刻辞了,但是发现它给员工开的 L2TP VPN 确实非常好用。
于是就自己也搭一个,方便自用。下面记录一下安装过程,环境是CentOS 7
一、装L2TP
1# yum install epel-release
2# yum install xl2tpd libreswan
二、修改核心参数
1# vi /etc/sysctl.conf
2
3vm.swappiness = 0
4net.ipv4.neigh.default.gc_stale_time=120
5net.ipv4.conf.all.rp_filter=0
6net.ipv4.conf.default.rp_filter=0
7net.ipv4.conf.default.arp_announce = 2
8net.ipv4.conf.all.arp_announce=2
9net.ipv4.tcp_max_tw_buckets = 5000
10net.ipv4.tcp_syncookies = 1
11net.ipv4.tcp_max_syn_backlog = 1024
12net.ipv4.tcp_synack_retries = 2
13net.ipv4.conf.lo.arp_announce=2
14net.ipv4.ip_forward = 1
15net.ipv4.conf.default.accept_redirects = 0
16net.ipv4.conf.default.send_redirects = 0
17net.ipv4.conf.default.accept_source_route = 0
18
19# sysctl -p
三、配置 IPSEC
1# vi /etc/ipsec.d/l2tp_psk.conf
2
3conn L2TP-PSK-NAT
4 rightsubnet=vhost:%priv
5 also=L2TP-PSK-noNAT
6conn L2TP-PSK-noNAT
7 authby=secret
8 pfs=no
9 auto=add
10 keyingtries=3
11 dpddelay=30
12 dpdtimeout=120
13 dpdaction=clear
14 rekey=no
15 ikelifetime=8h
16 keylife=1h
17 type=transport
18 left=192.168.10.232
19 leftprotoport=17/1701
20 right=%any
21 rightprotoport=17/%any
注意上面的 left=192.168.10.232,这是服务器的ip地址,要更换为自己服务器的地址(如果在防火墙后,写内网地址,非映射后的公网IP)
然后修改密钥,之后建立L2TP的 iphone 连接时会用到:
1# vim /etc/ipsec.secrets
2
3192.168.10.232 %any: PSK "123456789"
验证一下:
1# ipsec setup start
2
3# ipsec verify
看到上面两行红字不要慌张,Ignore,忽略掉即可。是内核特性中的reverse path filter特性,没关系。
然后让 ipsec 自启动
1# systemctl enable ipsec
四、配置xl2tpd
1# 先备份
2# mv /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.old
3
4# vim /etc/xl2tpd/xl2tpd.conf
5[global]
6listen-addr = 192.168.10.232
7ipsec saref = yes
8[lns default]
9ip range = 192.168.100.128-192.168.100.254
10local ip = 192.168.100.99
11require chap = yes
12refuse pap = yes
13require authentication = yes
14name = LinuxVPNserver
15ppp debug = yes
16pppoptfile = /etc/ppp/options.xl2tpd
17length bit = yes
注意更换上面 192.168.10.232 的服务器ip地址,同时记住name=LinuxVPNserver
1# 先备份
2# mv /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.old
3
4# vim /etc/ppp/options.xl2tpd
5ipcp-accept-local
6ipcp-accept-remote
7ms-dns 8.8.8.8
8ms-dns 4.2.2.4
9noccp
10#noauth
11crtscts
12idle 1800
13mtu 1410
14mru 1410
15nodefaultroute
16debug
17lock
18proxyarp
19connect-delay 5000
最后编辑用户名和密码
1vim /etc/ppp/chap-secrets
2
3# Secrets for authentication using CHAP
4# client server secret IP addresses
5test LinuxVPNserver test *
注意格式,第一列是用户名,第二列是上面xl2tpd.conf中记住的name名,第三列是密码,第四列是获取到的ip地址
然后启动
1# systemctl start xl2tpd
2# systemctl enable xl2tpd
3# systemctl status xl2tpd
五、配置防火墙
1iptables -A INPUT -p gre -j ACCEPT
2iptables -A OUTPUT -p gre -j ACCEPT
3iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
4iptables -A FORWARD -s 192.168.100.0/24 -j ACCEPT
5iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE
注意上面的eth0,根据服务器的具体情况进行修改
然后这样就完成了。
六、配置iphone手机
配置好服务器ip,账户,密码以及密钥就可以了。