CentOS搭建L2TP

L2TP是一种工业标准的Internet隧道协议,可做事情有很多如翻墙访问外网vpn、做服务器代理、加速器等等。

L2TP是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处,比如PPTP要求网络为IP网络,L2TP要求面向数据包的点对点连接;PPTP使用单一隧道,L2TP使用多隧道;L2TP提供包头压缩、隧道验证,而PPTP不支持。

MAC最新系统默认已经不支持pptp协议,,所以配置l2tp较为合适。

环境

CentOS 7.6 64位 香港服务器(如果想访问外网,必须购买一个可以访问外网的服务器,咱国内地服务器是不能访问外网的)

安装配置

一、解决依赖

1. 开启tun

cat /dev/net/tun

(1) 如果返回如下表名已经开启

cat: /dev/net/tun: File descriptor in bad state

(2) 如果返回

The TUN device is not available You need to enable TUN before running this script

则,执行

cd /dev
mkdir net
mknod net/tun c 10 200
chmod 0666 net/tun

2. 安装依赖

yum install -y epel-release libreswan

3. 安装L2TP

有两个软件支持L2TP协议,一个是xl2tpd,另一个选择是StrongSwan。

yum install -y xl2tpd

二、配置

1. Kernel配置/etc/sysctl.conf

vm.swappiness = 0
kernel.sysrq = 1

net.ipv4.neigh.default.gc_stale_time = 120

# see details in https://help.aliyun.com/knowledge_detail/39428.html
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.accept_source_route = 0

# see details in https://help.aliyun.com/knowledge_detail/41334.html
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_slow_start_after_idle = 0

net.ipv4.ip_forward=1

保存修改

sysctl -p

2. 配置IPsec

(1) 配置加密链接

IPsec可对流量进行加密,保护VPN通信安全。

vi /etc/ipsec.d/l2tp_ipsec.conf

保存内容如下:

conn L2TP-PSK-NAT
     rightsubnet=0.0.0.0/0
     also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
     authby=secret
     pfs=no
     auto=add
     keyingtries=3
     dpddelay=30
     dpdtimeout=120
     dpdaction=clear
     rekey=no
     ikelifetime=8h
     keylife=1h
     type=transport
     left=本机的外网地址
     leftprotoport=17/1701
     right=%any
     rightprotoport=17/%any

配置加密链接2.(1)这一步一定要用CLI命令行模式不然后边步骤有可能报错

(2). 配置PSK共享密钥

vi /etc/ipsec.secrets

添加

: PSK "123456789"

运行检查

ipsec setup start
ipsec verify

可能会出现类似如下情况:

Checking rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/ens160/rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/ens192/rp_filter [ENABLED]

这是内核参数没有生效,直接依次手动打开这些文件,将 1 改为 0,然后重新执行检查,输出如下内容则OK。

(3) 启动IPsec

systemctl enable ipsec

3. 配置xl2tpd

(1) 备份配置文件

cp /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.bak

(2) 打开配置文件/etc/xl2tpd/xl2tpd.conf

注意local ip就是服务器的内网地址,ip range网段随意写

[lns default]
ip range = 192.168.1.200-192.168.1.222
local ip = 172.16.2.100

此外,在同文件中需要注意PPP的配置文件地址

pppoptfile = /etc/ppp/options.xl2tpd

4. 配置PPP

(1) 备份配置文件

cp /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.bak

(2) 打开配置文件/etc/ppp/options.xl2tpd

主要修改dns服务器:

ms-dns  8.8.8.8
ms-dns  8.8.4.4
ms-dns  4.2.2.4

如下:

name xl2tpd
ipcp-accept-local
ipcp-accept-remote

# ms-dns  192.168.1.1
# ms-dns  192.168.1.3
ms-dns  8.8.8.8
ms-dns  4.2.2.4
ms-dns  8.8.4.4

# ms-wins 192.168.1.2
# ms-wins 192.168.1.4

#noccp
auth
#obsolete: crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
#obsolete: lock
proxyarp
connect-delay 5000
refuse-pap
refuse-mschap
refuse-mschap-v2
persist
logfile /var/log/xl2tpd.log

(3). 设置用户名和密码 /etc/ppp/chap-secrets

# client        server  secret                  IP addresses
用户名 * 密码 *

注意用户名前不要有空格

5. 启动xl2tpd

systemctl start xl2tpd
systemctl enable xl2tpd
systemctl status xl2tpd

6. 配置防火墙

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --permanent --add-rich-rule='rule protocol value="ah" accept'
firewall-cmd --permanent --add-port=1701/udp
firewall-cmd --permanent --add-port=500/udp
firewall-cmd --permanent --add-port=4500/udp
firewall-cmd --permanent --add-service="ipsec"
firewall-cmd --reload

注意开通UDP协议端口,而不是TCP。

7.win10电脑连接vpn

以太网->更改适配器选项->选择vpn右键属性->安全->勾选以下按钮

百度搜索:”ip”

试一下YouTube

8.手机因机而异,搜一下自己手机如何连接vpn

okk,成就感还是有滴!!!

8 评论
内联反馈
查看所有评论

搭建好了连接不上,net-tools也没有出现对应的端口出现,服务运行都显示正常,什么原因呢?

请问博主windows这里显示“已连接”,没有报错,但是打开浏览器查ip发现是内地的,而且上不了外网,这种情况是什么原因呢?