⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipsecvpn

📁 sharewall is very good
💻
字号:
#!/bin/sh##################################################################################    ipsecvpn -- script for use on a roadwarrior to start/stop a tunnel-mode#                IPSEC connection##     This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]##     (c) 2004,2005 - Tom Eastep (teastep@shorewall.net)##	This program is free software; you can redistribute it and/or modify#	it under the terms of Version 2 of the GNU General Public License#	as published by the Free Software Foundation.##	This program is distributed in the hope that it will be useful,#	but WITHOUT ANY WARRANTY; without even the implied warranty of#	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the#	GNU General Public License for more details.##	You should have received a copy of the GNU General Public License#	along with this program; if not, write to the Free Software#	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.RCDLINKS="2,S42 3,S42 6,K42"#### BEGIN INIT INFO# Provides:	  ipsecvpn# Required-Start: $shorewall# Required-Stop:# Default-Start:  2 3 5# Default-Stop:	  0 1 6# Description:	  starts and stops a tunnel-mode VPN connection### END INIT INFO# chkconfig: 2345 26 89# description: IPSEC tunnel-mode connection################################################################################### External Interface#INTERFACE=eth0## Remote IPSEC Gateway#GATEWAY=1.2.3.4## Networks behind the remote gateway (space-separated list)#NETWORKS="192.168.1.0/24"## Directory where X.509 certificates are stored.#CERTS=/etc/certs## Certificate to be used for this connection. The cert# directory must contain:##     ${CERT}.pem     - the certificate#     ${CERT}_key.pem - the certificates's key#CERT=roadwarrior##     The setkey binary#SETKEY=/usr/sbin/setkey##     The racoon binary#RACOON=/usr/sbin/racoon## Message to stderr#error_message() # $* = Error Message{   echo "   $@" >&2}## Fatal error -- stops the firewall after issuing the error message#fatal_error() # $* = Error Message{    echo "   Error: $@" >&2    exit 2}## Find interface address--returns the first IP address assigned to the passed# device#find_first_interface_address() # $1 = interface{    #    # get the line of output containing the first IP address    #    addr=$(ip -f inet addr show $1 2> /dev/null | grep inet | head -n1)    #    # If there wasn't one, bail out now    #    [ -n "$addr" ] || fatal_error "Can't determine the IP address of $1"    #    # Strip off the trailing VLSM mask (or the peer IP in case of a P-t-P link)    # along with everything else on the line    #    echo $addr | sed 's/inet //;s/\/.*//;s/ peer.*//'}## Create a Racoon configuration file using the variables above#make_racoon_conf() {    echo "path certificate \"$CERTS\";"    echo    echo "listen"    echo "{"    echo "    isakmp $IPADDR;"    echo "}"    echo    echo "remote $GATEWAY"    echo "{"    echo "    exchange_mode main;"    echo "    certificate_type x509 \"$CERT.pem\" \"${CERT}_key.pem\";"    echo "    verify_cert on;"    echo "    my_identifier asn1dn ;"    echo "    peers_identifier asn1dn ;"    echo "    verify_identifier on ;"    echo "    lifetime time 24 hour ;"    echo "    proposal {"    echo "        encryption_algorithm blowfish;"    echo "        hash_algorithm sha1;"    echo "        authentication_method rsasig ;"    echo "        dh_group 2 ;"    echo "    }"    echo "}"    echo    for network in $NETWORKS; do	echo "sainfo address $IPADDR/32 any address $network any"	echo "{"	echo "    pfs_group 2;"	echo "    lifetime time 12 hour ;"	echo "    encryption_algorithm blowfish ;"	echo "    authentication_algorithm hmac_sha1, hmac_md5 ;"	echo "    compression_algorithm deflate ;"	echo "}"	echo	echo "sainfo address $network any address $IPADDR/32 any"	echo "{"	echo "    pfs_group 2;"	echo "    lifetime time 12 hour ;"	echo "    encryption_algorithm blowfish ;"	echo "    authentication_algorithm hmac_sha1, hmac_md5 ;"	echo "    compression_algorithm deflate ;"	echo "}"    done    echo "sainfo address $IPADDR/32 any address $GATEWAY/32 any"    echo "{"    echo "    pfs_group 2;"    echo "    lifetime time 12 hour ;"    echo "    encryption_algorithm blowfish ;"    echo "    authentication_algorithm hmac_sha1, hmac_md5 ;"    echo "    compression_algorithm deflate ;"    echo "}"    echo    echo "sainfo address $GATEWAY/32 any address $IPADDR/32 any"    echo "{"    echo "    pfs_group 2;"    echo "    lifetime time 12 hour ;"    echo "    encryption_algorithm blowfish ;"    echo "    authentication_algorithm hmac_sha1, hmac_md5 ;"    echo "    compression_algorithm deflate ;"    echo "}"}## Make a setkey configuration file using the variables above#make_setkey_conf(){    echo "flush;"    echo "spdflush;"    echo "spdadd $IPADDR/32 $GATEWAY/32 any -P out  ipsec esp/tunnel/${IPADDR}-${GATEWAY}/require;"    echo "spdadd $GATEWAY/32 $IPADDR/32 any -P in   ipsec esp/tunnel/${GATEWAY}-${IPADDR}/require;"    for network in $NETWORKS; do	echo "spdadd $IPADDR/32 $network any -P out  ipsec esp/tunnel/${IPADDR}-${GATEWAY}/require;"	echo "spdadd $network $IPADDR/32 any -P in   ipsec esp/tunnel/${GATEWAY}-${IPADDR}/require;"    done}## Start the Tunnel#start(){    #    # Get the first IP address configured on the device in INTERFACE    #    IPADDR=$(find_first_interface_address $INTERFACE)    #    # Create the name of the setkey temporary file    #    TEMPFILE=$(mktemp /tmp/$(basename $0).XXXXXXXX)    [ $? -eq 0 ] || fatal_error "Can't create temporary file name"    #    # Create the file    #    make_setkey_conf > $TEMPFILE    #    # Create the SPD    #    $SETKEY -f $TEMPFILE    #    # We can now remove the file    #    rm -f $TEMPFILE    #    # Create another name -- make this distict to aid debugging    # (just comment out the 'rm' commands)    #    TEMPFILE=$(mktemp /tmp/$(basename $0).XXXXXXXX)    [ $? -eq 0 ] || fatal_error "Can't create temporary file name"    #    # Create the file    #    make_racoon_conf > $TEMPFILE    #    # Start Racoon Daemon    #    $RACOON -4 -f $TEMPFILE    #    # Once the Daemon is running, we can remove the file    #    rm -f $TEMPFILE}## Stop the Tunnel#stop(){    #    # Kill any racoon daemons    #    killall racoon    #    # Purge the SAD and SPD    #    setkey -F -FP}## Display command syntax and abend#usage(){    error_message "usage: $(basename $0) [start|stop|restart]"    exit 1}#################################################################################                       C O D E    S T A R T S    H E R E################################################################################[ $# -eq 1 ] || usagecase $1 in    start)	start	;;    stop)	stop	;;    restart)	stop	sleep 2	start	;;    *)	usage	;;esac

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -