一、安全层选取错误
1、L2TP协议需要在PPTP协议的基础上再添加一个安全层(Security Layer)协议,常用的安全层协议有PAP、CHAP、MSCHAP V1和MSCHAP V2等,但是在实际使用中要根据服务器端的配置情况来选择。如果安全层选取错误,会导致连接尝试失败。
2、例如,服务器端配置为PAP,则客户端也需要选择PAP才能够连接成功。如果客户端选择了其他的安全层协议,则连接尝试会失败。这时候,只需要将安全层的选取与服务器端保持一致即可。
3、以下是L2TP连接中安全层的选取示例代码:
# 客户端配置
ipsec.auto = add
conn L2TP
keyexchange = ikev1
type = transport
leftauth = psk
left = 客户端公网IP地址
leftprotoport = 17/1701
right = 服务器端公网IP地址
rightauth = psk
rightprotoport = 17/1701
auto = route
authby = secret
# 注意以下值需要根据服务器端的设置来选择
phase2 = pap
phase2auth = yes
phase2alg = sha1
phase2key = 0123456789abcdef0123456789abcdef
二、防火墙屏蔽了端口
1、L2TP连接需要使用UDP端口进行通信,如果防火墙屏蔽了UDP的端口,也会导致连接尝试失败的问题。这时候,需要在防火墙中打开相应端口才能够连接成功。
2、UDP端口号为1701,需要在防火墙中打开该端口的UDP通信通道。下面是CentOS 7防火墙打开L2TP连接所需要的命令:
firewall-cmd --permanent --zone=public --add-port=1701/udp firewall-cmd --reload
三、IPsec配置错误
1、L2TP连接需要使用IPsec进行加密和认证,IPsec的配置错误也会导致连接尝试失败的问题。IPsec配置主要包括PSK和参数的配置。
2、PSK是预共享密钥(Pre-Shared Key),是加密使用的密钥。客户端和服务器端需要使用同一个PSK才能够互相认证和加密。参数的配置包括加密算法、哈希算法和Diffie-Hellman群等。客户端和服务器端需要设置相同的参数才能够互相匹配。
3、以下是L2TP连接中IPsec的配置示例代码:
# 客户端配置
ipsec.auto = add
conn L2TP
keyexchange = ikev1
type = transport
leftauth = psk
left = 客户端公网IP地址
leftprotoport = 17/1701
right = 服务器端公网IP地址
rightauth = psk
rightprotoport = 17/1701
auto = route
authby = secret
phase2 = pap
phase2auth = yes
phase2alg = sha1
phase2key = 0123456789abcdef0123456789abcdef
# PSK配置
ike = aes256-sha1-modp1024
phase1 = 3des-sha1-modp1024
keyingtries = 3
ikelifetime = 8h
salifetime = 1h
aggressive = no
dpddelay = 30
dpdtimeout = 120
dpdaction = restart
auto = route
leftid = @客户端ID
rightid = @服务器端ID
leftsubnet = 0.0.0.0/0
rightsubnet = 0.0.0.0/0
leftsourceip = %config4
rightsourceip = 192.168.10.0/24
mark = 0x6d65
# 参数配置
ikev2 = never
keyexchange = ikev1
forceencaps = yes
esp = 3des-sha1
ike = 3des-sha1-modp1024
ikelifetime = 8h
salifetime = 1h
type = transport
四、客户端操作系统问题
1、L2TP连接在不同的操作系统中可能会有不同的支持情况,从而导致连接尝试失败。例如,有些Windows系统版本中并没有内置L2TP连接的支持。
2、如果是操作系统版本问题,可以考虑升级操作系统或者使用第三方的L2TP客户端软件来连接。
3、以下是在Windows系统中连接L2TP的示例代码:
# 打开控制面板 -> 网络和共享中心 -> 设置新连接或网络 -> 连接到工作区 # 选择“使用我的 Internet 连接(VPN)” # 输入服务器地址,例如:11.22.33.44 # 连接名称可以任意填写 # 用户名和密码需要与服务器端保持一致
五、服务器端配置错误
1、L2TP连接需要服务器端和客户端的配合,如果服务器端的配置有误,也会导致连接尝试失败的问题。
2、服务器端的配置主要包括IPsec配置和L2TP配置。IPsec配置包括PSK和参数的配置,与客户端需要保持一致。L2TP配置包括L2TP服务的启动以及用户的添加和认证等。
3、以下是在Ubuntu中配置L2TP服务的示例代码:
# 安装L2TP服务
apt-get update
apt-get install xl2tpd
# 配置PSK和参数
vim /etc/ipsec.secrets
%any %any : PSK "0123456789abcdef0123456789abcdef"
vim /etc/ipsec.conf
conn L2TP-PSK
authby=secret
auto=add
ike=3des-sha1-modp1024
esp=3des-sha1
forceencaps=yes
pfs=no
rekey=no
type=transport
left=服务器端公网IP地址
right=%any
leftprotoport=17/1701
rightprotoport=17/1701
# 配置L2TP服务并添加用户
vim /etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = yes
[lac vpn-connection]
lns = 服务器端公网IP地址
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
vim /etc/ppp/options.l2tpd.client
require-pap
refuse-chap
require-mschap-v2
require-mppe-128
# 加密使用的密钥,需要与客户端保持一致
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
# 添加认证用户
vim /etc/ppp/chap-secrets
# 格式:用户名 服务名 密码 IP地址
test * testpassword *
六、总结
本文从安全层选取错误、防火墙屏蔽了端口、IPsec配置错误、客户端操作系统问题、服务器端配置错误等多个方面对L2TP连接尝试失败的原因进行了详细的阐述,并提供了相应的解决办法和示例代码。希望本文对大家理解和解决L2TP连接问题有所帮助。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/155480.html
微信扫一扫
支付宝扫一扫