CentOS 8服务器搭建L2TP服务器(over IPsec)操作指南

发布于:2024-04-16 ⋅ 阅读:(172) ⋅ 点赞:(0)

07baf16fcf5dd7610bf26ca32718842b.gif

正文共:1234 字 14 图,预估阅读时间:2 分钟

之前发过把我自己的服务器搬上公网的文章我用100块钱把物理服务器放到了公网,省了几万块!,当时L2TP拨号用的是网络上的解决方案,也就是现成的脚本,一跑就OK了。像这样:

bb823d4ab2760aa4e88fe23c15bae5ba.png

输入几个关键信息,脚本就自动执行完成了。我看了一下,脚本一共810行,功能很强大,系统方面支持CentOS 6+、Debian 7+、Ubuntu 12+。

9da0f210685ab0599fbb7b58e54224cd.png

但实际上有个隐藏的问题。上次部署时用的是CentOS 7的系统,一切正常。腾讯云的云主机重新部署之后仅支持CentOS 8.3的镜像了,导致安装频繁报错。

49732a725921cde97f567bf3e7318803.png

查看脚本内容发现,此脚本仅支持CentOS的6和7两个版本,在8上,因为软件名称和操作命令变更,无法正常安装。

既然这样,那就只能拆解代码,自己安装了。

首先找到脚本中需要的软件,或者找到执行脚本时不能正常使用的命令,用yum provides来查找命令,最后整理一下,需要安装以下软件:

yum install -y make gcc gmp-devel xmlto bison flex libpcap lsof vim man xl2tpd libreswan

修改ipsec配置文件,和strongSwan的配置很相似strongSwan之ipsec.conf配置手册

vim /etc/ipsec.conf

在config setup中添加以下命令,允许传透nat建立l2tp连接。

nat_traversal=yes

05f8364f62b24ba367c3d9b034068a09.png

上图中最后一行可以看到include /etc/ipsec.d/*.conf这行代码,所以需要在/etc/ipsec.d/目录下创建IPsec与L2TP服务关联的配置文件。

vim /etc/ipsec.d/l2tp_psk.conf

文件复制以下内容,仅需修改left参数为公网网卡的IP地址。

conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
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=10.0.8.12
leftprotoport=17/1701
right=%any
rightprotoport=17/%any

e5887f5a9764c7e6da734e3442c41324.png

在/etc/ipsec.d/目录下创建保存预共享密钥的文件,名字可自定义,扩展名为.secrets。和strongSwan的配置也很相似strongSwan之ipsec.secrets配置手册

vim /etc/ipsec.d/ipsec.secrets

预共享密钥参照如下格式填写,其中,IP地址为网卡的IP地址,双引号中为预共享密钥,请自行设置。(注意字段之间用空格或者tab隔开,否则检查会报错)

10.0.8.12   %any:   PSK   "test123"

修改sysctl的内核支持文件。

vim /etc/sysctl.conf

可以直接用下面的内容替换掉原来的文件。

vm.swappiness = 0
net.ipv4.ip_forward = 1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.lo.arp_announce=2
net.ipv4.neigh.default.gc_thresh3 = 4096
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.lo.disable_ipv6=0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.printk = 5
kernel.shmmax = 68719476736
kernel.softlockup_panic = 1
kernel.sysrq = 1

修改完保存退出,执行以下命令重新加载配置文件使配置生效。

sysctl -p

重启IPsec服务,并检验ipsec服务配置。

systemctl restart ipsec
ipsec verify

ecbc9cb93ecd9a454b2d623d6dd0fcea.png

就是图里面/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地址范围;

4、[lns default]模块中,将local ip设置为LNS的网关IP地址。

如下图:

67d31094605ba4275bad0dfb8e597aad.png

修改xl2tpd配置文件中的安全配置。

vim /etc/ppp/options.xl2tpd

文本中增加验证字段的算法要求,DNS视具体情况进行调整。

require-mschap-v2

35739a8caa7e77717564cae0c90a41b6.png

将L2TP服务器的账户与密码写入/etc/ppp/chap-secrets文件。

vim /etc/ppp/chap-secrets

依次写用户名、服务名、密码、IP地址,实际上服务名与IP地址都写成星号即可,主要设置用户名与密码,以空格或tab隔开。填写服务名用于多服务场景,填写IP地址用于指定该用户登录后获取的IP地址为某个固定地址。

c8a45d705fad69f2e4a3b306a8606f9c.png

然后就是防火墙的规则调整了,首先停止firewalld服务并禁用。

systemctl stop firewalld
systemctl mask firewalld

安装iptables服务。

yum install -y iptables iptables-services

清空iptables规则。

iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z

执行命令进行规则配置,其中转发相关的地址段请设置与L2TP地址段一致。

iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -I FORWARD -s 172.16.113.0/24 -j ACCEPT
iptables -I FORWARD -d 172.16.113.0/24 -j ACCEPT
iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 1701 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4500 -j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -A INPUT -m policy --dir in --pol ipsec -j ACCEPT
iptables -A FORWARD -i ppp+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

上述命令执行完后,保存iptables规则并重启服务。

service iptables save
systemctl restart iptables

走完上面的流程,现在就需要检查iptables、ipsec、xl2tpd三个服务是否是正常运行了。

systemctl status iptables
systemctl status ipsec

f8cb01456fe759139830b104d2d3c662.png

systemctl status xl2tpd

3e5d6b468f151b6587034c040354c10d.png

这个地方出了两次错误,第一次启动失败是内核重新挂载l2tp_ppp失败,需要修改/usr/lib/systemd/system/xl2tpd.service配置文件,注释掉相关配置。

ExecStartPre=/sbin/modprobe -q l2tp_ppp

d067d54242ee17c039e9a96862b0ce97.png

然后执行以下命令重启服务。

systenctl daemon-reload
systemctl restart xl2tpd

第二个报错就相对简单,但是不好找,我把LNS的本地地址配错了,一直提示地址绑定失败。所以操作的时候还是要细心。

5de19b5e644f8f8ebe74718a2d77c421.png

最后再看一下连接成功的页面。

1b9ae5f8ad1a53eef5dbc89d587e328e.png

得益于高链路质量,延迟只有5ms左右。

后台回复“l2tp”获取自动化部署脚本。

caaf90d9963d65f883c41dd6229262e9.gif

长按二维码
关注我们吧

f343927a346aac4f34de31e5bd12f5bb.jpeg

02dccecf281f805fb1ce530a2986f8b0.png

79.55 Gbps!已经初步测得VMWare ESXi 6.7的vSwitch转发性能

Debian阵营还是要原装,Ubuntu是真不行

还得是华为,OpenEuler打流能到37 Gbps

羡慕!大佬的VPP能达到180G性能,而我的却只有13.5G

iperf命令简介

iperf3命令简介

听说你想收集HCL的设备版本?好吧,成全你!

还在到处找Win11镜像?自己动手,丰衣足食!

用WireShark抓包解决StrongSwan和H3C对接失败的问题

VMware vCenter Server 7.0快速部署操作指南


网站公告

今日签到

点亮在社区的每一天
去签到