Como forçar a conexão sem fio a se reconectar quando a conexão for perdida

0

Estou executando o Ubuntu Server 13.10 (Saucy) no meu servidor em casa. Ele se conecta a um roteador sem fio usando uma placa PCI Express Express sem fio. Na maioria das vezes funciona bem, mas ocasionalmente eu tenho que reiniciar o roteador e quando isso acontece, o servidor não está mais disponível através da rede local até que eu reinicie fisicamente o servidor.

Eu tentei seguir as instruções da resposta para Reconexão automática do servidor? Faz sentido. Eu criei /usr/local/bin/check_network e chmod +x ed:

#!/bin/bash
# The router IP address.
IP_ADDRESS='192.168.3.1'
# Ping to determine if we are connected to the network.
if ! ( ping -c 1 "$IP_ADDRESS" >/dev/null 2>&1 ); then
    # If we are not connected, restart networking.
    service networking restart >/dev/null 2>&1
fi
  • NOTA: é networking e não network de acordo com sudo service --status-all .

Eu adicionei o crontab do root para rodar a cada minuto:

* * * * * /usr/local/bin/check_network

Depois tentei testá-lo com sudo service networking stop , mas o servidor nunca fica disponível na rede até a reinicialização (como sempre).

Aqui está a impressão de sudo lshw -class network se houver alguma ajuda ( wlan0 é o que é usado):

  *-network               
       description: Wireless interface
       product: Centrino Advanced-N 6205 [Taylor Peak]
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: wlan0
       version: 34
       serial: 6c:88:14:99:1b:9c
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwlwifi driverversion=3.11.0-13-generic firmware=18.168.6.1 ip=192.168.3.50 latency=0 link=yes multicast=yes wireless=IEEE 802.11abgn
       resources: irq:42 memory:fea00000-fea01fff
  *-network DISABLED
       description: Ethernet interface
       product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:04:00.0
       logical name: eth0
       version: 06
       serial: bc:5f:f4:e5:a4:c5
       size: 10Mbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=half latency=0 link=no multicast=yes port=MII speed=10Mbit/s
       resources: irq:40 ioport:e000(size=256) memory:d0004000-d0004fff memory:d0000000-d0003fff

E aqui está o /etc/network/interfaces :

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto wlan0
iface wlan0 inet dhcp
    # wireless-* options are implemented by the wireless-tools package
    wireless-mode managed
    wireless-essid MyWifi
    wireless-key1 **********

Como posso fazer isso funcionar? Eu devo estar sentindo falta de algo dolorosamente óbvio. Qualquer ajuda seria apreciada.

Aqui está /var/log/syslog antes de reiniciar o roteador:

Jan 17 22:10:01 caleb-srv-pons CRON[1431]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:10:31 caleb-srv-pons kernel: [  486.640712] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=118.69.206.219 DST=192.168.3.50 LEN=48 TOS=0x00 PREC=0x20 TTL=112 ID=18350 PROTO=TCP SPT=11829 DPT=5900 WINDOW=65535 RES=0x00 SYN URGP=0
Jan 17 22:10:35 caleb-srv-pons kernel: [  490.189061] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=198.252.206.25 DST=192.168.3.50 LEN=121 TOS=0x00 PREC=0x20 TTL=49 ID=50333 DF PROTO=TCP SPT=443 DPT=48715 WINDOW=36 RES=0x00 ACK PSH URGP=0
Jan 17 22:11:01 caleb-srv-pons CRON[1436]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:11:14 caleb-srv-pons kernel: [  529.312196] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=198.252.206.25 DST=192.168.3.50 LEN=121 TOS=0x00 PREC=0x20 TTL=49 ID=9328 DF PROTO=TCP SPT=443 DPT=48565 WINDOW=36 RES=0x00 ACK PSH URGP=0
Jan 17 22:12:01 caleb-srv-pons CRON[1440]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:12:35 caleb-srv-pons kernel: [  610.181844] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=198.252.206.25 DST=192.168.3.50 LEN=121 TOS=0x00 PREC=0x20 TTL=49 ID=50334 DF PROTO=TCP SPT=443 DPT=48715 WINDOW=36 RES=0x00 ACK PSH URGP=0
Jan 17 22:13:01 caleb-srv-pons CRON[1444]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:13:14 caleb-srv-pons kernel: [  649.301520] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=198.252.206.25 DST=192.168.3.50 LEN=121 TOS=0x00 PREC=0x20 TTL=49 ID=9329 DF PROTO=TCP SPT=443 DPT=48565 WINDOW=36 RES=0x00 ACK PSH URGP=0
Jan 17 22:14:01 caleb-srv-pons CRON[1448]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:14:34 caleb-srv-pons kernel: [  730.180571] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=198.252.206.25 DST=192.168.3.50 LEN=121 TOS=0x00 PREC=0x20 TTL=49 ID=50335 DF PROTO=TCP SPT=443 DPT=48715 WINDOW=36 RES=0x00 ACK PSH URGP=0
Jan 17 22:15:01 caleb-srv-pons CRON[1454]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:15:14 caleb-srv-pons kernel: [  769.300852] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=198.252.206.25 DST=192.168.3.50 LEN=121 TOS=0x00 PREC=0x20 TTL=49 ID=9330 DF PROTO=TCP SPT=443 DPT=48565 WINDOW=36 RES=0x00 ACK PSH URGP=0

