wwan0 Link encap:Ethernet HWaddr FA:63:B9:81:12:7C
inet addr:10.181.18.180 Bcast:10.181.18.183 Mask:255.255.255.252
inet6 addr: fe80::f860:b9ff:fe81:127c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:281553 errors:239 dropped:0 overruns:0 frame:0
TX packets:230960 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:282998444 (269.8 MiB) TX bytes:49976507 (47.6 MiB)
а зовнішню адресу можна перевірити по checkip.dyndns.org, і вона зараз є 94.254.145.5. Ну але хоч би як ви не відкривали порти в рутері, до рутера ззовні вам зась. Можливо, якийсь провайдер і не блокує зовнішніх портів, але, судячи по форумах, це величезна рідкість.
Вихід є, можна докупити статичну ip-адресу, але це мене найменше цікавить. Інший логічний вихід - організувати vpn-мережу. Ну і виявилося, що, в принципі, робиться все досить просто на базі n2n. Причому для OpenWRT все робиться досить елементарно. Перш за все треба додати додаткові сховища пакунків від eko:
# cd /tmp
# wget http://dl.eko.one.pl/chaos_calmer/eko1.pub
# opkg-key add eko1.pub
# echo 'src/gz eko1 http://dl.eko.one.pl/chaos_calmer/ARCH/packages/' >> /etc/opkg/customfeeds.conf"
# opkg update
Далі встановити пакунок n2n-v2, # opkg install n2n-v2
і відповідно його сконфігурувати:# vi /etc/config/n2n
config edge
option ipaddr '10.90.70.1(ip адреса вашої ноди)'
option netmask '255.255.255.0'
option supernode 'ip-адреса сервера супермоди'
option port 'порт сервера супермоди'
option community 'назва спільноти'
option key 'пароль доступу до спільноти'
option route '0'
#config supernode
# option port '86'
і запустити
# uci commit n2n
# /etc/init.d/n2n enable
#/etc/init.d/n2n start
Опції для створення суперноди закоментовані, вона нам на рутері і так ні до чого, бо доступу до неї немає. А в конфігурації моєї ноди, яка працює на рутері з модемом, ноді надано адресу 10.90.70.1 з маскою 255.255.255.0. Ця нода буде з'єднуватися з портом зовнішньої суперноди, яка запущена десь на сервері, який має відкритий якийсь порт (порт сервера суперноди). Можна знайти такі відкриті сервера, але вони довго не живуть. Простіше самому на якомусь сервері, до якого маємо доступ, скомпілювати або встановити пакунок n2n з супернодою і запустити її, прав суперкористувача для цього не потрібно.
Отже, скажімо, що маємо доступ до якоїсь суперноди, і у нас на рутері запущена нода. Треба тепер з'єднатися ззовні до неї. Це досить просто: на будь-якому компі встановлюємо пакунок n2n, і запускаємо ноду
# edge -a 10.90.70.2 -c назва_спільноти -k пароль_доступу_до_спільноти -l ip_адреса_сервера_суперноди:порт_сервера_суперноди -f
Тобто запускаємо ноду з тими ж параметрами, що й на рутері, тільки міняємо адрес ip в спільній мережі, на рутері 10.90.70.1, а на зовнішньому компі 10.90.70.2, наприклад. Ну все тепер, спільна vpn мережа створена, є супернода, є дві ноди, які комунікуються за допомогою суперноди. Щоб, наприклад, з'єднатися з рутером, достатньо на тому зовнішньому компі запустити переглядач інтернету і перейти на адресу http://10.90.70.1, має відкритися веб-інтерфейс рутера OpenWRT. На будь-якому компі в локальній мережі рутера можна запустити ноди з тими параметрами (міняючи тільки ip) і мати таким чином доступ до них.
2. На даний момент в чистому інтерфейсі luci для OpenWRT не реалізована підтримка висвітлення сили сигналу в модемі. В принципі, це можна побачити з рівня командного рядка, але постійно лазити на рутер, щоб тільки запустити команду типу
# uqmi -d /dev/cdc-wdm0 --get-signal-info
не зовсім зручно, бажано мати якусь звичну візуальну інфу. В сховищах eko я знайшов пакунок, який сяк-так це реалізує. Отже, встановлюємо пакунок 3ginfo:
# opkg update
# opkg install 3ginfo
Налаштовуємо:
# vi /etc/config/3ginfo
config 3ginfo
option http_port '81'
option language 'en'
option device '/dev/ttyUSB2'
# uci commit 3ginfo
# /etc/init.d/3ginfo enable
#/etc/init.d/3ginfo start
В мене ядро створює 4 пристрої для модему, /dev/ttyUSB1, /dev/ttyUSB2, /dev/ttyUSB3 і модуль qmi_wwan створює свій /dev/cdc_wdm0. Останній зайнятий під зв'язок, тому 3ginfo мусить використовувати інший пристрій, в даному випадку це /dev/ttyUSB2 для отримання інфо про сигнал. Далі відкриваємо сторіночку http://адреса_рутера:81 і бачимо картинку.
3. Часом, якщо ніхто не користується зв'язком, модем "засинає". Ніби зв'язок є, адреса ip є, але модем мовчить, жодна адреса не відкривається. Думаю, це дійсно модем засинає. Я додав до крона рядок, щоб через кожну хвилину пінгувався сервер гугла, це мало б підтримувати модем у збудженому стані:
*/1 * * * * ping -c 1 8.8.8.8
Ось уже два дні на модемі ще ні разу не пропав зв'язок. Ніби працює.