Создание моста в Slackware
Jump to navigation
Jump to search
Использование скриптов
В дистрибутиве Slackware для запуска и остановки сервисов используются скрипты, находящиеся в каталоге "/etc/rc.d". Основной скрипт для запуска сервисов - "/etc/rc.d/rc.M", а для останова - "/etc/rc.d/rc.6". Запуск и останов сетевых устройств осуществляется скриптом "/etc/rc.d/rc.inet1". Для запуска и остановки сетевого моста можно добавить отдельный скрипт и запуск его добавить в скрипт "rc.M", а останов - в скрипт "rc.6":
rc.M:
# Initialize the networking hardware. if [ -x /etc/rc.d/rc.inet1 ]; then . /etc/rc.d/rc.inet1 fi if [ -x /etc/rc.d/rc.bridge ]; then . /etc/rc.d/rc.bridge start fi # Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and
rc.6:
# isn't a diskless client with the / partition mounted via NFS:
if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then
if [ -x /etc/rc.d/rc.bridge ]; then
. /etc/rc.d/rc.bridge stop
fi
if [ -x /etc/rc.d/rc.inet1 ]; then
. /etc/rc.d/rc.inet1 stop
fi
fi
# In case dhcpcd might have been manually started on the command line,
rc.bridge:
#!/bin/sh
[ -z /etc/rc.d/rc.bridge.conf ] && exit 1
. /etc/rc.d/rc.bridge.conf
# If possible, log events in /var/log/messages:
if [ -f /var/run/syslogd.pid -a -x /usr/bin/logger ]; then
LOGGER=/usr/bin/logger
else # output to stdout/stderr:
LOGGER=/bin/cat
fi
gateway_up() {
if ! /sbin/route -n | grep "^0.0.0.0" 1> /dev/null ; then
if [ ! "$GATEWAY" = "" ]; then
echo "/etc/rc.d/rc.bridge: /sbin/route add default gw ${GATEWAY} metric 1" | $LOGGER
/sbin/route add default gw ${GATEWAY} metric 1 2>&1 | $LOGGER
fi
fi
}
gateway_down() {
if /sbin/route -n | grep "^0.0.0.0" 1> /dev/null ; then
echo "/etc/rc.d/rc.bridge: /sbin/route del default" | $LOGGER
/sbin/route del default
fi
}
case "$1" in
"start" )
for i in ${IFACES} ; do
/sbin/ifconfig $i 0.0.0.0 up
done
/sbin/brctl addbr ${BRIDGE}
for i in ${IFACES} ; do
/sbin/brctl addif ${BRIDGE} $i
done
if [ "${USE_DHCP}" = "yes" ]; then
echo "/etc/rc.d/rc.bridge: /sbin/dhcpcd -d -t ${DHCP_TIMEOUT:-30} ${DHCP_OPTIONS} ${BRIDGE}" | LOGGER
/sbin/dhcpcd -d -t ${DHCP_TIMEOUT:-30} ${DHCP_OPTIONS} ${BRIDGE}
else
if [ ! "${IPADDR}" = "" ]; then
BROADCAST=`/bin/ipmask ${NETMASK} ${IPADDR}|cut -f1 -d' '`
echo "/etc/rc.d/rc.bridge: /sbin/ifconfig ${BRIDGE} ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}" | $LOGGER
/sbin/ifconfig ${BRIDGE} ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}
fi
fi
# GATEWAY
gateway_up
;;
"stop" )
gateway_down
for i in ${IFACES} ; do
/sbin/ifconfig $i down
/sbin/brctl delif ${BRIDGE} $i
done
if [ "${USE_DHCP}" = "yes" ]; then
echo "/etc/rc.d/rc.bridge: /sbin/dhcpcd -k -d ${BRIDGE}" | $LOGGER
/sbin/dhcpcd -k -d ${BRIDGE} 2> /dev/null
sleep 1
fi
/sbin/ifconfig ${BRIDGE} down
/sbin/brctl delbr ${BRIDGE}
;;
"status" )
/sbin/ifconfig ${BRIDGE}
/sbin/brctl show
/sbin/brctl showmacs ${BRIDGE}
/sbin/brctl showstp ${BRIDGE}
;;
"restart" )
$0 stop
sleep 2
$0 start
;;
* )
echo "Usage: $0 {start|stop}"
;;
esac
# End of rc.bridge script
rc.bridge.conf:
IFACES="eth0 ath0" BRIDGE="br0" IPADDR="192.168.0.1" NETMASK="255.255.255.0" GATEWAY="192.168.0.254" USE_DHCP="no"
В файле "/etc/rc.d/rc.inet1.conf" параметр "GATEWAY" должен быть пустой, так как он присутствует в файле "/etc/rc.d/rc.bridge.conf".