Então, quando eu reinicio o roteador, ele muda para:

Jan 17 22:16:01 caleb-srv-pons CRON[1459]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:17:01 caleb-srv-pons CRON[1466]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:17:01 caleb-srv-pons CRON[1467]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jan 17 22:17:28 caleb-srv-pons kernel: [  903.335148] cfg80211: Calling CRDA to update world regulatory domain
Jan 17 22:17:28 caleb-srv-pons kernel: [  903.345400] cfg80211: World regulatory domain updated:
Jan 17 22:17:28 caleb-srv-pons kernel: [  903.345416] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
Jan 17 22:17:28 caleb-srv-pons kernel: [  903.345425] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:17:28 caleb-srv-pons kernel: [  903.345433] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:17:28 caleb-srv-pons kernel: [  903.345440] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:17:28 caleb-srv-pons kernel: [  903.345447] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:17:28 caleb-srv-pons kernel: [  903.345453] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:18:01 caleb-srv-pons CRON[1475]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:18:11 caleb-srv-pons CRON[1474]: (CRON) info (No MTA installed, discarding output)
Jan 17 22:19:01 caleb-srv-pons CRON[1481]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:19:04 caleb-srv-pons CRON[1480]: (CRON) info (No MTA installed, discarding output)
Jan 17 22:20:01 caleb-srv-pons CRON[1487]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:20:04 caleb-srv-pons CRON[1486]: (CRON) info (No MTA installed, discarding output)

Os logs repetidos para /usr/local/bin/check_network são o cronjob minucioso para verificar a rede que é:

#!/bin/bash
# Use IP address of router.
IP_ADDRESS='192.168.3.1'
# Ping to determine if we are connected to the network.
if ! ( ping -c 1 "$IP_ADDRESS" ); then
    # If we are not connected, restart networking.
    echo 'Restart wlan0.'
    #service networking restart
    ifdown wlan0
    ifup wlan0
else
    echo 'Already connected.'
fi

E o seu log /root/check_network.log é assim antes da reinicialização do roteador:

PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=1.88 ms

--- 192.168.3.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.889/1.889/1.889/0.000 ms
Already connected.
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=5.58 ms

--- 192.168.3.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.585/5.585/5.585/0.000 ms
Already connected.

E depois da reinicialização:

PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.

--- 192.168.3.1 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Restart wlan0.
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
From 192.168.3.50 icmp_seq=1 Destination Host Unreachable

--- 192.168.3.1 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Restart wlan0.

E syslog se comporta exatamente da mesma maneira, quer eu use ifdown e ifup , ou service networking restart :

