Форум на Kuban.ru (http://forums.kuban.ru/)
-   Сети и их администрирование (http://forums.kuban.ru/f1029/)
-   -   3G роутер из Raspberry Pi (http://forums.kuban.ru/f1029/3g_router_iz_raspberry_pi-8583726.html)

Перпетум Мобиле 24.01.2018 10:14

3G роутер из Raspberry Pi
 
Вот собственно вопрос как правильно это реализовать.
Предыстория: в интернете куча описаний, как это реализовать при помощи sakis, umtskeeper или при помощи wvdial и т.д.
Все это не особо нужно, так как есть штатный ppp.

Проблема заключается в том, что при загрузке долго инициализируется модем и не поднимается интерфейс. Так как он не поднимается, то не срабатывают правила arno-iptables-firewall

Сейчас сделано так:

Настроено подключение при помощи pon operator

в /etc/network/interfaces прописано

auto ppp0
iface ppp0 inet ppp
provider 3gsm (так обозвал при настройке)
post-up /etc/init.d/arno-iptables-firewall restart (перестартовывает правила чтобы заработал NAT на сетевую карту)

Так же в crone добавлен скрипт проверки поднятия интерфейса ppp и его перезагрузка

Собственно как я понимаю, все из-за того, что usb-modemswitch долго отрабатывает и не срабатывает подключение и собственно firewall.

Пока вот так костылями, а хочется по феншую, чтобы каждая следующая оператция ждала и срабатывала когда ей положено. Куда собственно копать? как правильно прописать я так понимаю в system.d и где еще, чтобы все выполнялось последовательно после отработки определения модема ?

Перпетум Мобиле 24.01.2018 10:15

да, если нет костылей то при перезагрузке не подключается автоматом к интернету, если рестартануть ntwoking то ppp0 поднимается.

harsh 24.01.2018 12:11

Не готов физ интерфейс, из-за этого не поднимается виртуальный ppp, и т.д.
Подобное у меня кое где происходит, adsl не успевает поднятся к моменту старта роутера, для этого было сделано следующее
1. /etc/cron.d/rc.local
[code]
...
CronTAG=rc.local
...
*/15 * * * * root /usr/local/sbin/check-pppoe
...[/code]
2. /usr/local/sbin/check-pppoe
[code]
#!/bin/bash
echo=/bin/echo
if [ -n "$CronTAG" ]; then
echo=:
fi

if [ `pgrep pppoe-connect` ]; then
$echo pppoe run;exit
else
echo `date "+%F %T.%N"`: $0: pppoe stopped, try start ppp0 >>/var/log/restart.log
$echo pppoe stopped; ifup ppp0
service exim start > /dev/null
fi
[/code]
Поскольку внешний ip у меня везде статика, то он тупо прописан в скрипте загрузки правил iptables, который стартует независимо от состояний ppp0, и дергать его при поднятии ppp смысла нет. Если у вас динамический, то скрипт загрузки правил нужно поместить в сециально предусмотренный для таких целей /etc/ppp/ip-up.local

harsh 24.01.2018 12:30

Если не нужна отчетность/журналирование, то скрипт можно подсократить
[code]
#!/bin/bash
if [ ! `pgrep pppoe-connect` ]; then ifup ppp0;fi
[/code]

harsh 24.01.2018 12:43

Собственно, можно вообще обойтись одной строчкой в cron с нужной периодичностью
*/15 * * * * root /sbin/ifup ppp0

Где-то в недрах скриптов pppoe* закопана проверка на существование/резервирование имени интерфейса, но есть вероятность нарваться на ситуацию когда эта проверка отрабатывает некорректно, и вместо ppp0 подниметя ppp1 и т.д., наблюдал такое. Мне было лень искать где затык, поэтому сделал свой чекпоинт.

зы: кстати, usb_modeswitch, а не modeM

Перпетум Мобиле 24.01.2018 13:11

2-harsh > спасибо. ну печатал быстро, по этому и modeM ...
Ну смысл вижу такой же, костылями через cron.

Думал может есть более правильный путь, как в system.d типа загружай это только после того, как загрузится то-то и так далее.

harsh 24.01.2018 13:33

Угу, что-то после чего-то, и при отсутствии некоего устройства, например флешки 3G или сдохшего eth, на выходе, при старте получаем безнадежно висящую систему.
На мой взгляд это не "более правильный путь", а заблуждение.

Перпетум Мобиле 24.01.2018 14:30

Так у меня при всем при этом происходит зависание системы если я дерну модем из порта.
Хотя почему это происходит не знаю.

harsh 24.01.2018 15:12

гм, если из работающей системы дернуть задействованый компонент, проц например, сетевую или хард, думаю, тоже зависнет.
Короче, если не нравится "костыль" с планировщиком, можно поправить скрипт-обертку для pppoe, чтобы pppoe-connect бесусловно форкался сразу же, незасисимо от того установлено соединение или нет. Но тут другое неудобство, придется вносить правку после каждого обновления пакета.

Перпетум Мобиле 24.01.2018 15:29

оставлю пока так.. По крайней мере не наблюдал отваливание инета за сутки... костыль так костыль, главное чтобы работал...

з.ы. почему тогда виндовая машина не зависает если вытаскивать модем ?

harsh 26.01.2018 20:52

9-Перпетум Мобиле > в вашем исполнении может зависнуть и холодильник, и ходики, уверен на 146%.
Примерно полгода назад, летом 2017, уронил корзину с 4-мя работающими хардами с высоты мидлтауэра, около 450мм. Ось не зависла, чему я оч. удивился, корзину осторожно поднял, водрузил на место, и еще с неделю смотрел кино онлайн, прежде чем система стала говорить: - "НЕТ". Оказалось актуатор процарапал процентов 70 системного раздела, но система работала почти 10 дней.
Внимание вопрос. Какая ОС смогла такое пережить?

Перпетум Мобиле 28.01.2018 10:57

10-harsh > модем E171, если дергаю его из порта, когда система подключена к интернету, система виснет.
ОС raspbian. пробовал раза два или три, результат всегда один и тот же. ПК Raspberry Pi B+. на 3-й не проверял

wiz111 28.01.2018 15:29

Если мопед не дергать оно вообще стабильно работает ? Просто в свое время все играния с малиной второй заканчивались тем что при плохом SNR мопед пытается тянуть тока больше чем малина может выдать и начиналась всякая жесть, но в общем там малина сильно обвешана была usb. В итоге забросил эту затею и ушел на неттоп.

harsh 28.01.2018 19:12

11-Перпетум Мобиле > дурацкий вопрос: - зачем вы такое исполняете?

Перпетум Мобиле 28.01.2018 20:12

13-harsh > специально не исполнял, просто имитировал обрыв интернета :) ну и удивился, что система подвисает. не помню, чтобы выдергивание мопеда на ноуте с Виндой система висла.

12-701054 > Малина первая B+, только что проверил, пингуется, хотя осталась в офисе включенной.

Перпетум Мобиле 28.01.2018 20:14

И по SSH только что зашел, через openVPN. все четенько работает.

Перпетум Мобиле 28.01.2018 20:16

12-701054 > может стоило поставить usbhub с доп питанием ?

harsh 28.01.2018 20:21

14-Перпетум Мобиле > если уже пошла такая пьянка,
будьте добры исполнять на одном и том же железе.
А потом будем рассуждать про суперустойчивую систему с виндой.

Перпетум Мобиле 28.01.2018 20:32

17-harsh > так как же я проверю на том же железе ? Винду же на нее не поставить :).

Понятно, что ниче не понятно. А другой машины с Linux у меня нет под рукой. Ну могу через недельку проверить на Pi3.

Если к интернету не подключаться, то система не зависает, при выдергивании модема.
Говорю же, сам удивился такому поведению, думал ну пропадет интернет ессно и все на этом, а оно вона как.

harsh 29.01.2018 01:03

Значит винду вы поставить не можете, а заявлять о том, что винда не виснет можете, я ничего не перепутал?

Имитировать отсутствие связи можно экраном, железной кружкой например.

Перпетум Мобиле 29.01.2018 10:22

19-harsh > не тупи, не могу поставить Винду на Raspberry Pi B+. насколько помню, Windows IoT не поддерживает эту модель, да даже если и поддерживала, это недоразумение на нее ставить не буду.
Проц там ARM а не X86 чтобы Винду вкорячивать. А на другом железе как сам заметил это не проверка.


Текущее время: 02:28. Часовой пояс GMT +3.