mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-30 23:16:17 +02:00
b5cb1795de
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7490 3c298f89-4303-0410-b956-a3cf2f4a3e73
663 lines
19 KiB
Diff
663 lines
19 KiB
Diff
Index: strongswan-2.8.2/programs/_updown/_updown.8
|
|
===================================================================
|
|
--- strongswan-2.8.2.orig/programs/_updown/_updown.8 2007-06-04 13:23:04.632029720 +0200
|
|
+++ strongswan-2.8.2/programs/_updown/_updown.8 2007-06-04 13:23:06.656721920 +0200
|
|
@@ -8,8 +8,23 @@
|
|
.I _updown
|
|
is invoked by pluto when it has brought up a new connection. This script
|
|
is used to insert the appropriate routing entries for IPsec operation.
|
|
-It can also be used to insert and delete dynamic iptables firewall rules.
|
|
-The interface to the script is documented in the pluto man page.
|
|
+It also inserts and deletes dynamic iptables firewall rules. IMPORTANT!
|
|
+By default, it will ACCEPT as appropriate on the INPUT, OUTPUT, FORWARD
|
|
+tables. Most distributions will want to change that to provide more
|
|
+flexibility in their firewall configuration.
|
|
+The script looks for the environment variables
|
|
+.B IPSEC_UPDOWN_RULE_IN
|
|
+for the iptables table it should insert into,
|
|
+.B IPSEC_UPDOWN_DEST_IN
|
|
+for where the rule should -j jump to,
|
|
+.B IPSEC_UPDOWN_RULE_OUT
|
|
+.B IPSEC_UPDOWN_DEST_OUT
|
|
+for the same on outgoing packets, and
|
|
+.B IPSEC_UPDOWN_FWD_RULE_IN
|
|
+.B IPSEC_UPDOWN_FWD_DEST_IN
|
|
+.B IPSEC_UPDOWN_FWD_RULE_OUT
|
|
+.B IPSEC_UPDOWN_FWD_DEST_OUT
|
|
+respectively for packets being forwarded to/from the local networks.
|
|
.SH "SEE ALSO"
|
|
ipsec(8), ipsec_pluto(8).
|
|
.SH HISTORY
|
|
Index: strongswan-2.8.2/programs/_updown/_updown.in
|
|
===================================================================
|
|
--- strongswan-2.8.2.orig/programs/_updown/_updown.in 2007-06-04 13:23:04.642028200 +0200
|
|
+++ strongswan-2.8.2/programs/_updown/_updown.in 2007-06-04 13:23:06.657721768 +0200
|
|
@@ -5,6 +5,7 @@
|
|
# Copyright (C) 2003-2004 Tuomo Soini
|
|
# Copyright (C) 2002-2004 Michael Richardson
|
|
# Copyright (C) 2005-2006 Andreas Steffen <andreas.steffen@strongswan.org>
|
|
+# Copyright (C) 2007 Kevin Cody Jr <kcody@vegaresearch.com>
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by the
|
|
@@ -118,20 +119,61 @@
|
|
# restricted on the peer side.
|
|
#
|
|
|
|
-# uncomment to log VPN connections
|
|
-VPN_LOGGING=1
|
|
-#
|
|
+# set to /bin/true to silence log messages
|
|
+LOGGER=logger
|
|
+
|
|
# tag put in front of each log entry:
|
|
TAG=vpn
|
|
-#
|
|
+
|
|
# syslog facility and priority used:
|
|
-FAC_PRIO=local0.notice
|
|
-#
|
|
-# to create a special vpn logging file, put the following line into
|
|
-# the syslog configuration file /etc/syslog.conf:
|
|
-#
|
|
-# local0.notice -/var/log/vpn
|
|
-#
|
|
+FAC_PRIO=authpriv.info
|
|
+
|
|
+
|
|
+# in the presence of KLIPS and ipsecN interfaces do not use IPSEC_POLICY
|
|
+if [ `echo "$PLUTO_INTERFACE" | grep "ipsec"` ] ; then
|
|
+ IPSEC_POLICY_IN=""
|
|
+ IPSEC_POLICY_OUT=""
|
|
+else
|
|
+ IPSEC_POLICY="-m policy --pol ipsec --proto esp --reqid $PLUTO_REQID"
|
|
+ IPSEC_POLICY_IN="$IPSEC_POLICY --dir in"
|
|
+ IPSEC_POLICY_OUT="$IPSEC_POLICY --dir out"
|
|
+fi
|
|
+
|
|
+# are there port numbers?
|
|
+if [ "$PLUTO_MY_PORT" != 0 ] ; then
|
|
+ S_MY_PORT="--sport $PLUTO_MY_PORT"
|
|
+ D_MY_PORT="--dport $PLUTO_MY_PORT"
|
|
+fi
|
|
+
|
|
+if [ "$PLUTO_PEER_PORT" != 0 ] ; then
|
|
+ S_PEER_PORT="--sport $PLUTO_PEER_PORT"
|
|
+ D_PEER_PORT="--dport $PLUTO_PEER_PORT"
|
|
+fi
|
|
+
|
|
+# import firewall behavior
|
|
+IPT_RULE_IN=$IPSEC_UPDOWN_RULE_IN
|
|
+IPT_DEST_IN=$IPSEC_UPDOWN_DEST_IN
|
|
+IPT_RULE_OUT=$IPSEC_UPDOWN_RULE_OUT
|
|
+IPT_DEST_OUT=$IPSEC_UPDOWN_DEST_OUT
|
|
+
|
|
+# import forwarding behavior
|
|
+FWD_RULE_IN=$IPSEC_UPDOWN_FWD_RULE_IN
|
|
+FWD_DEST_IN=$IPSEC_UPDOWN_FWD_DEST_IN
|
|
+FWD_RULE_OUT=$IPSEC_UPDOWN_FWD_RULE_OUT
|
|
+FWD_DEST_OUT=$IPSEC_UPDOWN_FWD_DEST_OUT
|
|
+
|
|
+# default firewall behavior
|
|
+[ -z "$IPT_RULE_IN" ] && IPT_RULE_IN=INPUT
|
|
+[ -z "$IPT_DEST_IN" ] && IPT_DEST_IN=ACCEPT
|
|
+[ -z "$IPT_RULE_OUT" ] && IPT_RULE_OUT=OUTPUT
|
|
+[ -z "$IPT_DEST_OUT" ] && IPT_DEST_OUT=ACCEPT
|
|
+
|
|
+# default forwarding behavior
|
|
+[ -z "$FWD_RULE_IN" ] && FWD_RULE_IN=FORWARD
|
|
+[ -z "$FWD_DEST_IN" ] && FWD_DEST_IN=ACCEPT
|
|
+[ -z "$FWD_RULE_OUT" ] && FWD_RULE_OUT=FORWARD
|
|
+[ -z "$FWD_DEST_OUT" ] && FWD_DEST_OUT=ACCEPT
|
|
+
|
|
|
|
# check interface version
|
|
case "$PLUTO_VERSION" in
|
|
@@ -150,8 +192,6 @@
|
|
case "$1:$*" in
|
|
':') # no parameters
|
|
;;
|
|
-iptables:iptables) # due to (left/right)firewall; for default script only
|
|
- ;;
|
|
custom:*) # custom parameters (see above CAUTION comment)
|
|
;;
|
|
*) echo "$0: unknown parameters \`$*'" >&2
|
|
@@ -159,345 +199,307 @@
|
|
;;
|
|
esac
|
|
|
|
+
|
|
# utility functions for route manipulation
|
|
# Meddling with this stuff should not be necessary and requires great care.
|
|
+
|
|
uproute() {
|
|
doroute add
|
|
ip route flush cache
|
|
}
|
|
+
|
|
downroute() {
|
|
doroute delete
|
|
ip route flush cache
|
|
}
|
|
|
|
+upfirewall() {
|
|
+ in_rule=$1
|
|
+ in_dest=$2
|
|
+ out_rule=$3
|
|
+ out_dest=$4
|
|
+
|
|
+ [ -n "$in_rule" -a -n "$in_dest" ] && \
|
|
+ iptables -I $in_rule 1 \
|
|
+ -i $PLUTO_INTERFACE \
|
|
+ -p $PLUTO_MY_PROTOCOL \
|
|
+ -s $PLUTO_PEER_CLIENT $S_PEER_PORT \
|
|
+ -d $PLUTO_MY_CLIENT $D_MY_PORT \
|
|
+ $IPSEC_POLICY_IN \
|
|
+ -j $in_dest
|
|
+
|
|
+ [ -n "$out_rule" -a -n "$out_dest" ] && \
|
|
+ iptables -I $out_rule 1 \
|
|
+ -o $PLUTO_INTERFACE \
|
|
+ -p $PLUTO_PEER_PROTOCOL \
|
|
+ -s $PLUTO_MY_CLIENT $S_MY_PORT \
|
|
+ -d $PLUTO_PEER_CLIENT $D_PEER_PORT \
|
|
+ $IPSEC_POLICY_OUT \
|
|
+ -j $out_dest
|
|
+
|
|
+}
|
|
+
|
|
+downfirewall() {
|
|
+ in_rule=$1
|
|
+ in_dest=$2
|
|
+ out_rule=$3
|
|
+ out_dest=$4
|
|
+
|
|
+ [ -n "$in_rule" -a -n "$in_dest" ] && \
|
|
+ iptables -D $in_rule \
|
|
+ -i $PLUTO_INTERFACE \
|
|
+ -p $PLUTO_MY_PROTOCOL \
|
|
+ -s $PLUTO_PEER_CLIENT $S_PEER_PORT \
|
|
+ -d $PLUTO_MY_CLIENT $D_MY_PORT \
|
|
+ $IPSEC_POLICY_IN \
|
|
+ -j $in_dest
|
|
+
|
|
+ [ -n "$out_rule" -a -n "$out_dest" ] && \
|
|
+ iptables -D $out_rule \
|
|
+ -o $PLUTO_INTERFACE \
|
|
+ -p $PLUTO_PEER_PROTOCOL \
|
|
+ -s $PLUTO_MY_CLIENT $S_MY_PORT \
|
|
+ -d $PLUTO_PEER_CLIENT $D_PEER_PORT \
|
|
+ $IPSEC_POLICY_OUT \
|
|
+ -j $out_dest
|
|
+
|
|
+}
|
|
+
|
|
addsource() {
|
|
st=0
|
|
- if ! ip -o route get ${PLUTO_MY_SOURCEIP%/*} | grep -q ^local
|
|
- then
|
|
+
|
|
+ if ! ip -o route get ${PLUTO_MY_SOURCEIP%/*} | grep -q ^local ; then
|
|
+
|
|
it="ip addr add ${PLUTO_MY_SOURCEIP%/*}/32 dev $PLUTO_INTERFACE"
|
|
oops="`eval $it 2>&1`"
|
|
st=$?
|
|
- if test " $oops" = " " -a " $st" != " 0"
|
|
- then
|
|
+
|
|
+ if [ " $oops" = " " -a " $st" != " 0" ] ; then
|
|
oops="silent error, exit status $st"
|
|
fi
|
|
- if test " $oops" != " " -o " $st" != " 0"
|
|
- then
|
|
+
|
|
+ if [ " $oops" != " " -o " $st" != " 0" ] ; then
|
|
echo "$0: addsource \`$it' failed ($oops)" >&2
|
|
fi
|
|
fi
|
|
+
|
|
return $st
|
|
}
|
|
|
|
doroute() {
|
|
st=0
|
|
parms="$PLUTO_PEER_CLIENT"
|
|
+ parms2="dev $PLUTO_INTERFACE"
|
|
|
|
- parms2=
|
|
- if [ -n "$PLUTO_NEXT_HOP" ]
|
|
- then
|
|
- parms2="via $PLUTO_NEXT_HOP"
|
|
- fi
|
|
- parms2="$parms2 dev $PLUTO_INTERFACE"
|
|
-
|
|
- if [ -z "$PLUTO_MY_SOURCEIP" ]
|
|
- then
|
|
- if [ -f /etc/sysconfig/defaultsource ]
|
|
- then
|
|
- . /etc/sysconfig/defaultsource
|
|
- fi
|
|
+ if [ -z "$PLUTO_MY_SOURCEIP" ] ; then
|
|
|
|
- if [ -f /etc/conf.d/defaultsource ]
|
|
- then
|
|
- . /etc/conf.d/defaultsource
|
|
- fi
|
|
+ [ -f /etc/sysconfig/defaultsource ] && \
|
|
+ . /etc/sysconfig/defaultsource
|
|
+
|
|
+ [ -f /etc/conf.d/defaultsource ] && \
|
|
+ . /etc/conf.d/defaultsource
|
|
+
|
|
+ [ -n "$DEFAULTSOURCE" ] && \
|
|
+ PLUTO_MY_SOURCEIP=$DEFAULTSOURCE
|
|
|
|
- if [ -n "$DEFAULTSOURCE" ]
|
|
- then
|
|
- PLUTO_MY_SOURCEIP=$DEFAULTSOURCE
|
|
- fi
|
|
fi
|
|
|
|
parms3=
|
|
- if test "$1" = "add" -a -n "$PLUTO_MY_SOURCEIP"
|
|
- then
|
|
+ if [ "$1" = "add" -a -n "$PLUTO_MY_SOURCEIP" ] ; then
|
|
addsource
|
|
parms3="$parms3 src ${PLUTO_MY_SOURCEIP%/*}"
|
|
fi
|
|
|
|
- case "$PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK" in
|
|
- "0.0.0.0/0.0.0.0")
|
|
+ if [ "$PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK" = \
|
|
+ "0.0.0.0/0.0.0.0" ] ; then
|
|
# opportunistic encryption work around
|
|
# need to provide route that eclipses default, without
|
|
# replacing it.
|
|
- it="ip route $1 0.0.0.0/1 $parms2 $parms3 &&
|
|
- ip route $1 128.0.0.0/1 $parms2 $parms3"
|
|
- ;;
|
|
- *) it="ip route $1 $parms $parms2 $parms3"
|
|
- ;;
|
|
- esac
|
|
+ it="ip route $1 0.0.0.0/1 $parms2 $parms3 &&
|
|
+ ip route $1 128.0.0.0/1 $parms2 $parms3"
|
|
+ else
|
|
+ it="ip route $1 $parms $parms2 $parms3"
|
|
+ fi
|
|
+
|
|
oops="`eval $it 2>&1`"
|
|
st=$?
|
|
- if test " $oops" = " " -a " $st" != " 0"
|
|
- then
|
|
- oops="silent error, exit status $st"
|
|
- fi
|
|
- if test " $oops" != " " -o " $st" != " 0"
|
|
- then
|
|
- echo "$0: doroute \`$it' failed ($oops)" >&2
|
|
+
|
|
+ if [ " $oops" = " " -a " $st" != " 0" ] ; then
|
|
+ oops="silent error, exit status $st"
|
|
fi
|
|
+
|
|
+ if [ " $oops" != " " -o " $st" != " 0" ] ; then
|
|
+ echo "$0: doroute \`$it' failed ($oops)" >&2
|
|
+ fi
|
|
+
|
|
return $st
|
|
}
|
|
-
|
|
-# in the presence of KLIPS and ipsecN interfaces do not use IPSEC_POLICY
|
|
-if [ `echo "$PLUTO_INTERFACE" | grep "ipsec"` ]
|
|
-then
|
|
- IPSEC_POLICY_IN=""
|
|
- IPSEC_POLICY_OUT=""
|
|
-else
|
|
- IPSEC_POLICY="-m policy --pol ipsec --proto esp --reqid $PLUTO_REQID"
|
|
- IPSEC_POLICY_IN="$IPSEC_POLICY --dir in"
|
|
- IPSEC_POLICY_OUT="$IPSEC_POLICY --dir out"
|
|
-fi
|
|
|
|
-# are there port numbers?
|
|
-if [ "$PLUTO_MY_PORT" != 0 ]
|
|
-then
|
|
- S_MY_PORT="--sport $PLUTO_MY_PORT"
|
|
- D_MY_PORT="--dport $PLUTO_MY_PORT"
|
|
-fi
|
|
-if [ "$PLUTO_PEER_PORT" != 0 ]
|
|
-then
|
|
- S_PEER_PORT="--sport $PLUTO_PEER_PORT"
|
|
- D_PEER_PORT="--dport $PLUTO_PEER_PORT"
|
|
-fi
|
|
+dologentry() {
|
|
+ action=$1
|
|
+
|
|
+ if [ "$PLUTO_PEER_CLIENT" == "$PLUTO_PEER/32" ] ; then
|
|
+ rem="$PLUTO_PEER"
|
|
+ else
|
|
+ rem="$PLUTO_PEER_CLIENT == $PLUTO_PEER"
|
|
+ fi
|
|
+
|
|
+ if [ "$PLUTO_MY_CLIENT" == "$PLUTO_ME/32" ] ; then
|
|
+ loc="$PLUTO_ME"
|
|
+ else
|
|
+ loc="$PLUTO_ME == $PLUTO_MY_CLIENT"
|
|
+ fi
|
|
+
|
|
+ $LOGGER -t $TAG -p $FAC_PRIO "$action $rem -- $loc ($PLUTO_PEER_ID)"
|
|
+}
|
|
+
|
|
|
|
# the big choice
|
|
+
|
|
case "$PLUTO_VERB:$1" in
|
|
prepare-host:*|prepare-client:*)
|
|
# delete possibly-existing route (preliminary to adding a route)
|
|
- case "$PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK" in
|
|
- "0.0.0.0/0.0.0.0")
|
|
- # need to provide route that eclipses default, without
|
|
+
|
|
+ if [ "$PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK" = \
|
|
+ "0.0.0.0/0.0.0.0" ] ; then
|
|
+ # need to remove the route that eclipses default, without
|
|
# replacing it.
|
|
- parms1="0.0.0.0/1"
|
|
- parms2="128.0.0.0/1"
|
|
- it="ip route delete $parms1 2>&1 ; ip route delete $parms2 2>&1"
|
|
- oops="`ip route delete $parms1 2>&1 ; ip route delete $parms2 2>&1`"
|
|
- ;;
|
|
- *)
|
|
- parms="$PLUTO_PEER_CLIENT"
|
|
- it="ip route delete $parms 2>&1"
|
|
- oops="`ip route delete $parms 2>&1`"
|
|
- ;;
|
|
- esac
|
|
- status="$?"
|
|
- if test " $oops" = " " -a " $status" != " 0"
|
|
- then
|
|
- oops="silent error, exit status $status"
|
|
+ it="( ip route delete 0.0.0.0/1 ;
|
|
+ ip route delete 128.0.0.0/1 )"
|
|
+ else
|
|
+ it="ip route delete $PLUTO_PEER_CLIENT"
|
|
+ fi
|
|
+
|
|
+ oops="`$it 2>&1`"
|
|
+ st="$?"
|
|
+
|
|
+ if [ " $oops" = " " -a " $st" != " 0" ] ; then
|
|
+ oops="silent error, exit status $st"
|
|
fi
|
|
+
|
|
case "$oops" in
|
|
*'RTNETLINK answers: No such process'*)
|
|
# This is what route (currently -- not documented!) gives
|
|
# for "could not find such a route".
|
|
oops=
|
|
- status=0
|
|
+ st=0
|
|
;;
|
|
esac
|
|
- if test " $oops" != " " -o " $status" != " 0"
|
|
- then
|
|
+
|
|
+ if [ " $oops" != " " -o " $st" != " 0" ] ; then
|
|
echo "$0: \`$it' failed ($oops)" >&2
|
|
fi
|
|
- exit $status
|
|
+
|
|
+ exit $st
|
|
+
|
|
;;
|
|
route-host:*|route-client:*)
|
|
# connection to me or my client subnet being routed
|
|
+
|
|
+ ipsec _showstatus valid
|
|
uproute
|
|
+
|
|
;;
|
|
unroute-host:*|unroute-client:*)
|
|
# connection to me or my client subnet being unrouted
|
|
+
|
|
+ ipsec _showstatus invalid
|
|
downroute
|
|
+
|
|
;;
|
|
-up-host:)
|
|
+up-host:*)
|
|
# connection to me coming up
|
|
- # If you are doing a custom version, firewall commands go here.
|
|
+
|
|
+ ipsec _showstatus up
|
|
+ upfirewall $IPT_RULE_IN $IPT_DEST_IN $IPT_RULE_OUT $OUT_DEST_OUT
|
|
+ dologentry "VPN-UP"
|
|
+
|
|
;;
|
|
-down-host:)
|
|
+down-host:*)
|
|
# connection to me going down
|
|
- # If you are doing a custom version, firewall commands go here.
|
|
- ;;
|
|
-up-client:)
|
|
- # connection to my client subnet coming up
|
|
- # If you are doing a custom version, firewall commands go here.
|
|
- ;;
|
|
-down-client:)
|
|
- # connection to my client subnet going down
|
|
- # If you are doing a custom version, firewall commands go here.
|
|
+
|
|
+ ipsec _showstatus down
|
|
+ downfirewall $IPT_RULE_IN $IPT_DEST_IN $IPT_RULE_OUT $OUT_DEST_OUT
|
|
+ dologentry "VPN-DN"
|
|
+
|
|
;;
|
|
-up-host:iptables)
|
|
- # connection to me, with (left/right)firewall=yes, coming up
|
|
- # This is used only by the default updown script, not by your custom
|
|
- # ones, so do not mess with it; see CAUTION comment up at top.
|
|
- iptables -I INPUT 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
|
|
- -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $S_PEER_PORT \
|
|
- -d $PLUTO_ME $D_MY_PORT $IPSEC_POLICY_IN -j ACCEPT
|
|
- iptables -I OUTPUT 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
|
|
- -s $PLUTO_ME $S_MY_PORT $IPSEC_POLICY_OUT \
|
|
- -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $D_PEER_PORT -j ACCEPT
|
|
- #
|
|
- # log IPsec host connection setup
|
|
- if [ $VPN_LOGGING ]
|
|
- then
|
|
- if [ "$PLUTO_PEER_CLIENT" == "$PLUTO_PEER/32" ]
|
|
- then
|
|
- logger -t $TAG -p $FAC_PRIO \
|
|
- "+ `echo -e $PLUTO_PEER_ID` $PLUTO_PEER -- $PLUTO_ME"
|
|
- else
|
|
- logger -t $TAG -p $FAC_PRIO \
|
|
- "+ `echo -e $PLUTO_PEER_ID` $PLUTO_PEER_CLIENT == $PLUTO_PEER -- $PLUTO_ME"
|
|
- fi
|
|
- fi
|
|
- ;;
|
|
-down-host:iptables)
|
|
- # connection to me, with (left/right)firewall=yes, going down
|
|
- # This is used only by the default updown script, not by your custom
|
|
- # ones, so do not mess with it; see CAUTION comment up at top.
|
|
- iptables -D INPUT -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
|
|
- -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $S_PEER_PORT \
|
|
- -d $PLUTO_ME $D_MY_PORT $IPSEC_POLICY_IN -j ACCEPT
|
|
- iptables -D OUTPUT -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
|
|
- -s $PLUTO_ME $S_MY_PORT $IPSEC_POLICY_OUT \
|
|
- -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $D_PEER_PORT -j ACCEPT
|
|
- #
|
|
- # log IPsec host connection teardown
|
|
- if [ $VPN_LOGGING ]
|
|
- then
|
|
- if [ "$PLUTO_PEER_CLIENT" == "$PLUTO_PEER/32" ]
|
|
- then
|
|
- logger -t $TAG -p $FAC_PRIO -- \
|
|
- "- `echo -e $PLUTO_PEER_ID` $PLUTO_PEER -- $PLUTO_ME"
|
|
- else
|
|
- logger -t $TAG -p $FAC_PRIO -- \
|
|
- "- `echo -e $PLUTO_PEER_ID` $PLUTO_PEER_CLIENT == $PLUTO_PEER -- $PLUTO_ME"
|
|
- fi
|
|
- fi
|
|
- ;;
|
|
-up-client:iptables)
|
|
- # connection to client subnet, with (left/right)firewall=yes, coming up
|
|
- # This is used only by the default updown script, not by your custom
|
|
- # ones, so do not mess with it; see CAUTION comment up at top.
|
|
- if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/32" ]
|
|
- then
|
|
- iptables -I FORWARD 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
|
|
- -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK $S_MY_PORT \
|
|
- -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $D_PEER_PORT \
|
|
- $IPSEC_POLICY_OUT -j ACCEPT
|
|
- iptables -I FORWARD 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
|
|
- -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $S_PEER_PORT \
|
|
- -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK $D_MY_PORT \
|
|
- $IPSEC_POLICY_IN -j ACCEPT
|
|
+up-client:*)
|
|
+ # connection to client subnet coming up
|
|
+
|
|
+ ipsec _showstatus up
|
|
+
|
|
+ if [ "$PLUTO_MY_CLIENT" != "$PLUTO_ME/32" -a \
|
|
+ "$PLUTO_MY_CLIENT" != "$PLUTO_MY_SOURCEIP/32" ] ; then
|
|
+ upfirewall $FWD_RULE_IN $FWD_DEST_IN $FWD_RULE_OUT $FWD_DEST_OUT
|
|
fi
|
|
- #
|
|
+
|
|
# a virtual IP requires an INPUT and OUTPUT rule on the host
|
|
# or sometimes host access via the internal IP is needed
|
|
- if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ]
|
|
- then
|
|
- iptables -I INPUT 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
|
|
- -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $S_PEER_PORT \
|
|
- -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK $D_MY_PORT \
|
|
- $IPSEC_POLICY_IN -j ACCEPT
|
|
- iptables -I OUTPUT 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
|
|
- -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK $S_MY_PORT \
|
|
- -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $D_PEER_PORT \
|
|
- $IPSEC_POLICY_OUT -j ACCEPT
|
|
- fi
|
|
- #
|
|
- # log IPsec client connection setup
|
|
- if [ $VPN_LOGGING ]
|
|
- then
|
|
- if [ "$PLUTO_PEER_CLIENT" == "$PLUTO_PEER/32" ]
|
|
- then
|
|
- logger -t $TAG -p $FAC_PRIO \
|
|
- "+ `echo -e $PLUTO_PEER_ID` $PLUTO_PEER -- $PLUTO_ME == $PLUTO_MY_CLIENT"
|
|
- else
|
|
- logger -t $TAG -p $FAC_PRIO \
|
|
- "+ `echo -e $PLUTO_PEER_ID` $PLUTO_PEER_CLIENT == $PLUTO_PEER -- $PLUTO_ME == $PLUTO_MY_CLIENT"
|
|
- fi
|
|
- fi
|
|
- ;;
|
|
-down-client:iptables)
|
|
- # connection to client subnet, with (left/right)firewall=yes, going down
|
|
- # This is used only by the default updown script, not by your custom
|
|
- # ones, so do not mess with it; see CAUTION comment up at top.
|
|
- if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/32" ]
|
|
- then
|
|
- iptables -D FORWARD -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
|
|
- -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK $S_MY_PORT \
|
|
- -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $D_PEER_PORT \
|
|
- $IPSEC_POLICY_OUT -j ACCEPT
|
|
- iptables -D FORWARD -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
|
|
- -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $S_PEER_PORT \
|
|
- -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK $D_MY_PORT \
|
|
- $IPSEC_POLICY_IN -j ACCEPT
|
|
+ if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ] ; then
|
|
+ upfirewall $IPT_RULE_IN $IPT_DEST_IN $IPT_RULE_OUT $OUT_DEST_OUT
|
|
+ fi
|
|
+
|
|
+ dologentry "VPN-UP"
|
|
+
|
|
+ ;;
|
|
+down-client:*)
|
|
+ # connection to client subnet going down
|
|
+
|
|
+ ipsec _showstatus down
|
|
+
|
|
+ if [ "$PLUTO_MY_CLIENT" != "$PLUTO_ME/32" -a \
|
|
+ "$PLUTO_MY_CLIENT" != "$PLUTO_MY_SOURCEIP/32" ] ; then
|
|
+ downfirewall $FWD_RULE_IN $FWD_DEST_IN $FWD_RULE_OUT $FWD_DEST_OUT
|
|
fi
|
|
- #
|
|
+
|
|
# a virtual IP requires an INPUT and OUTPUT rule on the host
|
|
# or sometimes host access via the internal IP is needed
|
|
- if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ]
|
|
- then
|
|
- iptables -D INPUT -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
|
|
- -s $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $S_PEER_PORT \
|
|
- -d $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK $D_MY_PORT \
|
|
- $IPSEC_POLICY_IN -j ACCEPT
|
|
- iptables -D OUTPUT -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
|
|
- -s $PLUTO_MY_CLIENT_NET/$PLUTO_MY_CLIENT_MASK $S_MY_PORT \
|
|
- -d $PLUTO_PEER_CLIENT_NET/$PLUTO_PEER_CLIENT_MASK $D_PEER_PORT \
|
|
- $IPSEC_POLICY_OUT -j ACCEPT
|
|
- fi
|
|
- #
|
|
- # log IPsec client connection teardown
|
|
- if [ $VPN_LOGGING ]
|
|
- then
|
|
- if [ "$PLUTO_PEER_CLIENT" == "$PLUTO_PEER/32" ]
|
|
- then
|
|
- logger -t $TAG -p $FAC_PRIO -- \
|
|
- "- `echo -e $PLUTO_PEER_ID` $PLUTO_PEER -- $PLUTO_ME == $PLUTO_MY_CLIENT"
|
|
- else
|
|
- logger -t $TAG -p $FAC_PRIO -- \
|
|
- "- `echo -e $PLUTO_PEER_ID` $PLUTO_PEER_CLIENT == $PLUTO_PEER -- $PLUTO_ME == $PLUTO_MY_CLIENT"
|
|
- fi
|
|
+ if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ] ; then
|
|
+ downfirewall $IPT_RULE_IN $IPT_DEST_IN $IPT_RULE_OUT $OUT_DEST_OUT
|
|
fi
|
|
+
|
|
+ dologentry "VPN-DN"
|
|
+
|
|
;;
|
|
-#
|
|
-# IPv6
|
|
-#
|
|
prepare-host-v6:*|prepare-client-v6:*)
|
|
+
|
|
;;
|
|
route-host-v6:*|route-client-v6:*)
|
|
# connection to me or my client subnet being routed
|
|
+
|
|
#uproute_v6
|
|
+
|
|
;;
|
|
unroute-host-v6:*|unroute-client-v6:*)
|
|
# connection to me or my client subnet being unrouted
|
|
+
|
|
#downroute_v6
|
|
+
|
|
;;
|
|
up-host-v6:*)
|
|
# connection to me coming up
|
|
# If you are doing a custom version, firewall commands go here.
|
|
+
|
|
;;
|
|
down-host-v6:*)
|
|
# connection to me going down
|
|
# If you are doing a custom version, firewall commands go here.
|
|
+
|
|
;;
|
|
up-client-v6:)
|
|
# connection to my client subnet coming up
|
|
# If you are doing a custom version, firewall commands go here.
|
|
+
|
|
;;
|
|
down-client-v6:)
|
|
# connection to my client subnet going down
|
|
# If you are doing a custom version, firewall commands go here.
|
|
+
|
|
;;
|
|
-*) echo "$0: unknown verb \`$PLUTO_VERB' or parameter \`$1'" >&2
|
|
+*)
|
|
+ echo "$0: unknown verb \`$PLUTO_VERB' or parameter \`$1'" >&2
|
|
exit 1
|
|
+
|
|
;;
|
|
esac
|
|
+
|