l2tp
l2tp的开放端口为udp的1701,l2tp一般和IPsec配合使用, 以提供加密和身份验证。在这个组合中,L2TP负责隧道的建立,而IPsec则提供数据加密和安全保障。为了实现这一点,IPsec使用了PSK或数字证书进行身份验证 。
配置文件
我们需要关注的配置文件有/etc/ipsec.conf
、/etc/ipsec.secrets
和/etc/ppp/chap-secrets
- 首先是
/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。
/etc/ipsec.secrets
格式基本为
%any : PSK "your_pre_shared_key"
这里的PSK是我们的预共享密钥,
/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使用的较好方案