ip-forward
Juraj Hilovsky
hilovsky na saris.unipo.sk
Pondělí Červenec 31 14:36:57 CEST 2000
1024 hrmenych, ten moj postovy server mi niekam zasantrocil prilohu.
V odoslanej poste to mam aj s prilohou a sem to doslo bez nej.
Tie pocitace pomaly, ale isto zacinaju nadobudat ludske vlastnosti.
Takze tu je ta priloha (dufam).
jh
------------- další část ---------------
#!/bin/sh
#
# network Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
# start at boot time.
# probe: true
# Source function library.
. /etc/rc.d/init.d/functions
if [ ! -f /etc/sysconfig/network ]; then
exit 0
fi
. /etc/sysconfig/network
if [ -f /etc/sysconfig/pcmcia ]; then
. /etc/sysconfig/pcmcia
fi
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /sbin/ifconfig ] || exit 0
# Even if IPX is configured, without the utilities we can't do much
[ ! -x /sbin/ipx_internal_net -o ! -x /sbin/ipx_configure ] && IPX=
CWD=`pwd`
cd /etc/sysconfig/network-scripts
# find all the interfaces besides loopback.
# ignore aliases, alternative configurations, and editor backup files
interfaces=`ls ifcfg* | egrep -v '(ifcfg-lo|:)' | \
egrep -v 'ifcfg-ippp[0-9]+$' | \
egrep 'ifcfg-[a-z0-9]+$' | \
sed 's/^ifcfg-//g'`
# jh
# mam povoleny ip-forwarding?
ipfw=`grep FORWARD_IPV4 /etc/sysconfig/network | egrep "yes|true" | wc -l`
# /jh
# See how we were called.
case "$1" in
start)
action "Setting network parameters" sysctl -p /etc/sysctl.conf
action "Bringing up interface lo" ./ifup ifcfg-lo
case "$IPX" in
yes|true)
/sbin/ipx_configure --auto_primary=$IPXAUTOPRIMARY \
--auto_interface=$IPXAUTOFRAME
if [ "$IPXINTERNALNETNUM" != "0" ]; then
/sbin/ipx_internal_net add $IPXINTERNALNETNUM $IPXINTERNALNODENUM
fi
;;
esac
for i in $interfaces; do
if egrep -L "ONBOOT=\"?[Nn][Oo]\"?" ifcfg-$i >/dev/null ; then
# Probe module to preserve interface ordering
/sbin/ifconfig $i >/dev/null 2>&1
else
action "Bringing up interface $i" ./ifup $i boot
fi
done
# jh
# ip-forwarding on/off
numifs=`ifconfig | grep inet | wc -l`
if [ $numifs -gt 2 -a $ipfw -eq 1 ]
then sysctl -w net.ipv4.ip_forward=1
else sysctl -w net.ipv4.ip_forward=0
fi
# /jh
# Add non interface-specific static-routes.
if [ -f /etc/sysconfig/static-routes ]; then
grep "^any" /etc/sysconfig/static-routes | while read ignore type dest netmask mask gw gateway; do
[ "${gateway}" != "${gateway##[0-9}" ] && \
/sbin/route add -$type $dest $netmask $mask $gw $gateway
done
fi
touch /var/lock/subsys/network
;;
stop)
for i in $interfaces ; do
action "Shutting down interface $i" ./ifdown $i boot
done
case "$IPX" in
yes|true)
if [ "$IPXINTERNALNETNUM" != "0" ]; then
/sbin/ipx_internal_net del
fi
;;
esac
./ifdown ifcfg-lo
if [ -d /proc/sys/net/ipv4 ]; then
if [ -f /proc/sys/net/ipv4/ip_forward ]; then
if [ `cat /proc/sys/net/ipv4/ip_forward` != 0 ]; then
action "Disabling IPv4 packet forwarding" sysctl -w net.ipv4.ip_forward=0
fi
fi
if [ -f /proc/sys/net/ipv4/ip_always_defrag ]; then
if [ `cat /proc/sys/net/ipv4/ip_always_defrag` != 0 ]; then
action "Disabling IPv4 automatic defragmentation" sysctl -w net.ipv4.ip_always_defrag=0
fi
fi
fi
rm -f /var/lock/subsys/network
;;
status)
echo "Configured devices:"
echo lo $interfaces
if [ -x /bin/linuxconf ] ; then
eval `/bin/linuxconf --hint netdev`
echo "Devices that are down:"
echo $DEV_UP
echo "Devices with modified configuration:"
echo $DEV_RECONF
else
echo "Currently active devices:"
echo `/sbin/ifconfig | grep ^[a-z] | awk '{print $1}'`
fi
;;
restart)
cd $CWD
$0 stop
$0 start
;;
reload)
if [ -x /bin/linuxconf ] ; then
eval `/bin/linuxconf --hint netdev`
for device in $DEV_UP ; do
action "Bringing up device $device" ./ifup $device
done
for device in $DEV_DOWN ; do
action "Shutting down device $device" ./ifdown $device
done
for device in $DEV_RECONF ; do
action "Shutting down device $device" ./ifdown $device
action "Bringing up device $device" ./ifup $device
done
for device in $DEV_RECONF_ALIASES ; do
action "Briging up alias $device" /etc/sysconfig/network-scripts/ifup-aliases $device
done
for device in $DEV_RECONF_ROUTES ; do
action "Bringing up route $device" /etc/sysconfig/network-scripts/ifup-routes $device
done
case $IPX in yes|true)
case $IPXINTERNALNET in
reconf)
action "Deleting internal IPX network" /sbin/ipx_internal_net del
action "Adding internal IPX network $IPXINTERNALNETNUM $IPXINTERNALNODENUM" /sbin/ipx_internal_net add $IPXINTERNALNETNUM \
$IPXINTERNALNODENUM
;;
add)
action "Adding internal IPX network $IPXINTERNALNETNUM $IPXINTERNALNODENUM"/sbin/ipx_internal_net add $IPXINTERNALNETNUM \
$IPXINTERNALNODENUM
;;
del)
action "Deleting internal IPX network" /sbin/ipx_internal_net del
;;
esac
;;
esac
else
cd $CWD
$0 restart
fi
;;
probe)
if [ -x /bin/linuxconf ] ; then
eval `/bin/linuxconf --hint netdev`
[ -n "$DEV_UP$DEV_DOWN$DEV_RECONF$DEV_RECONF_ALIASES" -o \
-n "$DEV_RECONF_ROUTES$IPXINTERNALNET" ]
echo reload
exit 0
else
# if linuxconf isn't around to figure stuff out for us,
# we punt. Probably better than completely reloading
# networking if user isn't sure which to do. If user
# is sure, they would run restart or reload, not probe.
exit 0
fi
;;
*)
echo "Usage: network {start|stop|restart|reload|status|probe}"
exit 1
esac
exit 0
Další informace o konferenci Linux