Jan 17 22:46:02 caleb-srv-pons CRON[1624]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:46:08 caleb-srv-pons kernel: [ 1212.166874] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=79.41.235.44 DST=192.168.3.50 LEN=60 TOS=0x00 PREC=0x20 TTL=49 ID=63141 DF PROTO=TCP SPT=61620 DPT=63125 WINDOW=5840 RES=0x00 SYN URGP=0
Jan 17 22:46:11 caleb-srv-pons kernel: [ 1215.184848] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=79.41.235.44 DST=192.168.3.50 LEN=60 TOS=0x00 PREC=0x20 TTL=49 ID=63142 DF PROTO=TCP SPT=61620 DPT=63125 WINDOW=5840 RES=0x00 SYN URGP=0
Jan 17 22:46:17 caleb-srv-pons kernel: [ 1221.167630] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=79.41.235.44 DST=192.168.3.50 LEN=60 TOS=0x00 PREC=0x20 TTL=49 ID=63143 DF PROTO=TCP SPT=61620 DPT=63125 WINDOW=5840 RES=0x00 SYN URGP=0
Jan 17 22:46:29 caleb-srv-pons kernel: [ 1233.166485] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=79.41.235.44 DST=192.168.3.50 LEN=60 TOS=0x00 PREC=0x20 TTL=49 ID=63144 DF PROTO=TCP SPT=61620 DPT=63125 WINDOW=5840 RES=0x00 SYN URGP=0
Jan 17 22:46:53 caleb-srv-pons kernel: [ 1257.170816] [UFW BLOCK] IN=wlan0 OUT= MAC=6c:88:14:99:1b:9c:00:25:9c:52:6a:18:08:00 SRC=79.41.235.44 DST=192.168.3.50 LEN=60 TOS=0x00 PREC=0x20 TTL=49 ID=63145 DF PROTO=TCP SPT=61620 DPT=63125 WINDOW=5840 RES=0x00 SYN URGP=0
Jan 17 22:47:01 caleb-srv-pons CRON[1629]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:48:01 caleb-srv-pons CRON[1633]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:49:01 caleb-srv-pons CRON[1637]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:50:01 caleb-srv-pons CRON[1641]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:51:01 caleb-srv-pons CRON[1645]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:52:01 caleb-srv-pons CRON[1649]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:53:01 caleb-srv-pons CRON[1654]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:54:01 caleb-srv-pons CRON[1658]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:55:01 caleb-srv-pons CRON[1662]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:55:12 caleb-srv-pons kernel: [ 1755.584612] cfg80211: Calling CRDA to update world regulatory domain
Jan 17 22:55:12 caleb-srv-pons kernel: [ 1755.594903] cfg80211: World regulatory domain updated:
Jan 17 22:55:12 caleb-srv-pons kernel: [ 1755.594919] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
Jan 17 22:55:12 caleb-srv-pons kernel: [ 1755.594928] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:55:12 caleb-srv-pons kernel: [ 1755.594935] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:55:12 caleb-srv-pons kernel: [ 1755.594943] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:55:12 caleb-srv-pons kernel: [ 1755.594950] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:55:12 caleb-srv-pons kernel: [ 1755.594957] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
Jan 17 22:56:01 caleb-srv-pons CRON[1668]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
Jan 17 22:57:01 caleb-srv-pons CRON[1679]: (root) CMD (/usr/local/bin/check_network >> /root/check_network.log)
    
por cpburnz 16.01.2014 / 17:02

1 resposta

0

Eu sou um novato do Ubuntu e muito do que você imprimiu aqui é grego para mim, mas eu tive um problema semelhante com 13.10 (Saucy). Bata-se substancialmente para conseguir que ele se reconecte quando a conexão cair quando a fonte wireless decidir parar por algum tempo, o que acontece de vez em quando, já que ela vem de um tablet da Verizon que também é usado para outras coisas.

Eu uso um conector sem fio USB da Belkin no meu computador. Eu encontrei se eu apenas desconectei, esperei um pouco e conectei de volta nele encontraria o sinal sem fio e reconectar e eu poderia continuar como antes. Sem reinicialização, sem parar ou iniciar serviços ou qualquer coisa.

Espero que isso seja útil.

    
por Chuck41 18.01.2014 / 20:10