售前咨询
技术支持
渠道合作

CentOS 6、7下IPSEC/L2TP VPN一键安装脚本(openswan+xl2tpd)

脚本依赖《OneinStack》或《lnmp一键安装包》,可以在安装完lnmp后,执行这个脚本(vpn_centos.sh)来一键搭建你的个人vpn

CentOS 6、7下IPSEC/L2TP VPN一键安装脚本,如下:

  1. #!/bin/bash
  2. # Author:  yeho <lj2007331 AT gmail.com>
  3. # Blog:  //blog.linuxeye.com
  4. #
  5. # This script’s project home is:
  6. #       //blog.linuxeye.com/31.html
  7. #       https://github.com/lj2007331/lnmp
  8. # Check if user is root
  9. [ $(id -u) != “0” ] && echo “Error: You must be root to run this script” && exit 1
  10. export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  11. clear
  12. printf “
  13. #######################################################################
  14. #    LNMP/LAMP/LANMP for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+    #
  15. # For more information please visit //blog.linuxeye.com/31.html  #
  16. #######################################################################
  17. [ ! -e “src” ] && mkdir src
  18. cd src
  19. . ../include/download.sh
  20. while :
  21. do
  22.         echo
  23.         read -p “Please input private IP-Range(Default Range: 10.0.2): ” iprange
  24.         [ -z “$iprange” ] && iprange=”10.0.2″
  25.         if [ -z “`echo $iprange | grep -E “^10\.|^192\.168\.|^172\.” | grep -o ‘^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$’`” ];then
  26.                 echo -e “\033[31minput error! Input format: xxx.xxx.xxx\033[0m”
  27.         else
  28.                 break
  29.         fi
  30. done
  31. echo
  32. read -p “Please input PSK(Default PSK: psk): ” MYPSK
  33. [ -z “$MYPSK” ] && MYPSK=”psk”
  34. while :
  35. do
  36.         echo
  37.         read -p “Please input username: ” Username
  38.         [ -n “$Username” ] && break
  39. done
  40. while :
  41. do
  42.         echo
  43.         read -p “Please input password: ” Password
  44.         [ -n “$Password” ] && break
  45. done
  46. clear
  47. public_IP=`../functions/get_public_ip.py`
  48. get_char()
  49. {
  50. SAVEDSTTY=`stty -g`
  51. stty -echo
  52. stty cbreak
  53. dd if=/dev/tty bs=1 count=1 2> /dev/null
  54. stty -raw
  55. stty echo
  56. stty $SAVEDSTTY
  57. }
  58. echo “”
  59. echo “ServerIP:$public_IP”
  60. echo “”
  61. echo “Server Local IP:$iprange.1”
  62. echo “”
  63. echo “Client Remote IP Range:$iprange.2-$iprange.254”
  64. echo “”
  65. echo “PSK:$MYPSK”
  66. echo “”
  67. echo “Press any key to start…”
  68. char=`get_char`
  69. clear
  70. if [ -n “`grep ‘CentOS Linux release 7’ /etc/redhat-release`” ];then
  71.         CentOS_REL=7
  72.         for Package in wget ppp iptables iptables-services make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof vim-enhanced
  73.         do
  74.                 yum -y install $Package
  75.         done
  76.         echo ‘net.ipv4.ip_forward = 1’ >> /etc/sysctl.conf
  77. elif [ -n “`grep ‘CentOS release 6’ /etc/redhat-release`” ];then
  78.         CentOS_REL=6
  79.         for Package in wget ppp iptables make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof vim-enhanced
  80.         do
  81.                 yum -y install $Package
  82.         done
  83.         sed -i ‘s@net.ipv4.ip_forward.*@net.ipv4.ip_forward = 1@g’ /etc/sysctl.conf
  84. else
  85.         echo -e “\033[31mDoes not support this OS, Please contact the author! \033[0m”
  86.         exit 1
  87. fi
  88. sysctl -p
  89. mknod /dev/random c 1 9
  90. src_url=https://download.openswan.org/openswan/old/openswan-2.6/openswan-2.6.38.tar.gz && Download_src
  91. tar xzf openswan-2.6.38.tar.gz
  92. cd openswan-2.6.38
  93. make programs install
  94. cd ..
  95. cat >/etc/ipsec.conf<<EOF
  96. config setup
  97.     nat_traversal=yes
  98.     virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
  99.     oe=off
  100.     protostack=netkey
  101.     plutostderrlog=/var/log/ipsec.log
  102. conn L2TP-PSK-NAT
  103.     rightsubnet=vhost:%priv
  104.     also=L2TP-PSK-noNAT
  105. conn L2TP-PSK-noNAT
  106.     authby=secret
  107.     type=tunnel
  108.     pfs=no
  109.     auto=add
  110.     keyingtries=3
  111.     rekey=no
  112.     ikelifetime=8h
  113.     keylife=1h
  114.     left=$public_IP
  115.     leftprotoport=17/1701
  116.     right=%any
  117.     rightprotoport=17/%any
  118.     rightsubnetwithin=0.0.0.0/0
  119.     dpddelay=30
  120.     dpdtimeout=120
  121.     dpdaction=clear
  122. EOF
  123. cat >/etc/ipsec.secrets<<EOF
  124. $public_IP %any: PSK “$MYPSK”
  125. EOF
  126. cat > /usr/bin/zl2tpset << EOF
  127. #!/bin/bash
  128. for each in /proc/sys/net/ipv4/conf/*
  129. do
  130.         echo 0 > \$each/accept_redirects
  131.         echo 0 > \$each/send_redirects
  132. done
  133. EOF
  134. chmod +x /usr/bin/zl2tpset
  135. /usr/bin/zl2tpset
  136. [ -z “`grep zl2tpset /etc/rc.local`” ] &&  echo ‘/usr/bin/zl2tpset’ >> /etc/rc.local
  137. service ipsec restart
  138. src_url=http://pkgs.fedoraproject.org/repo/pkgs/xl2tpd/xl2tpd-1.3.6.tar.gz/2f526cc0c36cf6d8a74f1fb2e08c18ec/xl2tpd-1.3.6.tar.gz && Download_src
  139. tar xzf xl2tpd-1.3.6.tar.gz
  140. cd xl2tpd-1.3.6
  141. make install
  142. [ ! -e “/var/run/xl2tpd” ] && mkdir /var/run/xl2tpd
  143. [ ! -e “/etc/xl2tpd” ] && mkdir /etc/xl2tpd
  144. cd ..
  145. cat >/etc/xl2tpd/xl2tpd.conf<<EOF
  146. [global]
  147. listen-addr = $public_IP
  148. ipsec saref = yes
  149. [lns default]
  150. ip range = $iprange.2-$iprange.254
  151. local ip = $iprange.1
  152. refuse chap = yes
  153. refuse pap = yes
  154. require authentication = yes
  155. ppp debug = yes
  156. pppoptfile = /etc/ppp/options.xl2tpd
  157. length bit = yes
  158. EOF
  159. cat >/etc/ppp/options.xl2tpd<<EOF
  160. require-mschap-v2
  161. ms-dns 8.8.8.8
  162. ms-dns 8.8.4.4
  163. noccp
  164. asyncmap 0
  165. auth
  166. crtscts
  167. lock
  168. hide-password
  169. modem
  170. debug
  171. name l2tpd
  172. proxyarp
  173. lcp-echo-interval 30
  174. lcp-echo-failure 4
  175. idle 1800
  176. mtu 1410
  177. mru 1410
  178. nodefaultroute
  179. connect-delay 5000
  180. logfd 2
  181. logfile /var/log/l2tpd.log
  182. EOF
  183. cat >>/etc/ppp/chap-secrets<<EOF
  184. $Username l2tpd $Password *
  185. EOF
  186. NETWORK_INT=`route | grep default | awk ‘{print $NF}’`
  187. iptables -t nat -A POSTROUTING -s ${iprange}.0/24 -o $NETWORK_INT -j MASQUERADE
  188. iptables -I FORWARD -s ${iprange}.0/24 -j ACCEPT
  189. iptables -I FORWARD -d ${iprange}.0/24 -j ACCEPT
  190. iptables -I INPUT -p udp –dport 1701 -j ACCEPT
  191. iptables -I INPUT -p udp –dport 500 -j ACCEPT
  192. iptables -I INPUT -p udp –dport 4500 -j ACCEPT
  193. service iptables save
  194. service ipsec restart
  195. xl2tpd
  196. chkconfig ipsec on
  197. clear
  198. ipsec verify
  199. printf “
  200. Serverip:$public_IP
  201. PSK:$MYPSK
  202. username:$Username
  203. password:$Password

上一篇:

下一篇:

相关文章