Шлюз на Linux (Debian / Ubuntu), раздача интернета Linux, роутер Linux

Статья последний раз была обновлена 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 на сервере, но это уже отдельная история.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *