Создание моста в 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".