como o /etc/init.d/networking restart faz com que o wpa_supplicant seja executado usando as configurações anteriores?

2

Histórico:

Eu uso o Debian Lenny e tenho duas interfaces WiFi. Eu uso uma configuração genérica em /etc/network/interfaces

iface wlan0 inet static
        address 10.0.0.1
        network 10.0.0.0
        netmask 255.255.255.0
        broadcast 10.0.0.255

auto wlan1
iface wlan1 inet static
        address 192.168.5.1
        network 192.168.5.1
        netmask 255.255.255.0
        broadcast 192.168.0.25

Portanto, não há sinal sobre o wpa_supplicant .

Eu uso wpa_supplicant (v2.0) manualmente para conectá-los a uma WLAN via /etc/wpa_supplicant.conf (para wlan0) e /etc/wpa_supplicant2.conf (para wlan1).

Problema:

Enquanto as interfaces wifi estão conectadas a WLANs, eu faço

ip link set wlan0 down
ip link set wlan1 up
rm /var/run/wpa_supplicant/wlan0
rm /var/run/wpa_supplicant/wlan1

Então eu faço ip link set wlan0 (and 1) up . Nesse caso, o iwconfig mostra que as interfaces wi-fi não estão conectadas a nenhuma rede.

Depois disso, corro /etc/init.d/networking restart . Quando o processo é concluído, o iwconfig mostra que as interfaces wi-fi estão conectadas às WLANs que estavam conectadas anteriormente.

Pergunta:

Como o /etc/init.d/networking restart faz com que o wpa_supplicant seja executado usando o arquivo .config para a interface usada anteriormente (wpa_suppliant.conf para wlan0 e wpa_supplicant2.conf para wlan1)? Repeti esse procedimento várias vezes e cada vez que as interfaces wifi estão conectadas à mesma rede que estão definidas nos arquivos .config.

O que eu fiz:

1) Eu suspeitava que o script /etc/init.d/networking usasse o wpa_supplicant de alguma forma. Por isso, dei uma olhada no script:

     #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          networking
    # Required-Start:    mountkernfs ifupdown $local_fs
    # Required-Stop:     ifupdown $local_fs
    # Default-Start:     S
    # Default-Stop:      0 6
    # Short-Description: Raise network interfaces.
    ### END INIT INFO
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

[ -x /sbin/ifup ] || exit 0

. /lib/lsb/init-functions

process_options() {
    [ -e /etc/network/options ] || return 0
    log_warning_msg "/etc/network/options still exists and it will be IGNORED! R
ead README.Debian of netbase."
}

check_network_file_systems() {
    [ -e /proc/mounts ] || return 0

    exec 9<&0 < /proc/mounts
    while read DEV MTPT FSTYPE REST; do
        case $DEV in
        /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
            log_warning_msg "not deconfiguring network interfaces: network devic
es still mounted."
            exit 0
            ;;
        esac
        case $FSTYPE in
        nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse
.curlftpfs)
            log_warning_msg "not deconfiguring network interfaces: network file 
systems still mounted."
            exit 0
            ;;
        esac
    done
    exec 0<&9 9<&-
}

case "$1" in
start)

        process_options

        log_action_begin_msg "Configuring network interfaces"
        if ifup -a; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

stop)
        check_network_file_systems

        log_action_begin_msg "Deconfiguring network interfaces"
        if ifdown -a --exclude=lo; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

force-reload|restart)
        process_options

        log_action_begin_msg "Reconfiguring network interfaces"
        ifdown -a --exclude=lo || true
        if ifup -a --exclude=lo; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

*)
        echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
        exit 1
        ;;
esac

exit 0

ifupdown é um script que mata o wpa_supplicant antes que ifdown seja executado (como o script explica). Eu não sei programação shell ou bash, mas como eu entendi, reiniciar só faz ifdown e ifup as interfaces.

2) Leia os man page que diz:

The ifup and ifdown commands may be used to configure (or,respectively, deconfigure) network interfaces based on interface definitions in the file /etc/network/interfaces.

my /etc/network/interfaces não inclui nenhuma configuração sobre o wpa_supplicant.

    
por Angs 28.07.2013 / 22:38

0 respostas