前言

最佳有个需求,需要用到L2TP组网或上网,因此本文来了,纯手工搭建!

准备工具

xl2tpd
ppp
CentOS7.9
iptables

搭建过程

yum -y install xl2tpd ppp iptables

安装完成后,开始下面的配置

配置L2TP服务

修改/etc/xl2tpd/xl2tpd.conf

[global]
port = 1999

[lns default]
ip range = 192.168.200.2-192.168.200.254
local ip = 192.168.200.1
require chap = yes
refuse pap = yes
require authentication = yes
name = l2tpd
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

解释:我修改了默认端口为1999,你可以不修改,因为有些L2TP客户端不支持自定义端口,我这里是需要修改的,因为我不用默认端口
port:指定 L2TP 绑定的端口号,设置为1999。
ip range:指定L2TP VPN服务器分配给客户端的IP地址范围,要在 192.168.200.2 - 192.168.200.254 之间分配 IP 地址。
local ip:指定 L2TP 服务器的IP地址,这里设置为 192.168.200.1
require chap:指定要求客户端使用 CHAP 进行身份验证。
refuse pap:拒绝客户端使用 PAP 进行身份验证。
require authentication:启用基本的身份验证,要求客户端提供用户名和密码进行身份验证。
name:设置 L2TP 服务器的名称。
pppdebug:启用 pppd 调试模式。
pppoptfile:指定进行 PPTP 控制的 pppd 选项,指定该选项从 /etc/ppp/options.xl2tpd 文件中读取。
length bit:指定将长度作为可变字段插入 L2TP 的带头域。

配置PPPD选项文件

修改/etc/ppp/options.l2tpd文件

ipcp-accept-local
ipcp-accept-remote
ms-dns  114.114.114.114
ms-dns  223.5.5.5
noccp
auth
#obsolete: crtscts
idle 1800
mtu 1410
mru 1410
defaultroute
debug
#obsolete: lock
proxyarp
connect-delay 5000

1.ipcp-accept-local:该参数设置为接受局部 IPCP 请求。当此选项设置为 YES 时,PPP 协议将支持从本地接口接受 IPCP 请求。IPCP 是互联网控制消息协议(Internet Control Message Protocol)的子协议之一,它用于在 PPP 连接上协商 IP 配置参数,如IP 地址、默认网关、DNS 等。
2.ipcp-accept-remote:该参数设置为接受远程 IPCP 请求。当此选项设置为 YES 时,该线路协议将支持接受从远程接口发起的 IPCP 请求。
3.ms-dns: 指定此 L2TP VPN 服务所配置的 DNS 服务器 IP 地址。这里指定了两个 DNS 服务器地址。
4.noccp: 选项关闭了 PPP 协议的压缩协议,CCP (Compression Control Protocol),该协议通常用于提高PPP通信效率。在某些情况下,CCP 如果没有正确的配置可能会造成通信失效,因此当用户没有开启或正确配置 CCP 时,使用 noccp 选项来关闭 CCP 协议。
5.auth: 该选项启用基本身份验证,基本身份验证指的是客户端向服务器发送用户名和密码进行身份验证的过程。
6.idle 1800: 指定空闲时间,当 PPP 连接在指定时间内没有活动时,则PPP 将断开连接。以秒为单位,这里是1800秒(30分钟).
7.mtu 1410:设置 PPP 链路的最大传输单元(MTU),以字节为单位,这里设置为1410字节。
8.mru 1410:指定链路层 MTU,以字节为单位,这里设置为1410字节。
9.nodefaultroute: 指定PPP连接后不修改默认路由,也就是不要改变本地主机的默认路由,防止资料外泄。
10.debug: 打开调试模式并将调试信息输出到系统日志文件。开启调试模式可以帮助分析 PPP 连接的问题。
11.proxyarp:该选项允许PPP守护进程在PPP连接建立后自动添加代理ARP条目,以这种方式快速解析远程客户端的 IP 地址。
12.connect-delay 5000:控制 DSL 连接建立时的延迟,以毫秒为单位。这里设置为 5000ms,也就是5秒。

手动配置账号密码和指定客户端IP

修改文件:/etc/ppp/chap-secrets,我因为有指定用途,因此我是需要指定用户和对应的内网IP,便于我的管理

# Secrets for authentication using CHAP
# client    server    secret            IP addresses
A1 l2tpd 123 192.168.200.101
A2 l2tpd 123 192.168.200.102
A3 l2tpd 123 192.168.200.103
A4 l2tpd 123 192.168.200.104
A5 l2tpd 123 192.168.200.105

用户名称A1 服务器名称L2TPD 密码123 分配IP192.168.200.101 以此类推

启动服务

sudo systemctl start xl2tpd

开机自启动

sudo systemctl enable xl2tpd

如果你不需要上网,仅仅是和服务器组下网,那么此时就结束了,但是我的需求是,我还需要利用这个服务器进行上网!

配置IPTables防火墙

此时还无法利用服务器进行上网,在我们启动服务后会发现多了一个网卡叫“ppp”网卡,那么我们先保证这个网卡的出入平安!

iptables -A FORWARD -i ppp+ -j ACCEPT
iptables -A FORWARD -o ppp+ -j ACCEPT

到此,还是不能进行上网,ppp网卡出入完成了,但是我还需要他上网,我本机的上网网卡是eth0

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

到此,防火墙的配置完成了,但是还有一个很关键的东西,内核转发,如果没有开启,那么防火墙就无法转发ip数据包

开启内核转发

修改配置文件etc/sysctl.conf

vi /etc/sysctl.conf

添加net.ipv4.ip_forward=1,如果已经存在就把0修改为1
保存修改并退出
最后执行sysctl -p永久生效

结尾

这就是手工搭建L2TP服务的方式方法,更加具体玩法,大家可以看里面的文档。

最后修改:2023 年 11 月 25 日 08 : 47 PM
赞赏必须赞赏,多多益善,老板一直发大财!