wg5clients.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #!/bin/bash
  2. # WireGuard VPN多用户服务端 自动配置脚本
  3. # 本脚本(WireGuard 多用户配置)一键安装短网址
  4. # wget -qO- https://git.io/fpnQt | bash
  5. # 本脚本适合已经安装 WireGuard VPN 的vps
  6. # 如果你的vps没有安装 WireGuard ,可以用下行命令先安装
  7. # 一键安装wireguard 脚本 debian 9
  8. # wget -qO- git.io/fptwc | bash
  9. #############################################################
  10. # 定义修改端口号,适合已经安装WireGuard而不想改端口
  11. port=9009
  12. mtu=1200
  13. host=$(hostname -s)
  14. ip_list=(2 8 18 88 188 118 158 198 168 186)
  15. # 获得服务器ip,自动获取
  16. serverip=$(curl -4 icanhazip.com)
  17. #############################################################
  18. # 转到wg配置文件目录
  19. cd /etc/wireguard
  20. # 然后开始生成 密匙对(公匙+私匙)。
  21. wg genkey | tee sprivatekey | wg pubkey > spublickey
  22. wg genkey | tee cprivatekey | wg pubkey > cpublickey
  23. # 生成服务端配置文件
  24. cat <<EOF >wg0.conf
  25. [Interface]
  26. PrivateKey = $(cat sprivatekey)
  27. Address = 10.0.0.1/24
  28. PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  29. PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  30. ListenPort = $port
  31. DNS = 8.8.8.8
  32. MTU = $mtu
  33. [Peer]
  34. PublicKey = $(cat cpublickey)
  35. AllowedIPs = 10.0.0.2/32
  36. EOF
  37. # 生成简洁的客户端配置
  38. cat <<EOF >client.conf
  39. [Interface]
  40. PrivateKey = $(cat cprivatekey)
  41. Address = 10.0.0.2/24
  42. DNS = 8.8.8.8
  43. MTU = $mtu
  44. # PreUp = start .\route\routes-up.bat
  45. # PostDown = start .\route\routes-down.bat
  46. [Peer]
  47. PublicKey = $(cat spublickey)
  48. Endpoint = $serverip:$port
  49. AllowedIPs = 0.0.0.0/0, ::0/0
  50. PersistentKeepalive = 25
  51. EOF
  52. # 安装二维码插件
  53. apt -y install qrencode
  54. # 添加 1-9 多用户配置子程序
  55. for i in {1..9}
  56. do
  57. ip=10.0.0.${ip_list[$i]}
  58. wg genkey | tee cprivatekey | wg pubkey > cpublickey
  59. cat <<EOF >>wg0.conf
  60. [Peer]
  61. PublicKey = $(cat cpublickey)
  62. AllowedIPs = $ip/32
  63. EOF
  64. cat <<EOF >wg_${host}_$i.conf
  65. [Interface]
  66. PrivateKey = $(cat cprivatekey)
  67. Address = $ip/24
  68. DNS = 8.8.8.8
  69. MTU = $mtu
  70. [Peer]
  71. PublicKey = $(cat spublickey)
  72. Endpoint = $serverip:$port
  73. AllowedIPs = 0.0.0.0/0, ::0/0
  74. PersistentKeepalive = 25
  75. EOF
  76. cat /etc/wireguard/wg_${host}_$i.conf| qrencode -o wg_${host}_$i.png
  77. done
  78. # vultr 服务商的主机默认网卡是 ens3,使用下面命令修改配置
  79. if [ $host == "vultr" ]; then
  80. sed -i "s/eth0/ens3/g" /etc/wireguard/wg0.conf
  81. fi
  82. # 重启wg服务器
  83. wg-quick down wg0
  84. wg-quick up wg0
  85. wg
  86. cat <<EOF >wg5
  87. # 打包10个客户端配置,手机扫描二维码2号配置,PC使用1号配置
  88. next() {
  89. printf "# %-70s\n" "-" | sed 's/\s/-/g'
  90. }
  91. host=$(hostname -s)
  92. cd /etc/wireguard/
  93. tar cvf wg5clients.tar client* wg_*
  94. cat /etc/wireguard/wg_${host}_1.conf | qrencode -o - -t ansi256
  95. echo "# 手机扫描二维码2号配置,PC使用配置复制下面文本"
  96. cat /etc/wireguard/client.conf && next
  97. cat /etc/wireguard/wg_${host}_1.conf && next
  98. cat /etc/wireguard/wg_${host}_2.conf && next
  99. cat /etc/wireguard/wg_${host}_3.conf && next
  100. cat /etc/wireguard/wg_${host}_4.conf && next
  101. echo "# wg 查看有效的客户端;删除客户端使用 wg set wg0 peer xxxx_填对应IP的公钥_xxxx remove"
  102. echo "# 再次显示本文本使用 bash wg5 命令,通过下面2种方式获得其他的配置文件,IP也可以用服务器IP"
  103. file=$(md5sum /etc/wireguard/wg0.conf) && file=${file:0:6}.tar
  104. echo "# 请浏览器访问 http://10.0.0.1:8000/$file 下载配置文件,需要先连上WG服务器"
  105. echo "# scp [email protected]:/etc/wireguard/wg5clients.tar wg5clients.tar"
  106. cp /etc/wireguard/wg5clients.tar ~/$file
  107. cd ~ && python -m SimpleHTTPServer 8000 &
  108. EOF
  109. cp wg5 ~/wg5
  110. bash wg5