Pull to refresh

Comments 23

Я на роутерах обычно 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, например.
UFO just landed and posted this here

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

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

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

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

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

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

Sign up to leave a comment.

Articles

Change theme settings