安装软件
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
   | 
 
参考地址
参考地址