- Домашний веб-сервер, или сам себе хостинг-провайдер
- Шпаргалка по пробросу IP во внутреннюю сеть без моста и iptables в 4 команды
- Как установить статический IP-адрес вручную на Windows
- Типы IP-адресов
- Для чего нужен статический IP
- Как настроить статический IP в Windows 7, 8.1 и 10
- Способ 1. Через командную строку
- Как запустить свой сервер с белым ip из локальной домашней сети
- Disclaimer
- Вступление
- Что мы имеем?
- Какая цель?
- Установка постоянного локального адреса на сервер
- Рассказываем роутеру про сервер
- Защита сервера
- Firewall
- Fail2ban
- Теперь сделаем проверку более сложного уровня
Домашний веб-сервер, или сам себе хостинг-провайдер
Для того, чтобы сделать свой веб-сервер дома, нам понадобится компьютер и постоянный доступ в интернет с внешним IP-адресом, как это проверить описано дальше.
Делать сервер буду из старого нетбука Samsung N102SP со сломанной клавиатурой, для небольших нагрузок его вполне достаточно, к тому же он маленький и совсем не шумит. Интернет дома у меня раздаётся wifi роутером tp-link TL-WR840N, через него и буду подключать свой сервер.
Ставить буду Centos 7, качаем отсюда минимальный образ (Minimal ISO), образ записываю на флешку с помощью программы Rufus. Теперь надо загрузить нетбук с флешки, и тут возникает первая проблема, так как клавиатура не работает, не могу войти в биос, внешнюю usb клавиатуру он не видит, сброс биоса решает проблему (в нетбуке Samsung N102SP биос сбрасывается замыканием контактов rtc reset под крышкой memory, замыкать надо на 30 секунд), выбираем в биосе приотритетную загрузку с флешки и начинаем установку, даже при минимальной версии Centos 7 устанавливается в графическом режиме. Никаких сложностей с установкой возникнуть не должно, удаляем все старые разделы на диске и отдаём все под Centos, устанавливаем пароль root и прописываем настройки сети, в моем случае подключаемся к домашней сети wifi (это можно сделать и потом с помощью команды nmtui), несколько минут и Centos 7 установлен.
Заходим под root. Останавливем firewall командой «systemctl stop firewalld», отключаем firewall из автозагрузки командой «systemctl disable firewalld». Пока он нам не нужен, настроим firewall позже. Еще надо обязательно отключить спящий режим при закрытии крышки нетбука, для этого надо в файле /etc/systemd/logind.conf заменить строку «#HandleLidSwitch=suspend» на строку «HandleLidSwitch=ignore», затем перезапустить командой «systemctl restart systemd-logind».
Теперь можно мой нетбук поставить в удаленный угол и забыть про его физическое существование, все дальнейшие действия со своим домашним веб-сервером можно произвоить через ssh.
Теперь нужно настроить wifi роутер, в случае с tplink открываем tplinkwifi.net логин и пароль по умолчанию admin, в разделе «Состояние» смотрим состояние WAN, IP адрес должен быть статическим и не должен начинаться с 192.168.х.х, 172.х.х.х, 10.х.х.х, в противном случае свяжитесь с провайдером и попросите предоставить внешний IP, скорее всего это можно сделать и через личный кабинет, мой провайдер предоставил мне IP за 90 рублей в месяц. Все новые настройки нужно прописать в разделе «Сеть/WAN». Теперь нужно зарезервировать внутренний IP адрес на роутере для нашего сервера, заходим в раздел «DHCP/Список клиентов DHCP» и находим там наш сервер (чтобы узнать IP на сервере наберите команду ifconfig), после копируем MAC-адрес и переходим в раздел «DHCP/Резервирование адресов» и добавляем там MAC-адрес нашего сервера и его IP. Всё, теперь роутер всегда будет выделять для нашего сервера этот IP. Теперь надо пробросить порты, чтобы при обращении из интернета роутер отправлял запросы на домашний веб-сервер, заходим в раздел «Переадресация/Виртуальный сервер» и добавляем 80 порт. Также добавляем 22 порт, чтобы можно было подключаться к серверу через ssh. У меня при добавлении 80 порта возникала ошибка «Порт удалённого управления веб-интерфейсом конфликтует с портом виртуального сервера». Чтобы этого избежать предварительно изменим порт удалённого управления на 8080, для этого откроем вкладку «Защита/Удалённое управление». Теперь управление роутером доступно по адресу tplinkwifi.net:8080/
Для удалённого управления веб-сервером качает утили Putty с www.chiark.greenend.org.uk/
Теперь для полнофункционнальной работы веб-сервера установим необходимые компоненты, первым делом подключим репозиторий Epel, там есть практически всё необходимое для автоматической установки, вводим команду «yum install epel-release». Затем для отслеживания состояния сервера устанавливаем htop командой «yum install htop», для удобной работы с файлами усталавливаем midnight commander, командой «yum install mc», теперь ставим Apache, для этого вводим «yum install httpd», запускаем и ставим в автозагрузку командами «systemctl start httpd» и «systemctl enable httpd», теперь установим MariaDB командой «yum install mariadb-server», аналогично запускаем и ставим в автозагрузку «systemctl start mariadb» и «systemctl enable mariadb», производим первичные настройки при помощи команды «mysql_secure_installation», устанавливаем root пароль, удаляем анонимного пользователя и тестовую базу, затем нужно устанавить PHP с необходимыми модулями «yum install php php-mysql php-common php-mbstring php-mcrypt php-devel php-xml php-gd», перезагружаем httpd командой «systemctl restart httpd». Теперь при вводе в браузере IP адреса видим приветственную страницу Apache. Корневой каталог находится в «/var/www/html/». Вот теперь наш домашний веб-сервер доступен с любой точки планеты.
Источник
Шпаргалка по пробросу IP во внутреннюю сеть без моста и iptables в 4 команды
В статье будет рассмотрена маршрутизация внешнего IP-адреса внутрь локальной без пробрасывания ethernet-шлюза и переписывания адресов в iptables. В итоге на сетевой карте внутреннего сервера будет один правильный внешний IP-адрес, внутренние IP-адреса будут отсутствовать.
Практика применения: например маршрутизация IP-адресов с сервера на виртуальные машины, без необходимости подключать их к ethernet-сети физического сервера.
При этом на сетевой интерфейс может быть назначена как сеть адресов, так и разрозненные адреса, у которых этот сервер указан просто как следующий узел маршрутизации (так например Hetzner раздает свои отказоустойчивые IP-адреса).
Исходное состояние
Сервер S1 — сервер во внутренней сети или виртуальный сервер, для которого нужно пробросить внешний IP-адрес, у него есть один сетевой интерфейс — eth0, включенный в brLAN.
iptables на обоих серверах выключен
Краткая шпаргалка по командам
Сервер S1 (внутренний)
На этом всё: для S1 внутренних IP-адресов назначать не нужно — пакеты сразу отправляются с публичного адреса.
Настройка клиента через конфиги
Как настроить через конфиги сервер пока не нашел, но в целом это меньшая проблема — один шлюз контролировать просто и настройка элементарная — просто для каждого адреса (сети адресов) вызывать команду направления трафика во внутреннюю сеть — это можно хоть просто скриптом сделать и включить в автозагрузку.
Преимущества перед iptables с пробросом на внутренний IP
Как избавиться от 192.168.0.1
P.S. в принципе адрес 192.168.0.1 тоже можно исключить и указывать вместо него любой IP-адрес сервера-шлюза, например его публичный IP, тогда трассировка пути будет смотреться красиво. При установках по умолчанию всё будет работать, но могут возникать ньюансы.
Например возможность отвечать по своим IP-адресам с любого интерфейса может иногда мешать и должна быть выключена. Или если сменится публичный IP-адрес шлюза (например виртуалка переехала на другой физический сервер) — нужно будет менять настройки внутреннего сервера. При использовании для шлюза отдельного, общего для всех подобных шлюзов адреса такой проблемы не возникает.
Источник
Как установить статический IP-адрес вручную на Windows
Интернет устроен по принципу непрерывного обмена данными между устройствами. Чтобы устройства могли находить друг друга в сети и взаимодействовать, были придуманы IP-адреса. IP-адрес (от англ. Internet Protocol) — это уникальный идентификатор компьютера, сервера или другого устройства в интернете.
В статье мы расскажем о том, какие типы IP существуют, и покажем, как указать IP адрес вручную на компьютере с ОС Windows 7, 8.1 и 10.
Типы IP-адресов
Любое устройство в интернете имеет два IP-адреса:
- внешний — виден всему интернету. Именно по этому адресу к компьютеру обращаются все устройства из глобальной сети. Узнать внешний IP компьютера можно с помощью сервиса Мой IP-адрес.
- внутренний — известен только устройствам внутри частной сети. С его помощью устройства «общаются» в локальных сетях.
Чтобы связаться с устройствами из глобальной сети, компьютер обращается по локальной сети к сетевому адаптеру (маршрутизатору или роутеру). Адаптер преобразует внутренний IP во внешний с помощью технологии NAT (Network Address Translation). Затем он ищет нужный сервер в интернете и передает ему запросы компьютеров. Сервер обрабатывает запросы и отправляет ответы на внешний IP-адрес. После этого адаптер сопоставляет, какому внутреннему IP соответствует тот или иной внешний адрес, и передаёт ответ нужному компьютеру по локальной сети.
Таким образом, чтобы получить ответ из глобального интернета, компьютер должен сначала обратиться к посреднику — маршрутизатору. Компьютер и маршрутизатор взаимодействуют внутри локальной сети с помощью внутренних адресов. А маршрутизатор и устройства из глобальной сети — с помощью внешних адресов.
Внешний и внутренний IP могут быть как статическими, так и динамическими.
Динамический IP — это адрес, который компьютер получает при каждой регистрации в сети. Такой адрес закрепляется за устройством только на время. Динамический адрес может измениться сразу после перезагрузки компьютера. Как только компьютер подключается к интернету, за ним закрепляется тот или иной свободный адрес из общей базы адресов. Когда он прекращает работу в интернете, адрес освобождается и закрепляется за новым появившемся в сети устройством. Если компьютер снова захочет подключиться, он получит новый IP, который достанется ему от другого, покинувшего сеть компьютера. С помощью динамических адресов функционирует большая часть устройств в интернете.
Статический IP — это фиксированный адрес отдельной линии в интернете. Он позволяет зафиксировать один адрес за одним компьютером на длительное время. В начале развития интернета такой тип адресов закреплялся за всеми устройствами. Со временем количество устройств в сети увеличилось в десятки тысяч раз и уникальных адресов перестало хватать на всех. Теперь статический адрес можно получить только у интернет-провайдера за плату.
Для чего нужен статический IP
Статический IP используют для настройки доступа к устройству как из внешней сети, так и внутри локальной. Статический IP позволяет:
- подключаться к компьютеру через удаленный рабочий стол,
- управлять принтером, который подключен только к одному компьютеру, с разных компьютеров внутри локального интернета,
- настроить FTP или веб-сервер на домашнем компьютере,
- настроить VPN-подключение (например, подключение из дома к сети офиса),
- пользоваться банковскими платежным системам через клиент-банки,
- удаленно подключаться к камерам наблюдения за домом/квартирой,
- авторизоваться в файловых хранилищах и других аналогичных сервисах.
Статический IP устанавливают вручную. Для этого нужно заказать IP у своего интернет-провайдера, а затем настроить его.
Как настроить статический IP в Windows 7, 8.1 и 10
В операционной системе Windows можно установить статический айпи адрес четырьмя способами:
- через командную строку,
- через сетевые подключения,
- с помощью Windows PowerShell,
- в параметрах сети.
Мы покажем два самых универсальных способа установки — через командную строку и через сетевые подключения.
Способ 1. Через командную строку
В поисковую строку введите «cmd» и нажмите Ок:
Источник
Как запустить свой сервер с белым ip из локальной домашней сети
Disclaimer
Я не являюсь сетевым инженером, я просто студент, который решил записать свои действия, чтобы поделиться со знакомыми и не забыть, что я вообще делал. Буду очень рад если меня поправят в комментариях. Этот конспект написан по другим статьям с различных ресурсов, прошу поддержать авторов тех гайдов, у них некоторые моменты расписаны более подробно и возможно вам подойдет именно их статья.
Буду стараться писать очень подробно, чтобы человек, знающий столько сколько я в начале своего пути, все понял.
Вступление
Мне очень давно хотелось поднять видимый извне сервер в своей домашней локальной сети, чтобы использовать его для pet проектов или же возможно для сайта-визитки.
Возникает вопрос: почему не использовать для этого самую простую VPS и не тратить мощности своего компьютера? Ответ очень прост: статический белый ip у меня уже был и давно, а в качестве сервера я решил использовать не основной пк а старый ноутбук. Поэтому дополнительных затрат не предвиделось.
Что мы имеем?
Для справки, на момент написания публикации (2021) стоимость минимальной VPS на доверенном ресурсе — 400 руб. , стоимость белого ip у моего провайдера — 179 руб.
Ноутбук (intel core i5 M 560 2,67 GHz, 4/60Gb) с установленной Ubuntu Server 20.04.3 (для создания установочной флешки советую использовать rufus (win) или balenaEtcher (os x)
роутер провайдера с подключенным пакетом «статический ip адрес»
второй компьютер для тестов (все что делается через браузер можно, конечно, сделать и на телефоне, вопрос удобства)
хорошая музыка чтобы процесс не был скучным
Какая цель?
Сделать python3 flask (взял для простоты) сервер доступный из вне.
Установка постоянного локального адреса на сервер
Приступим. Во-первых установим постоянный ip для нашего сервера в локальной сети. По идее изначально используется DHCP (протокол, по которому каждое устройство в сети получает относительно случайный ip адрес, а нам нужен постоянный для сервера, чтобы роутер всегда знал куда отправлять внешние запросы)
Смотрим интерфейс, который мы используем, с помощью ifconfig
В зависимости от того какой тип соединения мы используем (кабель или wi-fi) выбираем файл в катологе /etc/netplan
И настраиваем его примерно так:
ethx — название нашего устройства по которому идет подключение
Здесь важно понимать что означают строки:
addresses (6) — адрес нашего сервера в локальной сети, как раз то что мы делаем постоянным
/24 означает маску сети (255.255.255.0), в данной ситуации первые 3 числа должны совпадать с локальным адресом роутера, а последнее число произольно. Я выбрал адрес 192.168.1.200
gateway4 — шлюз нашей сети, то есть роутер. Его адрес 192.168.1.1, обычно он общий для всех роутеров одного провайдера, так что погуглите (иногда его адрес указывается там же где и пароль от wi-fi)
в строке nameservers: addresses (9) указываем тот же адрес что и в gateway4 (простите, но я беспонятия что это)
dhcp4: no и dhcp6: no указывают, что мы не будем использовать протокол DHCP
На этом этапе возможно потребуется проверка:
sudo tcpdump -i ethx icmp and icmp[icmptype]=icmp-echo
Чтобы следить за тем кто нас пингует.
И пингуем его с другого пк внутри локальной сети по адресу 192.168.1.200 .
Также строит проверить есть ли доступ к интернету у нашего ноутбука-сервера: используем команду ping с доменом google.com .
Все это подробно описано в этой статье для Ubuntu, для других дистрибутивов гуглите «Установка статического ip «.
Все работает? Идем дальше!
Рассказываем роутеру про сервер
Теперь наш сервер знает, что мы имеем дело с постоянным ip и не используем протокол DHCP. Самое время рассказать роутеру, что внешние запросы нужно отправлять на сервер. Чтобы получить доступ к настройкам роутера вбиваем в поисковую строку его ip адрес.
Есть два варианта:
Установить DMZ зону внутри настроек роутера и указать туда локальный адрес нашего сервера. Этим действием мы делаем наш сервер публичным и теперь любой может попробовать подключиться к нему.
Пробросить порты нужных нам ресурсов через роутер на сервер (перенаправление портов). Не забудьте порт SSH (22) и flask (5000)
Попробуйте пингануть его из внешней сети.
Все норм? Теперь наш сервер виден из вне, самое время подумать о безопасности.
Защита сервера
Я буду настраивать SSH , Firewall и fail2ban по вот этому очень хорошему гайду. (еще раз, моя цель не скопипастить все что я нашел, а собрать все в одно место, чтобы не забыть) Я делаю все для Ubuntu Server, но в том гайде есть для CentOS и Red Hat.
Во-первых сделаем еще одного пользователя помимо root (1), зададим ему пароль (2) и разрешим использовать root привелегии через sudo (3):
Настраивайте по инструкции в статье упомянутой выше. Там мне совсем нечего добавить, кроме подроностей о public и private ключах:
ssh-keygen -t rsa генерирует 2 ключа открытый (тот что имеет . pub ) и приватный который (не имеет такого расширения)
Открытый ключ отправляется на сервер в файл authorized_keys в папке /.ssh в домашней директории пользователя ( /home/username/.shh/authorized_key )
Для этого можно использовать команду:
Закрытый ключ используется для аутентификации, скопируйте его куда-нибудь чтобы не потерять
Использовать ключ для входа можно командой:
Важно отключить аутентификацию по паролю иначе мы все это делали зря.
Firewall
Используя проброс портов мы разрешаем доступ к нашему серверу лишь посредством подключений к определенным портам, но DMZ зона допускает почти все типы запросов. Используя DMZ зону нам строит поднять FireWall на сервере, который как раз и ограничит количество портов которые могут принимать внешние запросы.
Разрешим использование SSH (1) и порта 5000 (2) в ufw (Firewall), и запустим Firewall (3):
Подняв FireWall важно не забыть разрешить доступ к порту SSH (22) и порту Flask (5000) (ну или другого ПО, которое мы собираемся использовать). Я забыл и долго не понимал, почему мой сервер не отвечает.
На сайте хорошо разобраны команды для управления Firewall-ом.
Fail2ban
Fail2ban ограничивает количество попыток подключения, это сильно усложнит подбор аутентификационных данных SSH.
Для начала установим его (1) и запустим (2, 3):
Теперь можем настроить его, используя эти конфигурационные файлы: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf . Во втором находятся ограничения на количество подключений за определенный промежуток времени и время бана.
Теперь сделаем проверку более сложного уровня
Установим flask и python3:
Скопируем код тестового сервера с сайта в файл server.py :
Находясь в директории с этим файлом, запустим сервер:
Сервер запущен и теперь мы можем попробовать подключиться к нему с внешнего устройства прямо через строку в браузере, вводя внешний адрес нашего роутера, к примеру:
Если все работает мы должны увидеть строку «Hello, World!». Не заработало? Пройдитесь по моим заметкам в этом гайде еще раз.
Источник