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

    概念性的东西这里不再赘述,网上有太多,一键安装脚本也有很多,但是很多不能用,能用的也仅仅只是在CentOS6下使用,CentOS7基本没看到这些安装脚本。于是花了一些时间来折腾测试,写这个脚本方便以后VPN的一键安装搭建。其中用的开源软件包是openswan和xl2tpd,,中间碰到过很多很多问题,如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:  //linuxeye.com
    4. #
    5. # This script's project home is:
    6. #       //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 //linuxeye.com/31.html  #
    16. #######################################################################
    17. "
    18. [ ! -e "src" ] && mkdir src
    19. cd src
    20. . ../include/download.sh
    21. while :
    22. do
    23.         echo
    24.         read -p "Please input private IP-Range(Default Range: 10.0.2): " iprange
    25.         [ -z "$iprange" ] && iprange="10.0.2"
    26.         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
    27.                 echo -e "\033[31minput error! Input format: xxx.xxx.xxx\033[0m"
    28.         else
    29.                 break
    30.         fi
    31. done
    32. echo
    33. read -p "Please input PSK(Default PSK: psk): " MYPSK
    34. [ -z "$MYPSK" ] && MYPSK="psk"
    35. while :
    36. do
    37.         echo
    38.         read -p "Please input username: " Username
    39.         [ -n "$Username" ] && break
    40. done
    41. while :
    42. do
    43.         echo
    44.         read -p "Please input password: " Password
    45.         [ -n "$Password" ] && break
    46. done
    47. clear
    48. public_IP=`../functions/get_public_ip.py`
    49. get_char()
    50. {
    51. SAVEDSTTY=`stty -g`
    52. stty -echo
    53. stty cbreak
    54. dd if=/dev/tty bs=1 count=1 2> /dev/null
    55. stty -raw
    56. stty echo
    57. stty $SAVEDSTTY
    58. }
    59. echo ""
    60. echo "ServerIP:$public_IP"
    61. echo ""
    62. echo "Server Local IP:$iprange.1"
    63. echo ""
    64. echo "Client Remote IP Range:$iprange.2-$iprange.254"
    65. echo ""
    66. echo "PSK:$MYPSK"
    67. echo ""
    68. echo "Press any key to start..."
    69. char=`get_char`
    70. clear
    71. if [ -n "`grep 'CentOS Linux release 7' /etc/redhat-release`" ];then
    72.         CentOS_REL=7
    73.         for Package in wget ppp iptables iptables-services make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof vim-enhanced
    74.         do
    75.                 yum -y install $Package
    76.         done
    77.         echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
    78. elif [ -n "`grep 'CentOS release 6' /etc/redhat-release`" ];then
    79.         CentOS_REL=6
    80.         for Package in wget ppp iptables make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof vim-enhanced
    81.         do
    82.                 yum -y install $Package
    83.         done
    84.         sed -i 's@net.ipv4.ip_forward.*@net.ipv4.ip_forward = 1@g' /etc/sysctl.conf
    85. else
    86.         echo -e "\033[31mDoes not support this OS, Please contact the author! \033[0m"
    87.         exit 1
    88. fi
    89. sysctl -p
    90. mknod /dev/random c 1 9
    91. src_url=https://download.openswan.org/openswan/old/openswan-2.6/openswan-2.6.38.tar.gz && Download_src
    92. tar xzf openswan-2.6.38.tar.gz
    93. cd openswan-2.6.38
    94. make programs install
    95. cd ..
    96. cat >/etc/ipsec.conf<<EOF
    97. config setup
    98.     nat_traversal=yes
    99.     virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    100.     oe=off
    101.     protostack=netkey
    102.     plutostderrlog=/var/log/ipsec.log
    103. conn L2TP-PSK-NAT
    104.     rightsubnet=vhost:%priv
    105.     also=L2TP-PSK-noNAT
    106. conn L2TP-PSK-noNAT
    107.     authby=secret
    108.     type=tunnel
    109.     pfs=no
    110.     auto=add
    111.     keyingtries=3
    112.     rekey=no
    113.     ikelifetime=8h
    114.     keylife=1h
    115.     left=$public_IP
    116.     leftprotoport=17/1701
    117.     right=%any
    118.     rightprotoport=17/%any
    119.     rightsubnetwithin=0.0.0.0/0
    120.     dpddelay=30
    121.     dpdtimeout=120
    122.     dpdaction=clear
    123. EOF
    124. cat >/etc/ipsec.secrets<<EOF
    125. $public_IP %any: PSK "$MYPSK"
    126. EOF
    127. cat > /usr/bin/zl2tpset << EOF
    128. #!/bin/bash
    129. for each in /proc/sys/net/ipv4/conf/*
    130. do
    131.         echo 0 > \$each/accept_redirects
    132.         echo 0 > \$each/send_redirects
    133. done
    134. EOF
    135. chmod +x /usr/bin/zl2tpset
    136. /usr/bin/zl2tpset
    137. [ -z "`grep zl2tpset /etc/rc.local`" ] &&  echo '/usr/bin/zl2tpset' >> /etc/rc.local
    138. service ipsec restart
    139. src_url=http://pkgs.fedoraproject.org/repo/pkgs/xl2tpd/xl2tpd-1.3.6.tar.gz/2f526cc0c36cf6d8a74f1fb2e08c18ec/xl2tpd-1.3.6.tar.gz && Download_src
    140. tar xzf xl2tpd-1.3.6.tar.gz
    141. cd xl2tpd-1.3.6
    142. make install
    143. [ ! -e "/var/run/xl2tpd" ] && mkdir /var/run/xl2tpd
    144. [ ! -e "/etc/xl2tpd" ] && mkdir /etc/xl2tpd
    145. cd ..
    146. cat >/etc/xl2tpd/xl2tpd.conf<<EOF
    147. [global]
    148. listen-addr = $public_IP
    149. ipsec saref = yes
    150. [lns default]
    151. ip range = $iprange.2-$iprange.254
    152. local ip = $iprange.1
    153. refuse chap = yes
    154. refuse pap = yes
    155. require authentication = yes
    156. ppp debug = yes
    157. pppoptfile = /etc/ppp/options.xl2tpd
    158. length bit = yes
    159. EOF
    160. cat >/etc/ppp/options.xl2tpd<<EOF
    161. require-mschap-v2
    162. ms-dns 8.8.8.8
    163. ms-dns 8.8.4.4
    164. noccp
    165. asyncmap 0
    166. auth
    167. crtscts
    168. lock
    169. hide-password
    170. modem
    171. debug
    172. name l2tpd
    173. proxyarp
    174. lcp-echo-interval 30
    175. lcp-echo-failure 4
    176. idle 1800
    177. mtu 1410
    178. mru 1410
    179. nodefaultroute
    180. connect-delay 5000
    181. logfd 2
    182. logfile /var/log/l2tpd.log
    183. EOF
    184. cat >>/etc/ppp/chap-secrets<<EOF
    185. $Username l2tpd $Password *
    186. EOF
    187. NETWORK_INT=`route | grep default | awk '{print $NF}'`
    188. iptables -t nat -A POSTROUTING -s ${iprange}.0/24 -o $NETWORK_INT -j MASQUERADE
    189. iptables -I FORWARD -s ${iprange}.0/24 -j ACCEPT
    190. iptables -I FORWARD -d ${iprange}.0/24 -j ACCEPT
    191. iptables -I INPUT -p udp --dport 1701 -j ACCEPT
    192. iptables -I INPUT -p udp --dport 500 -j ACCEPT
    193. iptables -I INPUT -p udp --dport 4500 -j ACCEPT
    194. service iptables save
    195. service ipsec restart
    196. xl2tpd
    197. chkconfig ipsec on
    198. clear
    199. ipsec verify
    200. printf "
    201. Serverip:$public_IP
    202. PSK:$MYPSK
    203. username:$Username
    204. password:$Password
    205. "
    Wed Nov 17 16:23:59 CST 2014
    • 本文由 发表于 2014-11-17
    • 转载请务必保留本文链接:https://linuxeye.com/403.html
    CentOS 6、7下pptp vpn一键安装脚本 脚本

    CentOS 6、7下pptp vpn一键安装脚本

    之前有折腾过《CentOS 6、7下IPSEC/L2TP VPN一键安装脚本》,不稳定、不支持IOS,因此换成pptp,并已经添加到《lnmp一键安装包》。这个脚本可以单独使用,直接复制或下载执行即可...
    CentOS 7下hhvm Nginx环境搭建 Linux

    CentOS 7下hhvm Nginx环境搭建

    CentOS 7(hhvm只支持64位)下hhvm Nginx环境搭建,前面有介绍《CentOS 6下hhvm Nginx环境搭建》,到目前为止CentOS 7下还没有hhvm rpm安装包,因此采用...
    CentOS 6下hhvm Nginx环境搭建 Linux

    CentOS 6下hhvm Nginx环境搭建

    HHVM(HipHop Virtual Machine)会将PHP代码转换成高级别的字节码(通常称为中间语言)。然后在运行时通过即时(JIT)编译器将这些字节码转换为x64的机器码。在这些方面,HHV...
    匿名

    发表评论

    匿名网友

      • avatar google

        您好,这个ipsic脚本下载下来,之后是pptp的,直接复制您写的脚本,没有下载脚本,请您更新下。
        我没有这个文件 /functions/download.sh

          • avatar yeho

            @ google 已更新,这个脚本以后不会维护

          • avatar wd1900

            您好,我应用这个脚本后,输出
            SAref kernel support [N/A]
            请问该如何解决

            • avatar 百易吧

              请问这个怎么添加账号呢? 只能一个账号吗?

              • avatar 小强

                如何重启服务。。。。我是小白。

                • avatar Leey

                  centos7安装成功(有一些改动)
                  脚本是直接复制博主上面贴出来的,执行脚本后有些文件未找到( /functions/download.sh和./functions/get_public_ip.py),这俩文件在oneinstack/include下,简单的修改了下脚本,执行成功。很顺利