安装软件
1 2 3 4 5 6 7 8 9 10
| # Ubuntu and Debian apt-get update apt-get install strongswan xl2tpd net-tools
# Fedora yum install strongswan xl2tpd net-tools
# CentOS yum install epel-release yum --enablerepo=epel install strongswan xl2tpd net-tools
|
创建 VPN 变量(替换为你自己的值):
1 2 3 4
| VPN_SERVER_IP='你的VPN服务器IP' VPN_IPSEC_PSK='你的IPsec预共享密钥' VPN_USER='你的VPN用户名' VPN_PASSWORD='你的VPN密码'
|
配置 strongSwan:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| cat > /etc/ipsec.conf <<EOF # ipsec.conf - strongSwan IPsec configuration file
conn myvpn auto=add keyexchange=ikev1 authby=secret type=transport left=%defaultroute leftprotoport=17/1701 rightprotoport=17/1701 right=$VPN_SERVER_IP ike=aes128-sha1-modp2048 esp=aes128-sha1 EOF
cat > /etc/ipsec.secrets <<EOF : PSK "$VPN_IPSEC_PSK" EOF
chmod 600 /etc/ipsec.secrets
# For CentOS and Fedora ONLY mv /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.old 2>/dev/null mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2>/dev/null ln -s /etc/ipsec.conf /etc/strongswan/ipsec.conf ln -s /etc/ipsec.secrets /etc/strongswan/ipsec.secrets
|
配置 xl2tpd:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| cat > /etc/xl2tpd/xl2tpd.conf <<EOF [lac myvpn] lns = $VPN_SERVER_IP ppp debug = yes pppoptfile = /etc/ppp/options.l2tpd.client length bit = yes EOF
cat > /etc/ppp/options.l2tpd.client <<EOF ipcp-accept-local ipcp-accept-remote refuse-eap require-chap noccp noauth mtu 1280 mru 1280 noipdefault defaultroute usepeerdns connect-delay 5000 name "$VPN_USER" password "$VPN_PASSWORD" EOF
chmod 600 /etc/ppp/options.l2tpd.client
|
至此 VPN 客户端配置已完成。按照下面的步骤进行连接。
注: 当你每次尝试连接到 VPN 时,必须重复下面的所有步骤。
创建 xl2tpd 控制文件:
1 2
| mkdir -p /var/run/xl2tpd touch /var/run/xl2tpd/l2tp-control
|
重启服务:
1 2 3 4 5 6
| service strongswan restart
# 适用于 Ubuntu 20.04,如果 strongswan 服务不存在 ipsec restart
service xl2tpd restart
|
开始 IPsec 连接:
1 2 3 4 5
| # Ubuntu and Debian ipsec up myvpn
# CentOS and Fedora strongswan up myvpn
|
开始 L2TP 连接:
1
| echo "c myvpn" > /var/run/xl2tpd/l2tp-control
|
运行 ifconfig 并且检查输出。现在你应该看到一个新的网络接口 ppp0。
检查你现有的默认路由:
在输出中查找以下行: default via X.X.X.X …。记下这个网关 IP,并且在下面的两个命令中使用。
从新的默认路由中排除你的 VPN 服务器的公有 IP(替换为你自己的值):
1
| route add 你的VPN服务器的公有IP gw X.X.X.X
|
如果你的 VPN 客户端是一个远程服务器,则必须从新的默认路由中排除你的本地电脑的公有 IP,以避免 SSH 会话被断开 (替换为实际值):
1
| route add 你的本地电脑的公有IP gw X.X.X.X
|
添加一个新的默认路由,并且开始通过 VPN 服务器发送数据:
1
| route add default dev ppp0
|
至此 VPN 连接已成功完成。检查 VPN 是否正常工作:
1
| wget -qO- http://ipv4.icanhazip.com; echo
|
以上命令应该返回 你的 VPN 服务器 IP。
要停止通过 VPN 服务器发送数据:
1
| route del default dev ppp0
|
要断开连接:
1 2 3 4 5 6 7
| # Ubuntu and Debian echo "d myvpn" > /var/run/xl2tpd/l2tp-control ipsec down myvpn
# CentOS and Fedora echo "d myvpn" > /var/run/xl2tpd/l2tp-control strongswan down myvpn
|
参考地址
参考地址