2015-12-21 3 views
2

У меня есть Малина Пи, бегущая Рапбейским Виззи. /etc/network/interfaces настроен так, что Pi статический ip при запуске. Однако, когда соединение прекращается, Pi не будет восстанавливать соединение автоматически. У меня есть сценарий, который перезапускает wlan0. Тем не менее, у малины Pi есть другой адрес ip, чем статический ip, предоставленный ему. Это нарушает перенаправление портов, которое я сделал для доступа к Pi извне сети.Как перезапустить wlan0 с помощью статического ip вместо динамического ip?

Похоже, что мои интерфейсы не настроены совершенно правильно. Доступ к Pi можно получить из двух IP-адресов в сети, один из которых - это статический адрес, который я определил, а другой - нет. Когда wlan0 перезапускается, динамический IP-адрес присваивается Pi, но не статическому адресу.

Вот мой /etc/network/interfaces:

 auto lo 
    iface lo inet loopback 

    auto eth0 
    allow-hotplug eth0 
    iface eth0 inet manual 

    auto wlan0 
    allow-hotplug wlan0 
    iface wlan0 inet static 
    address 192.168.1.11 
    netmask 255.255.255.0 
    gateway 192.168.1.1 
    wpa-ssid "ROUTER NAME" 
    wpa-psk "PASSWORD" 

    auto wlan1 
    allow-hotplug wlan1 
    iface wlan1 inet manual 
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 

Вот скрипт я использую, чтобы сбросить wlan0:

 #!/bin/bash 

    SERVER=192.168.1.1 #Ping the router 

    ping -c2 ${SERVER} > /dev/null 

    #If the exits status from the ping is not 0 (failed) 
    if [$? != 0] 
    then 
     #Disable wlan0 and re-enable it 
     sleep 2 
     ifconfig wlan0 down 
     sleep 2 
     ifconfig wlan0 up 
    fi 

Любая помощь приветствуется! Благодаря!

Edit: Осмотрев идеи нашли в этой теме, я нашел /etc/init.d/networking restart делает все, что я need.So новый сценарий

#!/bin/bash 

    SERVER=192.168.1.1 
    ping -c2 ${SERVER} > /dev/null 

    if [ $?!=0 ] 
    then 
     /etc/init.d/networking restart 
     echo "Reconnecting!" 
    fi 
+0

Замените 'ifconfig wlan0 down' в вашем скрипте с' ifdown wlan0' и 'ifconfig wlan0 up' с' ifup wlan0'. –

+0

Я пробовал это. Pi отключится, как ожидание, но не будет повторно подключаться. Он отсоединяет и повторно соединяет процесс, как он выше. Единственная проблема заключается в том, что IP-адрес после повторного подключения не является статическим адресом (192.168.1.11). Когда я использую 'ifup wlan0', Pi не будет повторно подключаться, и у меня нет сообщений об ошибках, поскольку я работаю над ним через SSh. Спасибо за предложение. – NateTheGreat

+0

Что вы видите в '/ var/log/messages' после неудачного' ifup'? По-прежнему остается загадкой, как ваш интерфейс получает разные IP-адреса, чем тот, который настроен ... 'ifconfig' просто сводит ваш интерфейс вниз и вверх, не выполняя никаких инструкций в'/etc/network/interfaces', поэтому ваш wlan0 сохраняет всю информацию ip, которую она имела перед спуском. 'ifdown/ifup' скрипты - это путь, если вы хотите настроить свой интерфейс, помимо его поднятия. Проверьте журналы. –

ответ

0

Я посмотрел вокруг немного, и кажется, что вы можете быть в состоянии убедитесь, что он установлен в вашем WiFi сценария после ifconfig wlan0 up (я также должен был реализовать такой сценарий на каждой установке Raspberry Pi я когда-либо сделанный в связи с WiFi несогласованности)

if [$? != 0] 
    then 
     #Disable wlan0 and re-enable it 
     sleep 2 
     ifconfig wlan0 down 
     sleep 2 
     ifconfig wlan0 up 
     ifconfig wlan0 192.168.1.11 
    fi 

Хотя следует отметить, что Я на самом деле никогда не устанавливали статический ip на pi, я использую службу обратного туннелирования, поэтому мне не нужно беспокоиться о переадресации портов. Мой ответ ссылается на этот ответ с сайта raspberrypi stackexchange. https://raspberrypi.stackexchange.com/questions/9678/static-ip-failing-for-wlan0

Сообщите мне, если это поможет в противном случае, я могу углубиться в него.

По отзывам автора, /etc/init.d/networking restart был ответом, прочитайте комментарии ниже.

+0

К сожалению, это не имеет никакого эффекта. У pi все еще есть ip-адрес, который не является 192.168.1.11. Спасибо за эту мысль. – NateTheGreat

+0

Я проведу несколько экспериментов позже, когда вернусь домой и вернусь к вам –

+0

Похоже, что есть команда, которая вызывает '/ etc/network/interfaces'. '/etc/init.d/networking restart' все возвращается к тому, что«/etc/network/interfaces »все настраивает. Я посмотрю, может ли это восстановить соединение сегодня вечером, когда есть меньше устройств, полагающихся на сеть. Наилучший сценарий, команда 'restart' устанавливает соединение. В худшем случае я запускаю его в конце сценария, который я опубликовал, и он исправляет проблемы с адресами ip, которые у меня были. Спасибо вам за помощь. – NateTheGreat

Смежные вопросы