суббота, 11 июля 2015 г.

remote web access to openwrt

Через некоторое после перепрошивки роутера возникает необходимость удаленного доступа в LuCi. Но как и у большинства людей я столкнулся с ошибкой.
rejected request from rfc1918 ip to public server address
Предполагается что на руках есть
  • более менее живое железо с системой на флешке.
  • аккаунт на http://freedns.afraid.org/
Для начала зарегаем свой домен и скажем ему редиректить на свой внешний ip. После переезда мне не повезло и у меня он был динамический. По этому я поставил luci-app-ddns
ddns-scripts в систему.
Далее на железке пошел serviсes - Dynamic DNS и начал настраивать. Тут есть один нюанс.
Естественно в качестве сервиса я указал freedns.afraid.org, в качестве hosname указал полный адрес моего зареганного хоста ololo.now.im.
C Username все понятно, а вот в Password нужно было писать вовсе не пароль от аккаунта на freedns, там нужно было указывать токен из личной странички. Что бы его узнать, идем в Dynamic DNS, далее выбираем ;Direct URL. В открывшемся окне будет сказано, что ip успешно сменен. Нам нужна последовательность символов из урла после "dynamic/update.php?". Ее вставляем в то самое поле для пароля. Уроды, могли бы назвать поле "Token".Вообще на странице, напротив каждого хоста есть "quick cron example", вчитавшись в который вы без труда сможете накидать свои скрипты обновления ddns. Главное не забудьте включить cron:
/etc/init.d/cron start
/etc/init.d/cron enable
Отлично. Если у вас еще не настроен https доступ до роутера из lan, то стоит это сделать (секция WebUI). Теперь займемся доступом по 443 порту извне. В LuCi идем в Network - Firewall - Port Forwards и добавляем правило
ssl2router | Protocol: tcp+upd | external zone: wan | External port: 443| internal zone:lan | intrenal ip adress: скорее всего 192.168.1.1| internal port: 443
потом переключаемся на вкладку Traffic Rules и в секцию "Open ports on router:" добавляем новое правило:
ssl2router | Protocol: tcp+upd | External port: 443|
Теперь надо бы настроить веб-сервер. Признаюсь честно, у меня не получилось следуя рецепту снять галку с "Discard upstream RFC1918 responses" во вкладке "DHCP and DNS".
Я немного попаниковал и полез в консоль роутера: vi /etc/config/uhttpd
там я отключил прослушивание 80 порта и "снял эту галочку", в результате первые несколько строк в конфиге стали такими:
config uhttpd 'main'
        list listen_http '0.0.0.0:80'
        list listen_http '[::]:80'
        list listen_https '0.0.0.0:443'
        list listen_https '[::]:443'
        option home '/www'
        option rfc1918_filter '0'
потом перезапустил сервер /etc/init.d/uhttpd restart и тут понеслось:)