2009-08-26 17:00:38 +02:00
|
|
|
#!/bin/sh
|
|
|
|
# /etc/rc.d/rc.ip_forward: start/stop IP packet forwarding
|
|
|
|
#
|
|
|
|
# If you intend to run your Linux box as a router, i.e. as a
|
|
|
|
# computer that forwards and redistributes network packets, you
|
|
|
|
# will need to enable IP packet forwarding in your kernel.
|
|
|
|
#
|
|
|
|
# To activate IP packet forwarding at boot time, make this
|
|
|
|
# script executable: chmod 755 /etc/rc.d/rc.ip_forward
|
|
|
|
#
|
|
|
|
# To disable IP packet forwarding at boot time, make this
|
|
|
|
# script non-executable: chmod 644 /etc/rc.d/rc.ip_forward
|
|
|
|
|
|
|
|
# Start IP packet forwarding:
|
|
|
|
ip_forward_start() {
|
|
|
|
if [ -f /proc/sys/net/ipv4/ip_forward ]; then
|
|
|
|
echo "Activating IPv4 packet forwarding."
|
|
|
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
|
|
|
# Changing /proc/sys/net/ipv4/ip_forward results in resetting all
|
|
|
|
# non-default ipv4 parameters for the interface as mentioned in
|
|
|
|
# /usr/src/linux/Documentation/networking/ip-sysctl.txt. So, we
|
|
|
|
# will reapply any ipv4 sysctl parameters now:
|
|
|
|
if [ -r /etc/sysctl.conf ]; then
|
|
|
|
/bin/grep ipv4 /etc/sysctl.conf | sysctl -p - 1> /dev/null 2> /dev/null
|
|
|
|
fi
|
|
|
|
fi
|
2013-11-04 18:08:47 +01:00
|
|
|
if [ -f /proc/sys/net/ipv6/conf/all/forwarding ]; then
|
|
|
|
echo "Activating IPv6 packet forwarding."
|
|
|
|
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
|
|
|
|
# Changing /proc/sys/net/ipv6/conf/all/forwarding results in resetting
|
|
|
|
# all non-default ipv6 parameters for the interface as mentioned in
|
|
|
|
# /usr/src/linux/Documentation/networking/ip-sysctl.txt. So, we
|
|
|
|
# will reapply any ipv6 sysctl parameters now:
|
|
|
|
if [ -r /etc/sysctl.conf ]; then
|
|
|
|
/bin/grep ipv6 /etc/sysctl.conf | sysctl -p - 1> /dev/null 2> /dev/null
|
|
|
|
fi
|
|
|
|
fi
|
2009-08-26 17:00:38 +02:00
|
|
|
# When using IPv4 packet forwarding, you will also get the
|
|
|
|
# rp_filter, which automatically rejects incoming packets if the
|
|
|
|
# routing table entry for their source address doesn't match the
|
|
|
|
# network interface they're arriving on. This has security
|
|
|
|
# advantages because it prevents the so-called IP spoofing,
|
|
|
|
# however it can pose problems if you use asymmetric routing
|
|
|
|
# (packets from you to a host take a different path than packets
|
|
|
|
# from that host to you) or if you operate a non-routing host
|
|
|
|
# which has several IP addresses on different interfaces. To
|
|
|
|
# turn rp_filter off, uncomment the lines below:
|
|
|
|
#if [ -r /proc/sys/net/ipv4/conf/all/rp_filter ]; then
|
|
|
|
# echo "Disabling rp_filter."
|
|
|
|
# echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
|
|
|
|
#fi
|
|
|
|
}
|
|
|
|
|
|
|
|
# Stop IP packet forwarding:
|
|
|
|
ip_forward_stop() {
|
|
|
|
if [ -f /proc/sys/net/ipv4/ip_forward ]; then
|
|
|
|
echo "Disabling IPv4 packet forwarding."
|
|
|
|
echo 0 > /proc/sys/net/ipv4/ip_forward
|
|
|
|
# Changing /proc/sys/net/ipv4/ip_forward results in resetting all
|
|
|
|
# non-default ipv4 parameters for the interface as mentioned in
|
|
|
|
# /usr/src/linux/Documentation/networking/ip-sysctl.txt. So, we
|
|
|
|
# will reapply any ipv4 sysctl parameters now:
|
|
|
|
if [ -r /etc/sysctl.conf ]; then
|
|
|
|
/bin/grep ipv4 /etc/sysctl.conf | sysctl -p - 1> /dev/null 2> /dev/null
|
|
|
|
fi
|
|
|
|
fi
|
2013-11-04 18:08:47 +01:00
|
|
|
if [ -f /proc/sys/net/ipv6/conf/all/forwarding ]; then
|
|
|
|
echo "Disabling IPv6 packet forwarding."
|
|
|
|
echo 0 > /proc/sys/net/ipv6/conf/all/forwarding
|
|
|
|
# Changing /proc/sys/net/ipv6/conf/all/forwarding results in resetting
|
|
|
|
# all non-default ipv6 parameters for the interface as mentioned in
|
|
|
|
# /usr/src/linux/Documentation/networking/ip-sysctl.txt. So, we
|
|
|
|
# will reapply any ipv6 sysctl parameters now:
|
|
|
|
if [ -r /etc/sysctl.conf ]; then
|
|
|
|
/bin/grep ipv6 /etc/sysctl.conf | sysctl -p - 1> /dev/null 2> /dev/null
|
|
|
|
fi
|
|
|
|
fi
|
2009-08-26 17:00:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# Restart IP packet forwarding:
|
|
|
|
ip_forward_restart() {
|
|
|
|
ip_forward_stop
|
|
|
|
sleep 1
|
|
|
|
ip_forward_start
|
|
|
|
}
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
'start')
|
|
|
|
ip_forward_start
|
|
|
|
;;
|
|
|
|
'stop')
|
|
|
|
ip_forward_stop
|
|
|
|
;;
|
|
|
|
'restart')
|
|
|
|
ip_forward_restart
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "usage $0 start|stop|restart"
|
|
|
|
esac
|
|
|
|
|