l2tp和pptp

l2tp

l2tp的开放端口为udp的1701,l2tp一般和IPsec配合使用, 以提供加密和身份验证。在这个组合中,L2TP负责隧道的建立,而IPsec则提供数据加密和安全保障。为了实现这一点,IPsec使用了PSK或数字证书进行身份验证 。

配置文件

我们需要关注的配置文件有/etc/ipsec.conf/etc/ipsec.secrets/etc/ppp/chap-secrets

  1. 首先是/etc/ppp/chap-secrets

格式基本为

# client server secret IP address
username xl2tpd/pptpd  passwrod  IP
admin xl2tpd/pptpd 123456 192.168.11.4

其中 xl2tpd/pptpd 为不同的协议类型,xl2tpd为我们当前要介绍的内容,而pptpd 为下面一节我们要介绍的内容。后面的192.168.11.4为当我们使用该用户名密码连接后将会分配给我们的IP。

  1. /etc/ipsec.secrets

格式基本为

 %any : PSK "your_pre_shared_key"

这里的PSK是我们的预共享密钥,

  1. /etc/ipsec.conf

格式基本为

config setup
    plutodebug=all
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    protostack=netkey
    interfaces=%defaultroute
    uniqueids=no

conn L2TP-PSK
    authby=secret
    pfs=no
    auto=start
    keyingtries=3
    ikelifetime=8h
    keylife=1h
    rekey=yes
    left=%defaultroute
    leftprotoport=17/1701
    right=<VPN_SERVER_IP>
    rightprotoport=17/1701
    type=transport

这里需要关注的为right中的VPN_SERVER_IP,也就是我们即将要连接的VPN服务器。

linux连接l2tp服务器

然后我们可以使用的工具为nmcli

添加vpn的命令是

sudo nmcli connection add type vpn \
    con-name MyL2TPVPN \
    ifname -- \
    vpn-type l2tp \
    vpn.data "gateway=<VPN_SERVER_IP>, user=<VPN_USERNAME>, password-flags=0" \
    vpn.secrets "password=<VPN_PASSWORD>" \
    vpn.data "ipsec-enabled=yes, ipsec-psk=<YOUR_PSK>"

这里面的YOUR_PSK即我们在ipsec.secrets中找到的PSK。

然后启动sudo nmcli connection up MyL2TPVPN 。这时我们执行ifconfig就可以看到当前的链接。

列出我们电脑上vpn列表的命令为nmcli connection show

删除vpn的命令为sudo nmcli connection delete MyL2TPVPN

pptp

pptp的开放端口为tcp的1723,是在网络层上的协议。

当我们发现chap-secrets中的协议为pptp时,如果使用linux,可以使用pptpsetup命令连接服务器,

创造连接命令为

sudo pptpsetup --create <connection_name> --server <server_ip_or_hostname> --username <vpn_username> --password <vpn_password> --encrypt --start

启动连接命令为sudo pon myvpn

停止连接命令为sudo poff myvpn

但是因为是网络层的协议,暂时还没找到配合socks5使用的较好方案


服务器资源由ZeptoVM赞助

Partners Wiki Discord