over IPsec CentOS8服务器搭建L2TP服务器操作指南

上次发了服务器上公网的文章,当时L2TP拨号用的是网络上的解决方案,也就是现成的脚本,一跑就OK了 。像这样:

over IPsec CentOS8服务器搭建L2TP服务器操作指南

文章插图
 
输入几个关键信息,脚本就自动执行完成了 。我看了一下,脚本一共810行,功能很强大,系统方面支持centos 6+、Debian 7+、Ubuntu 12+ 。
over IPsec CentOS8服务器搭建L2TP服务器操作指南

文章插图
 
但实际上有个隐藏的问题 。上次部署用的是CentOS 7的系统,一切正常,重新部署之后腾讯云的CentOS仅支持8.3的镜像,安装频繁报错 。
over IPsec CentOS8服务器搭建L2TP服务器操作指南

文章插图
 
查看脚本内容发现,此脚本仅支持CentOS的6和7两个版本,在8上,因为软件名称和操作命令变更,无法正常安装 。
既然这样,那就只能拆解代码,自己安装了 。
首先找到脚本中需要的软件,或者找到执行脚本时不能正常使用的命令,用yum provides来查找命令,最后整理一下,需要安装以下软件:
yum install -y make gcc gmp-devel xmlto bison flex libpcap lsof vim man xl2tpd libreswan
修改ipsec配置文件
vim /etc/ipsec.conf
在config setup中添加以下命令,允许穿透nat建立l2tp连接 。
nat_traversal=yes
over IPsec CentOS8服务器搭建L2TP服务器操作指南

文章插图
 
上图中最后一行可以看到include /etc/ipsec.d/*.conf这行代码,所以需要在/etc/ipsec.d/目录下创建IPsec与L2TP服务关联的配置文件 。
vim /etc/ipsec.d/l2tp_psk.conf
文件复制以下内容,仅需修改left参数为公网网卡的IP地址 。
conn L2TP-PSK-NATrightsubnet=vhost:%privalso=L2TP-PSK-noNATconn L2TP-PSK-noNATauthby=secretpfs=noauto=addkeyingtries=3dpddelay=30dpdtimeout=120dpdaction=clearrekey=noikelifetime=8hkeylife=1htype=transportleft=10.0.8.12leftprotoport=17/1701right=%anyrightprotoport=17/%any
over IPsec CentOS8服务器搭建L2TP服务器操作指南

文章插图
 
在/etc/ipsec.d/目录下创建保存预共享密钥的文件,名字可自定义,扩展名为.secrets 。
vim /etc/ipsec.d/ipsec.secrets
预共享密钥参照如下格式填写,其中,IP地址为网卡的IP地址,双引号中为预共享密钥,请自行设置 。(注意字段之间用空格或者tab隔开,否则检查会报错)
10.0.8.12 %any: PSK "test123"修改sysctl的内核支持文件 。
vim /etc/sysctl.conf
可以直接用下面的内容替换掉原来的文件 。
vm.swAppiness = 0net.ipv4.ip_forward = 1net.ipv4.conf.all.arp_announce=2net.ipv4.conf.all.promote_secondaries = 1net.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.accept_redirects = 0net.ipv4.conf.default.accept_source_route = 0net.ipv4.conf.default.arp_announce = 2net.ipv4.conf.default.promote_secondaries = 1net.ipv4.conf.default.rp_filter=0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.lo.arp_announce=2net.ipv4.neigh.default.gc_thresh3 = 4096net.ipv6.neigh.default.gc_thresh3 = 4096net.ipv4.neigh.default.gc_stale_time=120net.ipv4.tcp_max_syn_backlog = 1024net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syncookies = 1net.ipv6.conf.all.disable_ipv6=0net.ipv6.conf.default.disable_ipv6=0net.ipv6.conf.lo.disable_ipv6=0kernel.core_uses_pid = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.printk = 5kernel.shmmax = 68719476736kernel.softlockup_panic = 1kernel.sysrq = 1修改完保存退出,执行以下命令重新加载配置文件使配置生效 。
sysctl -p
重启IPsec服务,并检验ipsec服务配置 。
systemctl restart ipsec
ipsec verify

over IPsec CentOS8服务器搭建L2TP服务器操作指南

文章插图
 
就是图里面
/proc/sys/net/ipv4/conf/eth0/rp_filter这个文件很奇怪,使用vim无法编辑,修改权限也不行,但是可以用echo 。那就用echo命令把里面的1换成0吧 。
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
修改L2TP配置文件,设置监听网卡地址和LNS的IP地址及分配的地址段 。
vim /etc/xl2tpd/xl2tpd.conf
主要修改4个地方配置:
1、[global]模块中,取消listen-addr注释,并修改IP地址为网卡地址(10.0.8.12);
2、[global]模块中,取消ipsec saref = yes的注释;
3、[lns default]模块中,在ip_range后设置客户端连接服务器后LNS分配给客户端的ip地址范围;


推荐阅读