Create l2tp.sh
This commit is contained in:
117
l2tp.sh
Normal file
117
l2tp.sh
Normal file
@@ -0,0 +1,117 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 颜色代码
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
# 检查Root权限
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo -e "${RED}必须以root权限运行此脚本${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 生成随机字符串
|
||||
generate_random_string() {
|
||||
tr -dc 'A-Za-z0-9' < /dev/urandom | head -c "$1"
|
||||
}
|
||||
|
||||
# 主安装函数
|
||||
install_l2tp_vpn() {
|
||||
# 配置参数
|
||||
VPN_SERVER_IP=$(curl -s http://ipinfo.io/ip)
|
||||
VPN_PSK=$(generate_random_string 16)
|
||||
VPN_USERNAME=$(generate_random_string 8)
|
||||
VPN_PASSWORD=$(generate_random_string 12)
|
||||
|
||||
# 更新和安装依赖
|
||||
apt-get update
|
||||
apt-get install -y strongswan xl2tpd ppp
|
||||
|
||||
# IPsec配置
|
||||
cat > /etc/ipsec.conf << EOF
|
||||
config setup
|
||||
charondebug="all"
|
||||
uniqueids=never
|
||||
|
||||
conn l2tp-psk
|
||||
authby=secret
|
||||
left=%defaultroute
|
||||
leftid=$VPN_SERVER_IP
|
||||
leftauth=psk
|
||||
leftprotoport=17/1701
|
||||
leftsendcert=never
|
||||
right=%any
|
||||
rightauth=psk
|
||||
rightprotoport=17/1701
|
||||
rightsourceip=10.0.0.0/24
|
||||
auto=add
|
||||
EOF
|
||||
|
||||
cat > /etc/ipsec.secrets << EOF
|
||||
: PSK "$VPN_PSK"
|
||||
EOF
|
||||
|
||||
# xl2tpd配置
|
||||
cat > /etc/xl2tpd/xl2tpd.conf << EOF
|
||||
[global]
|
||||
port = 1701
|
||||
|
||||
[lns default]
|
||||
ip range = 10.0.0.2-10.0.0.254
|
||||
local ip = 10.0.0.1
|
||||
require chap = yes
|
||||
refuse pap = yes
|
||||
require authentication = yes
|
||||
name = L2TPServer
|
||||
ppp debug = yes
|
||||
pppoptfile = /etc/ppp/options.xl2tpd
|
||||
length bit = yes
|
||||
EOF
|
||||
|
||||
cat > /etc/ppp/options.xl2tpd << EOF
|
||||
ipcp-accept-local
|
||||
ipcp-accept-remote
|
||||
require-mschap-v2
|
||||
ms-dns 8.8.8.8
|
||||
ms-dns 1.1.1.1
|
||||
noccp
|
||||
auth
|
||||
hide-password
|
||||
nodefaultroute
|
||||
usepeerdns
|
||||
name l2tpd
|
||||
plugin /usr/lib/pppd/*/libplugin.so
|
||||
EOF
|
||||
|
||||
cat > /etc/ppp/chap-secrets << EOF
|
||||
$VPN_USERNAME * $VPN_PASSWORD *
|
||||
EOF
|
||||
|
||||
# 设置权限
|
||||
chmod 600 /etc/ipsec.secrets /etc/ppp/chap-secrets
|
||||
|
||||
# 重启服务(使用完整路径)
|
||||
/usr/sbin/service strongswan-starter restart
|
||||
/usr/sbin/service xl2tpd restart
|
||||
|
||||
# 输出配置信息
|
||||
echo -e "${GREEN}================================================================"
|
||||
echo -e "L2TP/IPsec VPN连接详情:"
|
||||
echo -e "服务器IP: $VPN_SERVER_IP"
|
||||
echo -e "用户名: $VPN_USERNAME"
|
||||
echo -e "密码: $VPN_PASSWORD"
|
||||
echo -e "预共享密钥: $VPN_PSK"
|
||||
echo -e "================================================================${NC}"
|
||||
|
||||
# 保存连接信息到文件
|
||||
cat > /root/vpn_credentials.txt << EOF
|
||||
服务器IP: $VPN_SERVER_IP
|
||||
用户名: $VPN_USERNAME
|
||||
密码: $VPN_PASSWORD
|
||||
预共享密钥: $VPN_PSK
|
||||
EOF
|
||||
}
|
||||
|
||||
# 执行安装
|
||||
install_l2tp_vpn
|
||||
Reference in New Issue
Block a user