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

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快速部署操作指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539863.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 集合Collection

集合的体系 Collection的结构体系 List系列集合:添加的元素是有序的、可重复、有索引。Set系列集合:无序、不重复、无索引 HashSet:无序、不重复、无索引LinkedHashSet:有序、不重复、无索引TreeSet:按照大小默认升序排序、不重复…

最新PDD批发Anti-Content参数逆向分析与算法还原

文章目录 1. 写在前面2. 接口分析3. 分析与扣代码 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Py…

Day:007(1) | Python爬虫:高效数据抓取的编程技术(scrapy框架使用)

Scrapy的介绍 Scrapy 是一个用于抓取网站和提取结构化数据的应用程序框架,可用于各种有用的应用程序,如数据挖掘、信息处理或历史存档。 尽管 Scrapy 最初是为网络抓取而设计的,但它也可用于使用API提取数据或用作通用网络爬虫。 Scrapy的优势…

海外媒体发稿:4种旅游业媒体套餐助你宣发推广-华媒舍

在现代社会中,旅游业发展迅速,竞争也变得日益激烈。为了让自己的旅游产品或服务脱颖而出,宣传和推广变得至关重要。有着强大传播力的媒体平台成为了旅游行业的一项重要资源。为了更好地推广旅游业,提高其影响力,有许多…

ABAP-CPI-Odata POST-create_deep_entity 多层嵌套的处理及CPI端的调用

该文章演示怎么在OData里,创建一个多套多的请求结构,传入数据处理后,返回多层级的处理结果;以及如何在CPI里写groovy脚本,去解析它;最后如何用postman模拟外围系统,调用CPI这个接口,从而去调用Odata接口 假如想用SAP Odata去实现传入多层级的数据,进行创建或者根据传入…

word并排比较

Word并排比较是一种在Microsoft Word文档中同时显示两个文本内容并进行比较的功能。这种比较通常用于查看文档的不同版本之间的差异,或者比较两个不同来源的文本内容。 在Word中进行并排比较通常可以通过以下步骤实现: 通过这种方式,Word的并…

港科夜闻|叶玉如校长牵头举办大湾区国际科创峰会,与海内外教育领袖共话全球合作,教育与创新...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大校长叶玉如教授牵头举办大湾区国际科创峰会,与海内外教育领袖共话全球合作、教育与创新。粤港澳大湾区院士联盟主办的“第二届大湾区国际科创峰会”4月3日在香港科学园举行,汇聚了区内及海…

跟TED演讲学英文:Why AI will spark exponential economic growth by Cathie Wood

TED英文文稿 文章目录 TED英文文稿Why AI will spark exponential economic growthIntroductionVocabularyTranscriptSummary后记 Why AI will spark exponential economic growth Link: https://www.ted.com/talks/cathie_wood_why_ai_will_spark_exponential_economic_growth…

vscode远程免密登录ssh

vscode远程免密登录ssh 1. 安装vscode2. 安装ssh3. 本地vscode配置免密登录远端开发机1. 本地配置秘钥2. 远程开发机配置秘钥 4. vscode常用小工具1. vscode怎么设置ctrl加滚轮放大字体 1. 安装vscode 2. 安装ssh 设置符号打开config配置文件,点击符号ssh连接新的远…

Kubernetes(k8s):深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)

Kubernetes(k8s):深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations) 1、污点(Taints)2、容忍度(Tolerations)3、示例演示-测试污点的具…

Leetcode 399. 除法求值

心路历程: 一开始看着挺蒙的主要是不知道这道题在考察哪个知识点,后来按顺序把三个示例自己模拟着做出来之后发现本质其实在考类似链表或者指针的东西。 再一想其实是一个树或者图的遍历搜索问题,一下子想到了回溯算法。 第一次遇到这个题从…

Rocky(Centos)数据库等高并发或高io应用linux系统调优,及硬件问题排查(含网络、磁盘、系统监控)

一、系统参数优化 默认的最大打开文件数是1024.不满足生产环境的要求。按照如下配置: 1、修改 systemctl管理的 servie 资源限制 编辑/etc/systemd/system.conf # 全局的打开文件数 DefaultLimitNOFILE2097152 # 全局打开进程数 DefaultLimitNPROC655352、调整系…

[管理者与领导者-159] :社交策略和智慧-2,看破不说破,如何与虚伪的人和谐相处

目录 前言: 一、看破不说破 二、与虚伪的愉悦相处 三、如何利用社交技巧赞扬虚伪的人,而不失自己的原则 前言: 在实现生活中,总与遇到一种人,他们说一套,做一套、心理想一套,他们把自己利己…

面试-数据库基础以及MySql、ClickHost、Redis简介

面试-数据库基础以及MySql、ClickHost、Redis简介 0.数据完整性1.数据库并发控制1.1事物1.2 并发读写错误1.3 锁1.3.1 乐观锁与悲观锁1.3.2 共享锁和排他锁1.3.3 行锁与表锁1.3.4 意向锁 1.4 封锁协议与隔离级别1.5 MVCC1.5.1 概念1.5.2 当前读与快照读1.5.3 MVCC in InnoDB 2.…

数据采集仪:自动化监测系统的核心组件

在当代的工业自动化领域,数据采集仪成为了一个关键的技术工具,它不仅仅是简单地将电信号转化为数据信号,而是能够实时、有效地处理和显示各种信号,确保整个监测系统的稳定、高效运行。 点击输入图片描述(最多30字&…

redis-缓存穿透与雪崩

一,缓存穿透(查不到) 在默认情况下,用户请求数据时,会先在缓存(Redis)中查找,若没找到即缓存未命中,再在数据库中进行查找,数量少可能问题不大,可是一旦大量的请求数据&a…

自动化测试selenium(2)

目录 WebDriver介绍 WebDriver使用 使用WebDriver驱动操作浏览器(打开一个百度) WebDriver 相关API 定位元素 操作元素 上一篇主要介绍了自动化测试的概念以及selenium的基本原理, 这里我们来讲一下如何利用selenium来写测试用的脚本. WebDriver介绍 Selenium是一个用于…

GitHub repository - Branch - SSH clone URL - Clone in Desktop - Download ZIP

GitHub repository - Branch - SSH clone URL - Clone in Desktop - Download ZIP 1. Branch2. SSH clone URL3. Clone in Desktop4. Download ZIPReferences 1. Branch 显示当前分支的名称。从这里可以切换仓库内分支,查看其他分支的文件。 2. SSH clone U…

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控 单细胞RNA测序(scRNA-seq)基础知识可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. 单细胞RNA-seq样本数据说明 样本数据来源文章:Acquired cancer re…

Unity TextMeshProUGUI 获取文本尺寸·大小

一般使用ContentSizeFitter组件自动变更大小 API 渲染前 Vector2 GetPreferredValues(string text)Vector2 GetPreferredValues(string text, float width, float height)Vector2 GetPreferredValues(float width, float height) 渲染后 Vector2 GetRenderedValues()Vector…