上次发了服务器上公网的文章,当时L2TP拨号用的是网络上的解决方案,也就是现成的脚本,一跑就OK了 。像这样:
文章插图
输入几个关键信息,脚本就自动执行完成了 。我看了一下,脚本一共810行,功能很强大,系统方面支持centos 6+、Debian 7+、Ubuntu 12+ 。
文章插图
但实际上有个隐藏的问题 。上次部署用的是CentOS 7的系统,一切正常,重新部署之后腾讯云的CentOS仅支持8.3的镜像,安装频繁报错 。
文章插图
查看脚本内容发现,此脚本仅支持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
文章插图
上图中最后一行可以看到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
文章插图
在/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
文章插图
就是图里面
/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地址范围;
推荐阅读
- IPv6过渡技术,双栈,IPv6 over IPv4 隧道技术,一分钟了解下
- 详解IPSec介绍
- 网络工程师如何用思科路由器配置GRE Over IPsec
- 为什么集群需要 Overlay 网络
- 多出口如何建立IPSec VPN?两种配置方式实现高可用性
- IPSec VPN中如何传输动态路由协议?理论知识分析实现原理
- IPSec热点
- CentOS8系统部署及几个小命令操作
- Centos8.2 使用 Openldap 认证登录
- CentOS7下vsftpd over SSL/TLS加密传输配置实践