
点击上方蓝字:Linux技术宅,关注我!!!

#!/bin/bash############################################################## ## This is a PPTP and L2TP VPN installation for CentOS 7 ## Version: 1.1.1 20160507 ## Author: Bon Hoo ## Website: http://www.ccwebsite.com ## ###############################################################检测是否是root用户if [[ $(id -u) != "0" ]]; thenprintf "\e[42m\e[31mError: You must be root to run this install script.\e[0m\n"exit 1fi#检测是否是CentOS 7或者RHEL 7if [[ $(grep "release 7." etc/redhat-release 2>/dev/null | wc -l) -eq 0 ]]; thenprintf "\e[42m\e[31mError: Your OS is NOT CentOS 7 or RHEL 7.\e[0m\n"printf "\e[42m\e[31mThis install script is ONLY for CentOS 7 and RHEL 7.\e[0m\n"exit 1ficlearprintf ""#获取服务器IPserverip=$(ifconfig -a |grep -w "inet"| grep -v "127.0.0.1" |awk '{print $2;}')printf "\e[33m$serverip\e[0m is the server IP?"printf "If \e[33m$serverip\e[0m is \e[33mcorrect\e[0m, press enter directly."printf "If \e[33m$serverip\e[0m is \e[33mincorrect\e[0m, please input your server IP."printf "(Default server IP: \e[33m$serverip\e[0m):"read serveriptmpif [[ -n "$serveriptmp" ]]; thenserverip=$serveriptmpfi#获取网卡接口名称ethlist=$(ifconfig | grep ": flags" | cut -d ":" -f1)eth=$(printf "$ethlist\n" | head -n 1)if [[ $(printf "$ethlist\n" | wc -l) -gt 2 ]]; thenecho ======================================echo "Network Interface list:"printf "\e[33m$ethlist\e[0m\n"echo ======================================echo "Which network interface you want to listen for ocserv?"printf "Default network interface is \e[33m$eth\e[0m, let it blank to use default network interface: "read ethtmpif [ -n "$ethtmp" ]; theneth=$ethtmpfifi#设置VPN拨号后分配的IP段iprange="10.0.1"echo "Please input IP-Range:"printf "(Default IP-Range: \e[33m$iprange\e[0m): "read iprangetmpif [[ -n "$iprangetmp" ]]; theniprange=$iprangetmpfi#设置预共享密钥mypsk="ueibo.cn"echo "Please input PSK:"printf "(Default PSK: \e[33mueibo.cn\e[0m): "read mypsktmpif [[ -n "$mypsktmp" ]]; thenmypsk=$mypsktmpfi#设置VPN用户名username="ueibo.com"echo "Please input VPN username:"printf "(Default VPN username: \e[33mueibo.com\e[0m): "read usernametmpif [[ -n "$usernametmp" ]]; thenusername=$usernametmpfi#随机密码randstr() {index=0str=""for i in {a..z}; do arr[index]=$i; index=$(expr ${index} + 1); donefor i in {A..Z}; do arr[index]=$i; index=$(expr ${index} + 1); donefor i in {0..9}; do arr[index]=$i; index=$(expr ${index} + 1); donefor i in {1..10}; do str="$str${arr[$RANDOM%$index]}"; doneecho $str}#设置VPN用户密码password=$(randstr)printf "Please input \e[33m$username\e[0m's password:\n"printf "Default password is \e[33m$password\e[0m, let it blank to use default password: "read passwordtmpif [[ -n "$passwordtmp" ]]; thenpassword=$passwordtmpficlear#打印配置参数clearecho "Server IP:"echo "$serverip"echoecho "Server Local IP:"echo "$iprange.1"echoecho "Client Remote IP Range:"echo "$iprange.10-$iprange.254"echoecho "PSK:"echo "$mypsk"echoecho "Press any key to start..."get_char() {SAVEDSTTY=`stty -g`stty -echostty cbreakdd if=/dev/tty bs=1 count=1 2> dev/nullstty -rawstty echostty $SAVEDSTTY}char=$(get_char)clearmknod dev/random c 1 9#更新组件yum update -y#安装epel源yum install epel-release -y#安装依赖的组件yum install -y openswan ppp pptpd xl2tpd wget#创建ipsec.conf配置文件rm -f etc/ipsec.confcat >>/etc/ipsec.conf<<EOF# etc/ipsec.conf - Libreswan IPsec configuration file# This file: etc/ipsec.conf## Enable when using this configuration file with openswan instead of libreswan#version 2## Manual: ipsec.conf.5# basic configurationconfig setup# NAT-TRAVERSAL support, see README.NAT-Traversalnat_traversal=yes# exclude networks used on server side by adding %v4:!a.b.c.0/24virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12# OE is now off by default. Uncomment and change to on, to enable.oe=off# which IPsec stack to use. auto will try netkey, then klips then mastprotostack=netkeyforce_keepalive=yeskeep_alive=1800conn L2TP-PSK-NATrightsubnet=vhost:%privalso=L2TP-PSK-noNATconn L2TP-PSK-noNATauthby=secretpfs=noauto=addkeyingtries=3rekey=noikelifetime=8hkeylife=1htype=transportleft=$serveripleftid=$serveripleftprotoport=17/1701right=%anyrightprotoport=17/%anydpddelay=40dpdtimeout=130dpdaction=clearleftnexthop=%defaultrouterightnexthop=%defaultrouteike=3des-sha1,aes-sha1,aes256-sha1,aes256-sha2_256phase2alg=3des-sha1,aes-sha1,aes256-sha1,aes256-sha2_256sha2-truncbug=yes# For example connections, see your distribution's documentation directory,# or the documentation which could be located at# usr/share/docs/libreswan-3.*/ or look at https://www.libreswan.org/## There is also a lot of information in the manual page, "man ipsec.conf"# You may put your configuration (.conf) file in the "/etc/ipsec.d/" directory# by uncommenting this line#include etc/ipsec.d/*.confEOF#设置预共享密钥配置文件rm -f etc/ipsec.secretscat >>/etc/ipsec.secrets<<EOF#include etc/ipsec.d/*.secrets$serverip %any: PSK "$mypsk"EOF#创建pptpd.conf配置文件rm -f etc/pptpd.confcat >>/etc/pptpd.conf<<EOF#ppp usr/sbin/pppdoption etc/ppp/options.pptpd#debug# stimeout 10#noipparamlogwtmp#vrf test#bcrelay eth1#delegate#connections 100localip $iprange.2remoteip $iprange.200-254EOF#创建xl2tpd.conf配置文件mkdir -p etc/xl2tpdrm -f etc/xl2tpd/xl2tpd.confcat >>/etc/xl2tpd/xl2tpd.conf<<EOF;; This is a minimal sample xl2tpd configuration file for use; with L2TP over IPsec.;; The idea is to provide an L2TP daemon to which remote Windows L2TP/IPsec; clients connect. In this example, the internal (protected) network; is 192.168.1.0/24. A special IP range within this network is reserved; for the remote clients: 192.168.1.128/25; (i.e. 192.168.1.128 ... 192.168.1.254);; The listen-addr parameter can be used if you want to bind the L2TP daemon; to a specific IP address instead of to all interfaces. For instance,; you could bind it to the interface of the internal LAN (e.g. 192.168.1.98; in the example below). Yet another IP address (local ip, e.g. 192.168.1.99); will be used by xl2tpd as its address on pppX interfaces.[global]; ipsec saref = yeslisten-addr = $serveripauth file = etc/ppp/chap-secretsport = 1701[lns default]ip range = $iprange.10-$iprange.199local ip = $iprange.1refuse chap = yesrefuse pap = yesrequire authentication = yesname = L2TPVPNppp debug = yespppoptfile = etc/ppp/options.xl2tpdlength bit = yesEOF#创建options.pptpd配置文件mkdir -p /etc/ppprm -f /etc/ppp/options.pptpdcat >>/etc/ppp/options.pptpd<<EOF# Authenticationname pptpd#chapms-strip-domain# Encryption# BSD licensed ppp-2.4.2 upstream with MPPE only, kernel module ppp_mppe.o# {{{refuse-paprefuse-chaprefuse-mschap# Require the peer to authenticate itself using MS-CHAPv2 [Microsoft# Challenge Handshake Authentication Protocol, Version 2] authentication.require-mschap-v2# Require MPPE 128-bit encryption# (note that MPPE requires the use of MSCHAP-V2 during authentication)require-mppe-128# }}}# OpenSSL licensed ppp-2.4.1 fork with MPPE only, kernel module mppe.o# {{{#-chap#-chapms# Require the peer to authenticate itself using MS-CHAPv2 [Microsoft# Challenge Handshake Authentication Protocol, Version 2] authentication.#+chapms-v2# Require MPPE encryption# (note that MPPE requires the use of MSCHAP-V2 during authentication)#mppe-40 # enable either 40-bit or 128-bit, not both#mppe-128#mppe-stateless# }}}ms-dns 8.8.4.4ms-dns 8.8.8.8#ms-wins 10.0.0.3#ms-wins 10.0.0.4proxyarp#10.8.0.100# Logging#debug#dumplocknobsdcompnovjnovjccompnologfdEOF#创建options.xl2tpd配置文件rm -f /etc/ppp/options.xl2tpdcat >>/etc/ppp/options.xl2tpd<<EOF#require-pap#require-chap#require-mschapipcp-accept-localipcp-accept-remoterequire-mschap-v2ms-dns 8.8.8.8ms-dns 8.8.4.4asyncmap 0authcrtsctslockhide-passwordmodemdebugname l2tpdproxyarplcp-echo-interval 30lcp-echo-failure 4mtu 1400noccpconnect-delay 5000# To allow authentication against a Windows domain EXAMPLE, and require the# user to be in a group "VPN Users". Requires the samba-winbind package# require-mschap-v2# plugin winbind.so# ntlm_auth-helper '/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1 --require-membership-of="EXAMPLE\VPN Users"'# You need to join the domain on the server, for example using samba:# http://rootmanager.com/ubuntu-ipsec-l2tp-windows-domain-auth/setting-up-openswan-xl2tpd-with-native-windows-clients-lucid.htmlEOF#创建chap-secrets配置文件,即用户列表及密码rm -f /etc/ppp/chap-secretscat >>/etc/ppp/chap-secrets<<EOF# Secrets for authentication using CHAP# client server secret IP addresses$username pptpd $password *$username l2tpd $password *EOF#修改系统配置,允许IP转发sysctl -w net.ipv4.ip_forward=1sysctl -w net.ipv4.conf.all.rp_filter=0sysctl -w net.ipv4.conf.default.rp_filter=0sysctl -w net.ipv4.conf.$eth.rp_filter=0sysctl -w net.ipv4.conf.all.send_redirects=0sysctl -w net.ipv4.conf.default.send_redirects=0sysctl -w net.ipv4.conf.all.accept_redirects=0sysctl -w net.ipv4.conf.default.accept_redirects=0cat >>/etc/sysctl.conf<<EOFnet.ipv4.ip_forward = 1net.ipv4.conf.all.rp_filter = 0net.ipv4.conf.default.rp_filter = 0net.ipv4.conf.$eth.rp_filter = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.default.accept_redirects = 0EOF#允许防火墙端口cat >>/usr/lib/firewalld/services/pptpd.xml<<EOF<?xml version="1.0" encoding="utf-8"?><service><short>pptpd</short><description>PPTP and Fuck the GFW</description><port protocol="tcp" port="1723"/></service>EOFcat >>/usr/lib/firewalld/services/l2tpd.xml<<EOF<?xml version="1.0" encoding="utf-8"?><service><short>l2tpd</short><description>L2TP IPSec</description><port protocol="udp" port="500"/><port protocol="udp" port="4500"/><port protocol="udp" port="1701"/></service>EOFfirewall-cmd --reloadfirewall-cmd --permanent --add-service=pptpdfirewall-cmd --permanent --add-service=l2tpdfirewall-cmd --permanent --add-service=ipsecfirewall-cmd --permanent --add-masqueradefirewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -p tcp -i ppp+ -j TCPMSS --syn --set-mss 1356firewall-cmd --reload#iptables --table nat --append POSTROUTING --jump MASQUERADE#iptables -t nat -A POSTROUTING -s $iprange.0/24 -o $eth -j MASQUERADE#iptables -t nat -A POSTROUTING -s $iprange.0/24 -j SNAT --to-source $serverip#iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356#service iptables save#允许开机启动systemctl enable pptpd ipsec xl2tpdsystemctl restart pptpd ipsec xl2tpdclear#测试ipsecipsec verifyprintf "############################################################## ## This is a PPTP and L2TP VPN installation for CentOS 7 ## Version: 1.1.1 20160507 ## Author: Bon Hoo ## Website: http://www.ccwebsite.com ## ##############################################################if there are no [FAILED] above, then you canconnect to your L2TP VPN Server with the defaultuser/password below:ServerIP: $serveripusername: $usernamepassword: $passwordPSK: $mypsk"
该脚本内容仅用于分享,所有权归原作者所有!

分享、在看与点赞
只要你点,我们就是胖友

文章转载自Linux技术宅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




