Как стать автором
Обновить

Комментарии 24

Я на роутерах обычно lighttpd для этих целей поднимаю. Как минимум потому, что памяти у меня выше 32 Мб не бывает. =)
Да, я на TP-Link предыдущем пробовал — у него тоже 32/8, в принципе работало, но уж очень он медленно с диском по USB общается — максимум 3-4 мегабайта в секунду выходило.
У меня ещё и весь server-side на shell-script написан, т.к. почти все прочие интерпретаторы запускать там очень больно, медленно и печально.

Вообще, кроме веба у меня на роутере ещё крутится интернет-радио (icecast2 + ices, ogg без перекодирования на роутере) и sshd, в т.ч. туннель через него.

И всё это сделано на старой штатной прошивке D-Link'а, которая для этого не предназначена совсем.
Я так и не понял, зачем роутить 80 и 443 порты на самого себя? Можно же было настроиь nginx слушать на внешнем wan инрефейсе.
Подскажите, как? С удовольствием уберу лишнее звено.
Просто во всех описаниях, которые читал — указывается на необходимость проброса портов с внешнего интерфейса на внутренний.
Везде про проброс портов пишут потому, что обслуживающая программа находится на одной из машин локальной сети а не на роутере. А если програма находится на роутере проброс не нужен. У всех програм в конфигураци есть параметр, указывающий на каком адресе или иногда интерфейсе нужно открыть порт и слушать. Если там указать внешний адрес, то все заработает из коробки без пробросов. Например, у nginx этот параметр называется listen. То есть, написав в конфигурации listen внешний_адрес:80 все сразу заработает.
Покурил обсуждения по этому способу, как я понял — openwrt.org/docs/guide-user/services/webserver/nginx — тут такой вариант описывается, при этом для доступа из локальной сети делается еще одна конфигурация. Сейчас попробовал, без дополнительных настроек, просто отменив проброс портов и поставив в конфиге listen внешнийIP:80 получаю 403 ошибку при попытке открыть сайт из локальной сети.

Надо подумать — с пробросом портов какой-то костыль, но проще конфиги ;) И при смене внешнего IP ничего перенастраивать не надо.
Проброс портов действительно не нужен, listen 80 в конфигурации nginx на самом деле означает listen 0.0.0.0:80, то есть он по умолчанию слушает порт на всех имеющихся сетевых интерфейсах, никакой внешний IP прописывать не нужно.

Дело в другом, у всех роутеров включен файрволл, в цепочке INPUT которого в конце списка правил обычно стоит DROP ALL anywhere, то есть все порты закрыты, кроме некоторых. Вы сами можете в этом убедиться, если зайдете на роутер по SSH и дадите команду iptables -L.

Стало быть, вам просто нужно открыть этот порт:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT


Обратите внимание на ключ I (insert). Обычно в советах в интернете пишут эту команду с ключом -А (append), но с ним правило добавится в самый конец цепочки, а перед ним будет DROP all, и порт не откроется. Insert вставит правило в самое начало, до DROP all.

Если в роутере есть возможность прописать свои скрипты, эту команду можно прописать в скрипт Firewall, чтобы не заходить по SSH и открывать порт вручную после каждой перезагрузки роутера. Или в скрипт Init.
Подумалось — а что в этом случае будет, учитывая то, что 80/443 порты на внутреннем интерфейсе уже слушает веб-сервер админки роутера?

Попробовал открыть порт через iptables (пришлось установить этот пакет) — с указанием в конфиге listen 80 nginx ругается в логах, что не может bind этот порт. И в случае открытия порта мы не даем ли тем самым доступ к админке снаружи?
Ну если админка роутера уже висит на 80/443, то nginx не сможет забиндить порт, надо переносить админку на другие порты, слушать порт может только одна программа.
Вообще обычно не рекомендуется светить админку напрямую в внешнюю сеть, лучше ее оставить только на LAN, при необходимости используя VPN для подключения снаружи. Боты сканируют весь интернет и пытаются подобрать пароли на всем, что подключено напрямую в сеть: роутеры, IP-камеры и т.д.

iptables (пришлось установить этот пакет)


