Оглавление:
Статья последний раз была обновлена 02.07.2024
Итак, наша задача — сделать из компьютера под управлением Debian / Ubuntu (буду писать для Debian) шлюз или программируемый роутер для раздачи интернетов в локальную сеть. Рассмотрен пример с двумя сетевыми картами в раздающем (шлюзовом) ПК.
Настраиваем первую сетевую карту
Сначала настраиваем локальную сеть на одну из сетевых карт, имеющихся у нас. Задаем следующие настройки для нашей локальной карты:
# secondary INTEL # local connect auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 # gateway 192.168.0.1
Как видите у меня это интерфейс eth1, ему я задал статичный адрес 0.1 на конце. В данном примере, как вы можете заметить, строка шлюза (gateway) закомментирована и не активна. Почему? Потому что шлюзом (раздающим интернет устройством) по отношению к самому себе, внутри сервера, будет являться вторая карта, а через интерфейсы это не настроить. Эту взаимосвязь мы легко и не принужденно сконфигурируем далее через iptables.
Почему выдал 0.1 адрес? Потому что во всех сетях такой адрес имеют устройства-шлюзы, то есть те, которые раздают инет. К тому же в домашней сети это нас убережет от гемороя с дополнительными гаджетами. Например многие медиаплееры по дефолту всегда смотрят на 0.1 устройство, и пытаются взять с него интернет.
Настраиваем вторую сетевую карту
auto eth0 iface eth0 inet dhcp
У меня все настройки на нее получаются от провайдера автоматически, и ничего дополнительного не указывается. Если у вас не так, укажите настройки от вашего провайдера, как правило это адреса шлюзов провайдера / сетей и масок. Как правило они отличаются от ваших локальных, поэтому конфликтов быть не должно. В моем случае потребовалась дополнительная настройка pppoe / l2tp соединения от корбины — это провайдер билайн, чтобы интернет все же пошел ко мне в офис через внешнюю карту eth0.
В большинстве случаев требуется указание нейм-серверов провайдера (если ваш провайдер не раздает NS-сервера автоматом), все они хранятся в /etc/resolv.conf. Для корбины это:
nameserver 85.21.192.5 nameserver 213.234.192.7
Если вы не укажите это, а провайдер автоматом вам не транслирует NS-сервера, то вы попросту не сможете ни работать в интернете, нb пинговать внешние ресурсы. В общем пробуйте!
Не забывайте перезагружать интерфейсы, для применения настроек, либо перезагружать машинку, если интерфейсы отказываются грамотно перезагружаться через команду.
Настраиваем файрвол
Итак, машинка доступна во внутренней сети, на самой машинке у нас есть интернет (проверить легко, залогиньтесь на нее по ssh и попингуйте яндекс например). Как нам раздать то интернет в локалку теперь? Проще простого! Воспользуемся специальной псевдо-графической утилитой arno firewall.
sudo apt install arno-iptables-firewall
Чтобы в дальнейшем реконфигурировать файрвол для добавления новых портов например, вводим команду:
dpkg-reconfigure arno-iptables-firewall
Тут же вылезет симпатичное окно, которое предложит нам с вами сконфигурировать файрвол, который защитит нашу сеть извне, и будет транслировать интернет в локалку. Файрвол попросит вас указать внешние сетевые интерфейсы и внутренние, если вы используете например пппое-соединение или любое модемное, то кроме имени интерфейса, укажите еще и имя подключения.
На вопросы о DHCP отвечаем «да», включить NAT тоже «да». Пинговать ли снаружи, тут как хотите, если будете с внешки лазить в офис / домой то да, в противном случае нет.
Далее вас попросят указать, какие порты надо открыть для TCP и UDP подключений (входящего и исходящего траффика). Как правило у каждой программы есть свой порт, который указан в хелпе к ней, а так же имеется набор стандартных портов. Открывайте только те порты, которые вам нужны. Вот пример часто используемых для веб-сервера портов:
- 80 / 8080 — HTTP
- 443 — HTTPS
- 25 — SMTP
- 587 — SMTPS
- 21 — SSH
- 22 — FTP
- 2222 — SFTP
Обращаю ваше внимание еще раз на то, что если какая-то программа будет пробовать что-то скачать / закачать через неуказанный тут порт, то у вас ничего не выйдет.
Номера портов разделяются пробелами а диапозоны через двоеточие между цифрами (без пробела). Так же удостоверьтесь, что записи портов аналогичны и для UDP, и для TCP вкладок, иначе будут казусы в духе того, что информацию программа отправляет, а получить не может, и наоборот.
Далее нас спросят о правилах CIDR и внутренней подсети. У нас внутренняя подсеть это 192.168.0.0/24 (это вписываем туда), эта запись позволит всем компьютерам сети 192.168.X.X получать внешнюю информацию. Вы также можете отдавать интернет только избранным компьютерам или устройствам с определенным сетевыми адресами, укажите их тут же, строго ограничив адресацию.
Далее файрвол попросится перезагрузиться, перегружаемся и смотрим что получилось.
Результат
А получилось следующее: на отдельном компьютере в локальной сети я явно указала IP-адрес, а шлюзом выставила наш раздающий компьютер-роутер с адресом 192.168.0.1, NS-сервера на компьютере-клиенте я установила провайдерские + NS-сервера Google (8.8.8.8 и 4.4.4.4). И получила интернет на нем!
Кстати провод из локальной сетевой карты этого шлюзового компьютера у меня воткнут во внутренний роутер с Wi-Fi, который работает в режиме свитча и обеспечивает гигабитное соединение (обе карты в самом компьютере-роутере также гигабитные).
В этой схеме не рекомендую использовать интегрированную в материнскую плату сетевуху, а подсоединить к серверу 2 хороших дискретных контроллера (сетевые карты), это избавит от многих проблем.
Одна беда — не настроен DHCP на сервере, но это уже отдельная история.
- Поднимаем веб-сервер на Ubuntu - 16.09.2024
- Переадресация домена на другой домен - 08.08.2023
- Как установить и удалить GNOME? - 31.07.2023