Firewall в Linux находится в ядре и называется Netfilter. iptables, nftables и другие программы из userspace им управляют. Я не знаю, как там в Keenetic, возможно там nftables по умолчанию, у него другой синтаксис. То есть можно посмотреть, что уже есть в системе, чтобы не ставить лишние пакеты.
Ещё поразбирался — админку перенести на другой порт не получается простыми средствами. Вот, похоже, и причина, почему авторы инструкций предлагают проброс портов — это проще и работает на всех устройствах… Спасибо за замечания — узнал еще немного по сетевым технологиям ;)
С проблемой частой записи на флэшку (логи) я справился относительно просто: пишу все логи в /tmp (который расположен в ramdrive) и по cron'у проверяю свободную память. Как только превысило определённый предел — сливаю на флэшку. В итоге вся мелочь пишется редко и «одним куском». Флэшки живут годами в таком режиме.

Я бы рекомендовал воспользоваться одноплатным компьютером, на подобии raspberry pi. Подать питание можно от роутера, потребление небольшое, и бесшумный. Но при этом — любой вменяемый дистрибутив, выше производительность, больше возможностей.

Тоже думал про малинку, помимо названных плюсов (а на нее еще и элементы умного дома повесить можно, и медиаплеер соорудить), есть и минусы:
— это еще одна коробочка, которая стоит ощутимых денег;
— от роутера я бы включать не рискнул — боюсь, не потянет его USB такое потребление, это еще один блок питания, а в удлинителе свободных розеток нет;
— к малинке надо подтянуть ethernet, но на роутере все порты уже заняты;
— более-менее мощные raspberry pi требуют радиатор, а при большой нагрузке и вентилятор — иначе перегреваются;
— и главное — скорость работы в качестве NAS нормальная только у rpi4 (получается гигабит выжать), а она точно хочет вентилятор…

В общем — история обычная :) «а зачем тебе Х, возьми Y, оно чуть дороже, но зато....», следом «а зачем Y, возьми Z — оно в большом корпусе, с системой охлаждения, но зато....» — в итоге обсуждаем стоечные сервера и системы кондиционирования датацентров.
А хочется просто маленькую площадку для боевых экспериментов.

Если, к примеру, кулхацеры вздумают за DDoSить сайт на бесплатном хостинге — можно перенести сайт на более устойчивую площадку. Если сайт на домашнем роутере — переходить к другому провайдеру, или сидеть без интернета.

Сайт на домашнем роутере можно спрятать за Cloudflare, например.
НЛО прилетело и опубликовало эту надпись здесь

От роутера не взлетит, для raspberry 3b рекомендуемый БП 5В- 3А, на китайских недорогих двухамперных они вообще не включаются

У меня RPi 3 b+, работает даже от USB компьютера, от роутера не пробовал.

А что малина при этом делает? У меня на двухамперном БП она работала до тех пор, пока работала вообще без нагрузки, как только в home assistant появилось с десяток автоматизацией и некоторое количество датчиков она похоже начала троттлить а потом и в ребуты уходить.

Работает desktop raspbian. Редактирую текстовые файлы, docker иногда для сборки запускаю.
При питании от 2 А зарядки, запускал анализ шахматных партий (stockfish 8 потоков 100% загрузка) ничего плохого не происходило, но при этом, рядом кулер крутился, сейчас без кулера обхожусь, но и корпуса у меня нет.
Некоторое время роутером (openwrt) была на зарядке 2А.

Подскажите, пропустил момент. Сама ОС стоит на роутере и мы ее используем в роли сервера? Если так то и простой телеграмм бот туда влезет.. для тех же домашних нужд и умного дома.

Да, в принципе вполне возможно. Народ на эти роутеры чего только не навешивает дополнительно, и телеграм-бот - не сильно большая нагрузка... )

  • 4 LAN порта, хотелось больше, но это уже не домашняя категория.

Не соглашусь, вполне себе домашняя. Но редкость, да.

В новостройке ремонт делаю, 8 линий к роутеру пришли. Всего лишь двухкомнатная квартира. Это с запасом, но 5-6 точно задействованы будут сразу. На 8 портов выбор сильно сужается, но есть. Если к нему добавить возможность использовать без проблем дополнительный софт, то остается буквально 2-3 модели. Выбрал кинетик пик.
Хотя статья 20-го года, выбор был другой, наверное...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации