Разное

Шлюз на debian: Настройка интернет шлюза на Debian

Содержание

Настройка интернет шлюза на Debian

Ранее я уже рассматривал настройку программных роутеров на операционных системах freebsd и centos. Сегодня я хочу настроить интернет шлюз для локальной сети на основе популярного linux дистрибутива Debian. Выполним подготовку сервера и реализуем основной функционал, необходимый для выхода в интернет из локальной сети.


Если у вас есть желание освоить Linux с нуля, не имея базовых знаний, рекомендую познакомиться с онлайн-курсом Administrator Linux.Basic в OTUS. Курс для новичков, для тех, кто хочет войти в профессию администратора Linux. Подробности по .

Данная статья является частью единого цикла статьей про сервер Debian.

Введение

Я буду работать со следующим сервером:

# uname -a
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux
# cat /etc/debian_version
8.3

Если у вас еще нет готового сервера, то рекомендую статью на тему установки debian. Там подробно описан весь процесс от и до.

На сервере имеются 2 сетевых интерфейса:

Описание сетевых интерфейсов
Интерфейс Описание IP
eth0 внешний интерфейс, подключен к провайдеру, настройки получает по dhcp автоматически 192.168.1.24
eth2 внутренний интерфейс, смотрит в локальную сеть, статический ip адрес 10.0.15.1

Файл конфигурации сетевых интерфейсов выглядит следующим образом:

# cat /etc/network/interfaces

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth2
iface eth2 inet static
address 10.0.15.1
netmask 255.255.255.0

Как настроить сеть в debian я подробно рассказал отдельно. Если вы еще не сделали это и не выполнили предварительную настройку debian, то рекомендую ознакомиться с материалами.

Если у вас недостаточно опыта и вы не чувствуете в себе сил разобраться с настройкой шлюза самому с помощью консоли сервера — попробуйте дистрибутив на основе centos для организации шлюза и прокси сервера в локальной сети — clearos. С его помощью можно через браузер настроить весь необходимый функционал. В отдельной статье я подробно рассказал об установке clearos.

Подготовка шлюза

Выше я привел ссылку на подробную статью с описанием настройки сервера общего назначения. Сейчас мы выполним некоторые подготовительные действия без подробностей и описания. Их вы можете почитать отдельно. Сейчас просто необходимые команды.

Сеть на будущем программном роутере настроили, доступ в интернет на сервере есть. Обновим его:

# apt-get update
# apt-get upgrade

Установим MC, мне в нем удобнее всего работать, в том числе в редакторе mcedit:

# apt-get -y install mc

Настроим часовой пояс, если раньше не сделали это:

# dpkg-reconfigure tzdata

Устанавливаем сервис ntp для автоматического обновления времени:

# apt-get -y install ntp

На этом основные подготовительные действия закончены. Приступаем к настройке шлюза.

Настройка маршрутизации, firewall и nat

Первым делом включим маршрутизацию пакетов между сетевыми интерфейсами. Для этого редактируем конфиг /etc/sysctl.conf:

# mcedit /etc/sysctl.conf

net.ipv4.ip_forward=1

Либо раскомментируйте эту строку, либо добавьте, если ее нет. Но она по-умолчанию быть должна, закомментированная со значением 1. Применяем эту настройку:

# sysctl -p

На выходе работы команды в консоли будет выведен измененный параметр со значением 1.

Теперь приступаем к самому главному — настройке фаервола iptables и nat в нем для обеспечения выхода в интернет из локальной сети. Я очень подробно рассмотрел эту тему в отдельной статье. Хотя там речь идет о другом дистрибутиве, сами правила iptables абсолютно одинаковые с точностью до строчки, за исключением маленького нюанса, связанного с тем, что правила нужно сохранять в другой файл для применения их после перезагрузки.

Я приведу здесь сразу готовый вариант файла с правилами iptables, необходимых для работы интернет шлюза в debian. В файле даны подробные комментарии ко всем значениям, так что вы без проблем разберетесь и закомментируете или наоборот раскомментируете необходимые вам значения. Качаем скрипт правил iptables — iptables-debian.sh

Копируем содержимое файла и создаем скрипт с правилами на сервере:

# mcedit /etc/iptables.sh

Вставляем в редактор правила. Редактируем их под свои нужды, обязательно заменяя переменные WAN и LAN на свои. Сохраняем файл.


Прежде чем двигаться дальше предупреждаю, что все работы по настройке фаервола должны производиться только если у вас есть доступ к консоли сервера, чтобы в случае ошибки и потери удаленного доступа вы смогли откатить изменения. Даже если вы абсолютно уверены в своих знаниях, вас может подвести банальная ошибка или опечатка. Я сам, к сожалению, сталкивался с такими ситуациями, поэтому считаю необходимым предупредить об этом вас.

Делаем файл с правилами исполняемым:

# chmod 0740 /etc/iptables.sh

Прежде чем применить новые правила, посмотрим на текущие:

# iptables -L -v -n

Видим, что на настраиваемом роутере firewall полностью открыт. Теперь применим новые правила и посмотрим на результат:

# /etc/iptables.sh

Все в порядке, правила применились, доступ к серверу я не потерял. Теперь сделаем так, чтобы новые правила применялись после перезагрузки. В последней строчке скрипта есть команда:

/sbin/iptables-save  > /etc/iptables.rules

С ее помощью готовый набор правил iptables выгружаются в файл. Нам нужно сделать так, чтобы эти правила применялись при включении сетевого интерфейса во время загрузки сервера. Для этого открываем файл interfaces на редактирование и добавляем в самый конец строчку:

# mcedit /etc/network/interfaces

post-up iptables-restore < /etc/iptables.rules

Для проверки перезагружаем шлюз и проверяем, все ли в порядке. По сути основная настройка программного роутера на debian завершена. Осталось сделать небольшое дополнение и настроить dhcp и dns сервер в локальной сети. Я для этих целей использую простой и легкий в настройке dnsmasq.

Установка и настройка dnsmasq в Debian

Выполним установку dnsmasq на дебиан:

# apt-get install -y dnsmasq

Сделаем минимальную настройку программы. Нам нужно просто выдавать сетевые настройки пользователям. Для этого приводим конфигурационный файл dnsmasq к следующему виду:

# mcedit /etc/dnsmasq.conf

domain-needed
bogus-priv
interface=eth2
dhcp-range=eth2,10.0.15.50,10.0.15.150,24h

В данном случае мы будем выдавать пользователям ip адреса в диапазоне от 10.0.15.50 до 150. Сохраняем конфиг, добавляем программу в автозагрузку и запускаем.

# insserv dnsmasq
# /etc/init.d/dnsmasq start

Теперь можно запускать компьютер пользователя локальной сети, получать сетевые настройки по dhcp и проверять работу интернет шлюза.

Посмотреть выданные leases можно в файле /var/lib/misc/dnsmasq.leases. На этом настройка интернет шлюза на debian 8 закончена. Все что нужно для обеспечения доступа в интернет из локальной сети сделано. Получился программный роутер с широкими возможностями по наращиванию функционала.

Просмотр загрузки сети с помощью iftop

Теперь представим ситуацию, что кто-то забил весь интернет канал и вам надо быстро выяснить, кто это сделал. По-умолчанию, никаких подручных и удобных средств на шлюзе для этого нету. Установим одно из таких средств — программу iftop. Это простая консольная утилита, которая дает возможность оперативно посмотреть статистику загруженности сетевого интерфейса в реальном времени.

Устанавливаем iftop на debian:

# apt-get install -y iftop

Для просмотра активности сетевого интерфейса, запускаем утилиту, указывая необходимый ключ:

# iftop -i eth2

Чтобы увидеть порты, по которым идет трафик, добавляем ключ -P:

# iftop -i eth2 -P

На основе этой картинки уже можно сделать определенные выводы по использованию интернет канала. Обращаю внимание, что я смотрю загрузку локального интерфейса eth2. Если смотреть на eth0, то мы увидим только исходящие соединения сервера.

Заключение

Вот так легко и быстро можно настроить роутер, маршрутизатор или шлюз в интернет. Названия разные, а суть одна. В данном случае я использовал операционную систему Debian, но схожий функционал легко организовать на Freebsd или CentOS. Для решения текущей задачи разница в работе не будет заметна. Каждый выбирает то, что больше нравится и к чему привык.

Пройдемся быстренько по этапам того, что сделали:

  1. Подготовили сервер Debian к настройке шлюза.
  2. Настроили маршрутизацию, iptables, нат. Проверили, что весь функционал восстанавливается после перезагрузки.
  3. Установили и настроили простой dhcp сервер и кэширующий dns сервер — dnsmasq. С его помощью автоматизировали поучение сетевых настроек пользователями.
  4. Установили простое средство мониторинга сетевой активности в консоли в режиме реального времени с помощью утилиты iftop.

На этом мы закончили настройку. Как продолжение развития темы интернет шлюза можно заняться настройкой прокси сервера для управления доступам к ресурсам интернета, или сервера openvpn для подключения филиалов или удаленных сотрудников. Для примера привел ссылки на другие дистрибутивы. Со временем планирую описать реализацию этого функционала на debian. Принципиальных отличий нет, только нюансы разных дистрибутивов.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Онлайн курс «DevOps практики и инструменты»

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Дополнительные материалы по Debian








Рекомендую полезные материалы по Debian:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка сети
  • Обновление 8 до 9
  • Обновление 7 до 8
  • Включение логов cron

Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика.

Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования.

Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.

Настройка программных комплексов
 

  • Proxmox
  • Шлюз в интернет
  • Установка Asterisk
  • Asterisk+Freepbx
  • PostgreSQL для 1С
  • Настройка pptp

Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке.

Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk.

Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива.

Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети.

Разное
  • Бэкап с помощью rsync
  • Тюнинг postgresl для 1C

Debian, nat. Раздаём интернет с debian. Шлюз на debian — часть 2. « Debian.pro

TLDR — для debian 10+ не актуально.

Мы уже настроили в своей сети dhcp сервер.
Теперь самое время раздать интернет компьютерам в нашей сети. Условимся, что eth0 у нас — внешний интерфейс, через который наш шлюз получает инет. eth2 — интерфейс, которым шлюз смотрит в нашу сеть.
Если ваш сервер подключается к инету через pppoe — то eth0 следует заменить на ppp0. Ну и так далее.

Первым делом настроим систему так, чтобы она «умела» работать шлюзом. Для этого в файле /etc/sysctl.conf заменим строку net.ipv4.ip_forward=0 на net.ipv4.ip_forward=1
Если строчка закомментирована — то раскомментируйте её.

Ну и применим новый конфиг, чтобы не перезагружаться:
[email protected]:~# sysctl -p

Как вариант — выполнить команду (будет работать только без перезагрузки):
[email protected]:~# sysctl -w net.ipv4.ip_forward="1"

Теперь расскажем нашему серверу, куда собственно направлять трафик, который прилетает на наш сервер, как на шлюз (вместо eth0 укажите тот интерфейс, которым шлюз смотрит в инет):
[email protected]:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Ну и теперь нам нужно поправить файл /etc/rc.local, для того, чтобы сервер сразу после загрузки «узнавал», куда ему бедному пинать пакетики.
Нужно привести файл к примерно следующему виду (только подумайте повнимательнее):
# если используется pppoe (в другом случае эта строчка не нужна):
pon your-ppp-name
# включаем nat:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# дефолтная строчка, её удалять нельзя:
exit 0

Напоминаю, что компы-клиенты должны находиться в той же подсети, что и шлюз (если вы настраивали dhcp по первому мануалу — вам даже думать об этом ненадо). IP адрес нашего сервера-шлюза должен быть указан в качестве шлюза в настройках сетевого подключения у клиентов.

Диагностика проблем. Проблемы тут могут быть по двум причинам. Первая — вы не настроили sysctl. Возвращаемся в начало мануала и перечитываем. Вторая — iptables. Чтобы попробовать решить эту проблему — добавьте iptables -F в файл /etc/rc.local первой строчкой.
Если ничего не получается — пишите мне, помогу.

Debian в качестве интернет-шлюза для LAN (NAT)

NAT (от англ. Network Address Translation — «преобразование сетевых адресов») — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Также имеет названия IP Masquerading, Network Masquerading и Native Address Translation.

Функционирование

Преобразование адресов методом NAT может производиться почти любым маршрутизирующим устройством — маршрутизатором, сервером доступа, межсетевым экраном. Наиболее популярным является SNAT, суть механизма которого состоит в замене адреса источника (англ. source) при прохождении пакета в одну сторону и обратной замене адреса назначения (англ. destination) в ответном пакете. Наряду с адресами источник/назначение могут также заменяться номера портов источника и назначения.

Помимо source NAT (предоставления пользователям локальной сети с внутренними адресами доступа к сети Интернет) часто применяется также destination NAT, когда обращения извне транслируются межсетевым экраном на сервер в локальной сети, имеющий внутренний адрес и потому недоступный извне сети непосредственно (без NAT).

Существует 3 базовых концепции трансляции адресов: статическая (Static Network Address Translation), динамическая (Dynamic Address Translation), маскарадная (NAPT, PAT).

Механизм NAT определён в RFC 1631, RFC 3022.

Преимущества

NAT выполняет три важных функции.

1. Позволяет сэкономить IP-адреса, транслируя несколько внутренних IP-адресов в один внешний публичный IP-адрес (или в несколько, но меньшим количеством, чем внутренних). По такому принципу построено большинство сетей в мире: на небольшой район домашней сети местного провайдера или на офис выделяется 1 «белый» (то есть внешний) IP-адрес, за которым работают и получают доступ вовне все «серые» (то есть внутренние) IP-адреса.

2. Позволяет предотвратить или ограничить обращение снаружи ко внутренним хостам, оставляя возможность обращения изнутри наружу. При инициации соединения изнутри сети создаётся трансляция. Ответные пакеты, поступающие снаружи, соответствуют созданной трансляции и поэтому пропускаются. Если для пакетов, поступающих снаружи, соответствующей трансляции не существует (а она может быть созданной при инициации соединения или статической), они не пропускаются.

3. Позволяет скрыть определённые внутренние сервисы внутренних хостов/серверов. По сути, выполняется та же указанная выше трансляция на определённый порт, но возможно подменить внутренний порт официально зарегистрированной службы (например, 80-й порт TCP (HTTP-сервер) на внешний 54055-й). Тем самым, снаружи, на внешнем IP-адресе после трансляции адресов на сайт (или форум) для осведомлённых посетителей можно будет попасть по адресу http://mysite.org:54055, но на внутреннем сервере, находящимся за NAT, он будет работать на обычном 80-м порту. Повышение безопасности и скрытие «непубличных» ресурсов.

Недостатки

Не все протоколы могут «преодолеть» NAT. Некоторые не в состоянии работать, если на пути между взаимодействующими хостами есть трансляция адресов. Некоторые межсетевые экраны, осуществляющие трансляцию IP-адресов, могут исправить этот недостаток, соответствующим образом заменяя IP-адреса не только в заголовках IP, но и на более высоких уровнях (например, в командах протокола FTP). См. Application-level gateway.

Из-за трансляции адресов «много в один» появляются дополнительные сложности с идентификацией пользователей и необходимость хранить полные логи трансляций.

DoS со стороны узла, осуществляющего NAT — если NAT используется для подключения многих пользователей к одному и тому же сервису, это может вызвать иллюзию DoS-атаки на сервис (множество успешных и неуспешных попыток). Например, избыточное количество пользователей ICQ за NAT приводит к проблеме с подключением к серверу некоторых пользователей из-за превышения допустимой скорости подключений. Частичным решением проблемы является использование пула адресов (группы адресов), для которых осуществляется трансляция.

В некоторых случаях, необходимость в дополнительной настройке при работе с пиринговыми сетями и некоторыми другими программами (Battle.net-игры), в которых необходимо не только инициировать исходящие соединения, но также принимать входящие.

NAT Traversal (прохождение или автонастройка NAT) — это набор возможностей, позволяющих сетевым приложениям определять, что они находятся за устройством, обеспечивающим NAT, узнавать внешний IP-адрес этого устройства и выполнять сопоставление портов для пересылки пакетов из внешнего порта NAT на внутренний порт, используемый приложением; все это выполняется автоматически, пользователю нет необходимости вручную настраивать сопоставления портов или вносить изменения в какие-либо другие параметры. Однако существуют меры предосторожности в доверии к таким приложениям — они получают обширный контроль над устройством, появляются потенциальные уязвимости.

Глава 10. Сетевая инфраструктура

Шлюз — это система, связывающая несколько сетей. Этот термин часто употребляется для обозначения «точки выхода» из локальной сети на единственном пути ко всем внешним IP-адресам. Шлюз подключён к каждой из сетей, которые он соединяет, и функционирует как маршрутизатор, пересылая IP-пакеты между своими интерфейсами.

Когда локальная сеть использует частный диапазон IP-адресов (не видимый за её пределами), шлюз должен выполнить преобразование сетевых адресов, чтобы компьютеры могли взаимодействовать с внешним миром. Такая операция похожа на прокси-сервер, но на сетевом уровне: при исходящей передачи данных — адрес локальной машины заменяется на адрес шлюза (видимый за пределами сети), при ответе из внешнего мира — данные проходят через шлюз и далее направляются по локальному адресу машины. Для этого, шлюз использует диапазон определенных TCP портов, обычно с большими числами (больше 60000). Каждое соединение, идущее от локальной машины во внешний мир, идет через один из этих зарезервированных портов.

Шлюз также может выполнять два вида преобразования сетевых адресов (для краткости — NAT, от «Network Address Translation»). Первый — Destination NAT (DNAT), суть которого в изменении IP адреса назначения (и/или порта TCP или UDP) для (как правило) входящего соединения. Отслеживающий соединение механизм тоже изменяет следующие пакеты в том же соединении для гарантии целостности. Второй вид NAT — это Source NAT (SNAT), для которого преобразование является особенным случаем. SNAT изменяет IP адрес источника (и/или TCP или UDP порта) для (в основном) исходящего соединения. Также как и для DNAT, все пакеты в соединении соответствующим образом контролируются механизмом, отслеживающим соединения. Заметьте, что NAT подходит только для IPv4 и его ограниченного адресного пространства. В IPv6, с огромным количеством адресов, преимущества NAT снижаются, т. к. «внутренние» адреса маршрутизируемы в интернете (что не означает их доступность, т. к. межсетевой экран может фильтровать трафик).

Хватит теории, к практике! Для превращения Debian в шлюз достаточно изменить нужный параметр в ядре Linux через виртуальную файловую систему /proc/:

# echo 1 > /proc/sys/net/ipv4/conf/default/forwarding

Другой вариант, которой будет автоматически устанавливается при загрузке системы: в файле /etc/sysctl.conf установить в строке net.ipv4.conf.default.forwarding значение 1.

Пример 10.1. Файл /etc/sysctl.conf

net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1

Тоже для IPv6: необходимо заменить ipv4 на ipv6 и соответственно использовать net.ipv6.conf.all.forwarding в файле /etc/sysctl.conf.

Для использования преобразования адресов (маскарадинг) IPv4 нужно изменить конфигурацию файервола netfilter.

Debian, dhcp сервер, dhcp server, dhcpd. Шлюз на основе Debian — часть 1. « Debian.pro

Этой статьёй я начинаю цикл статей «Шлюз на основе Debian». Мы настроим dhcp сервер в самой простой конфигурации. dhcp сервер раздаёт сетевые настойки компам в сети, которые используют динамический IP адрес. Впрочем, чего объяснять. Если вы читаете эту статья — то вы уже знаете на кой черт оно надо.

Как обычно, fast way идеология.

Сразу определимся в условиях. eth0 — интерфейс внешний, через который сервер получает инет. eth2 — внутренний сетевой интерфейс.

Соответственно, у нас нет никакой необходимости в том, чтобы dhpcd работал на eth0.

[email protected]:~# aptitude install dhcp3-server

Теперь нам нужно указать, какие сетевые интерфейсы стоит «прослушивать» dhcp-демону. В нашем случае — это eth2. Не указывайте интерфейсы, к которым подключена сеть, в которой есть другой dhcp сервер (а тем более — не ваш).

В файле /etc/default/dhcp3-server напишем следующее:
INTERFACES="eth2"
(По умолчанию там написано INTERFACES="", если dhcp должен прослушивать 2 интерфейса — то следует указать их через пробел — например, INTERFACES="eth2 eth3")

Теперь напишем простейший конфигурационный файл (пример конфига в текстовом виде):


# не забудьте изменить данное значение:
option domain-name "static.example.org dyn.example.org"; вы можеет использовать
# dns серверы для dhcp клиентов:
option domain-name-servers 192.168.0.1, 8.8.8.8, 8.8.4.4;
# основной шлюз (сервер, через который они смогут попасть в инет или другую сеть) для dhcp клиентов
option routers 192.168.0.1;
# broadcast адрес - не меняйте, если не знаете что это такое.
option broadcast-address 192.168.0.255;
# ntp серверы для dhcp клиентов.
option ntp-servers 192.168.0.1;
default-lease-time 86400;
max-lease-time 86400;
authoritative;
log-facility local7;

# указываем подсеть, из которой будут выдаваться IP адреса. Если не знаете на что менять — не меняйте.
subnet 192.168.0.0 netmask 255.255.255.0 {
# указываем диапазон ip адресов
range 192.168.0.100 192.168.0.200;
}

И перезагружаем dhcp server:
[email protected]:~# /etc/init.d/dhcpd restart
или
[email protected]:~# /etc/init.d/dhcp3-server
или
[email protected]:~# /etc/init.d/dhcp-server

В общем, tab вам в помощь.

В общем то всё. Теперь сетевые устройства в вашей сети, настроенные на динамический ip адрес будут его получать.

Строим маршрутизатор в SOCKS на ноутбуке с Debian 10 / Хабр

Целый год (или два) я откладывал публикацию данной статьи по главной причине — мной уже были опубликованы две статьи, в которых я описал процесс создания маршрутизатора в SOCKS из самого обычного ноутбука с Debian.

Однако, с тех пор стабильная версия Debian обновилась до Buster, мне в личку обратилось достаточное количество людей с просьбой помочь в настройке, а значит, мои предыдущие статьи не являются исчерпывающими. Что ж, я и сам догадывался, что методы, изложеннные в них, не до конца раскрывают все тонкости настройки Linux для маршрутизации в SOСKS. К тому же они написаны для Debian Stretch, а после обновления до Buster, в системе инициализации systemd, я заметил небольшие изменения во взаимодействии служб. Да и в самих статьях я не использовал systemd-networkd, хотя она лучше всего подходит для сложных сетевых конфигураций.


Кроме вышеуказаных изменений, в мою конфигурацию добавились такие службы как hostapd — служба для виртуализации точки доступа, ntp для синхронизации времени клиентов локальной сети, dnscrypt-proxy для шифрования соединений по протоколу DNS и отключения рекламы на клиентах локальной сети, а также, как я упомянал ранее, systemd-networkd для конфигруации сетевых интерфейсов.

Вот простейшая блок-схема, внутреннего устройства такого маршрутизатора.

Итак, я напомню, какие цели преследует цикл данных статей:

  1. Маршрутизировать в SOCKS все соединения ОС, а также соединения всех устройств, состоящих в одной сети с ноутбуком.
  2. Ноутбук в моем случае должен оставаться полностью мобильным. То есть, давать возможность использовать окружение рабочего стола и не быть привязанным к физическому местуположению.
  3. Последний пункт подразумевает подключение и маршрутизацию только через встроенный беспроводной интерфейс.
  4. Ну, и конечно, создание исчерпывающего руководства, а также разбор соответсвующих технологий в меру моих скромных познаний.

Что будет рассмотрено в данной статье:

  1. git — скачаем репоизитории проектов tun2socks, необходимого для маршрутизации трафика TCP в SOCKS, и create_ap — скрипта для автоматизации настройки виртуальной точки доступа с помощью hostapd.
  2. tun2socks — построим и установим в систему службу systemd.
  3. systemd-networkd — настроим беспроводной и виртуальные интерфейсы, таблицы статической маршрутизации и перенаправление пакетов.
  4. create_ap — установим службу systemd в систему, настроим и запустим виртуальную точку доступа.

Необязательные шаги:

  • ntp — установим и настроим сервер для сихронизации времени на клиентах виртуальной точки доступа.
  • dnscrypt-proxy — зашифруем запросы DNS, маршрутизируем их в SOCKS и отключим рекламные домены для локальной сети.

Зачем всё это?

Это один из способов организации защиты TCP-соединений локальной сети. Главное преимущество — все соединения идут в SOCKS, если для них не построен статический маршрут через оригинальный шлюз. Это значит, что не нужно прописывать настройки SOCKS-сервера ни отдельным программам, ни клиентам в локальной сети — они все идут в SOCKS по-умолчанию, так как он является шлюзом по-умолчанию, пока мы не укажем обратного.

По сути мы добавляем второй шифрующий роутер в качестве ноутбука перед оригинальным роутером и используем интернет соединение оригинального роутера для уже зашифрованных SOCKS-запросов ноутбука, который, в свою очередь, маршрутизирует и шифрует запросы клиентов локальной сети.

С точки зрения провайдера мы постоянно подключены к одному серверу с зашифрованным трафиком.

Соответственно, все устройства подключаются к виртуальной точке доступа ноутбука.

Прежде, чем вы начнете

Почти все конфиги доступны в репозитории.

Установите в систему tun2socks

Пока на вашей машине есть интернет, скачайте все необходимые инструменты.

apt update
apt install git make cmake

Скачайте пакет badvpn

git clone https://github.com/ambrop72/badvpn

В вашей системе появится папка badvpn. Создайте отдельную папку для сборки

mkdir badvpn-build

Перейдите в нее

cd badvpn-build

Соберите tun2socks

cmake ../badvpn -DBUILD_NOTHING_BY_DEFAULT=1 -DBUILD_TUN2SOCKS=1

Установите в систему

make install

  • Параметр -DBUILD_NOTHING_BY_DEFAULT=1 отключает сборку всех компонентов репозитория badvpn.
  • DBUILD_TUN2SOCKS=1 включает в сборку компонент tun2socks.
  • make install — установит бинарник tun2socks в вашу систему по адресу /usr/local/bin/badvpn-tun2socks.

Установите службу tun2socks в systemd

Создайте файл /etc/systemd/system/tun2socks.service со следующим содержимым:

[Unit]
Description=SOCKS TCP Relay

[Service]
ExecStart=/usr/local/bin/badvpn-tun2socks --tundev tun2socks --netif-ipaddr 172.16.1.1 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:9050

[Install]
WantedBy=multi-user.target

  • —tundev — принимает имя виртуального интерфейса, который мы инициализируем с помощью systemd-networkd.
  • —netif-ipaddr — сетевой адрес «маршрутизатора» tun2socks, к которому подключается виртуальный интерфейс. Лучше сделать отдельной зарезервированной подсетью.
  • —socks-server-addr — принимает сокет (адрес: порт сервера SOCKS).

Если ваш SOCKS сервер требует аутентификации, вы можете указать параметры —username и —password.

Далее зарегистрируйте службу

systemctl daemon-reload

И включите

systemctl enable tun2socks

Прежде чем запускать службу, обеспечим её виртуальным сетевым интерфейсом.

Переходим на systemd-networkd

Включаем systemd-networkd:

systemctl enable systemd-networkd

Отключаем текущие сетевые службы.

systemctl disable networking NetworkManager NetworkManager-wait-online

  • NetworkManager-wait-online — это служба, которая ждет наличие работающего сетевого подключения прежде, чем systemd продолжит запуск других служб, зависящих от наличия сети. Мы отключаем её, так как перейдем на аналог systemd-networkd.

Давайте сразу включим его:

systemctl enable systemd-networkd-wait-online

Настройте беспроводной сетевой интерфейс

Создайте файл конфигурации systemd-networkd для беспроводного сетевого интерфейса /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPMasquerade=yes

  • Name — это имя вашего беспроводного интерфейса. Идентифицируйте его командой ip a.
  • IPMasquerade — директива, которая включает маскарадинг и перенаправление пакетов на сетевом интерфейсе.
  • Address отвечает за присвоение IP-адреса беспроводному интерфейсу. Мы указываем его статически потому, что при эквивалентной директиве DHCP=yes, systemd-networkd создаёт в системе шлюз по-умолчанию. Тогда весь трафик пойдет через оригинальный шлюз, а не через будущий виртуальный интерфейс в отличной подсети. Вы можете проверить текущий шлюз по-умолчанию командой
    ip r

Создайте статический маршрут для удалённого сервера SOCKS

Если ваш SOCKS сервер не локальный, а удалённый, то вам необходимо создать для него статический маршрут. Для этого добавьте секцию Route в конец созданного вами файла конфигурации беспроводного интерфейса со следующим содержанием:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0

  • Gateway — это шлюз по-умолчанию или адрес вашей оригинальной точки доступа.
  • Destination — адрес сервера SOCKS.

Настройте wpa_supplicant для systemd-networkd

systemd-networkd использует wpa_supplicant для подключения к защищенной точке доступа. При попытке «поднять» беспроводной интерфейс systemd-networkd запускает службу [email protected]имя, где имя — это имя беспроводного интерфейса. Если вы не использовали systemd-networkd до этого момента, то, наверняка, эта служба в вашей системе отсутствует.

Поэтому создайте ее командой:

systemctl enable [email protected]

Я использовал wlp6s0 в качестве имени своего беспроводного интерфейса. У вас это имя может отличаться. Вы можете узнать его командой

ip l

.

Теперь созданная служба [email protected] будет запускаться при «поднятии» беспроводного интерфейса, однако она, в свою очередь, будет искать настройки SSID и пароля точки доступа в файле /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Поэтому необходимо создать его с помощью утилиты wpa_passphrase.

Для этого выполните команду:

wpa_passphrase SSID password>/etc/wpa_supplicant/wpa_supplicant-wlp6s0.conf

где SSID — это имя вашей точки доступа, password — пароль, а wlp6s0 — имя вашего беспроводного интерфейса.

Инициализируйте виртуальный интерфейс для tun2socks

Создайте файл для инициализации нового вирутального интерфейса в системе /etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun

  • Name — это имя, которое systemd-networkd назначит будущему виртуальному интерфейсу при его инициализации.
  • Kind — это тип виртуального интерфейса. Исходя из названия службы tun2socks, вы можете догататься, что она использует интерфейс типа tun.
  • netdev — это расширение файлов, которые systemd-networkd использует для инициализации виртуальных сетевых интерфейсов. Адрес и другие сетевые настройки для этих интерфейсов указываются в .network файлах.

Создайте такой файл /etc/systemd/network/25-tun2socks.network со следующим содержимым:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1

  • Name — имя виртуального интерфейса, которое вы указали в netdev файле.
  • Address — IP адрес, который будет назначен вирутальному интерфейсу. Должен быть в одной сети с адресом, который вы указали в службе tun2socks
  • Gateway — IP адрес «маршрутизатора» tun2socks, который вы указали при создании службы systemd.

Таким образом, интерфейс tun2socks имеет адрес 172.16.1.2, а служба tun2socks172.16.1.1, то есть является шлюзом для всех соединений с виртуального интерфейса.

Настройте виртуальную точку доступа

Установите зависимости:

apt install util-linux procps hostapd iw haveged

Скачайте репозиторий сreate_ap на свою машину:

git clone https://github.com/oblique/create_ap

Перейдите в папку репозитория на вашей машине:

cd create_ap

Установите в систему:

make install

В вашей системе появится конфиг /etc/create_ap.conf. Вот основные опции для правки:

  • GATEWAY=10.0.0.1 — лучше сделать отдельной зарезервированной подсетью.
  • NO_DNS=1 — выключите, так как этим параметром будет управлять виртуальный интерфейс systemd-networkd.
  • NO_DNSMASQ=1 — выключите по той же причине.
  • WIFI_IFACE=wlp6s0 — беспроводной интерфейс ноутбука.
  • INTERNET_IFACE=tun2socks> — виртуальный интерфейс, созданный для tun2socks.
  • SSID=hostapd — имя виртуальной точки доступа.
  • PASSPHRASE=12345678 — пароль.

Не забудьте включить службу:

systemctl enable create_ap

Включите DHCP сервер в systemd-networkd

Служба create_ap инициализирует в системе виртуальный интерфейс ap0. По идее, на этом интерфейсе «висит» dnsmasq, но зачем устанавливать лишние службы, если systemd-networkd содержит встроенный DHCP-сервер?

Чтобы включить его, определим сетевые настройки для виртуальной точки. Для этого создайте файл /etc/systemd/network/25-ap0.network со следующим содержимым:

[Match]
Name=ap0

[Network]
Address=10.0.0.1/24
DHCPServer=yes

[DHCPServer]
EmitDNS=yes
DNS=10.0.0.1
EmitNTP=yes
NTP=10.0.0.1

После того, как служба сreate_ap инициализирует виртуальный интерфейс ap0, systemd-networkd автоматически присвоит ему IP-адрес и включит DHCP-сервер.

Строки EmitDNS=yes и DNS=10.0.0.1 передают настройки DNS сервера устройствам, подключенным к точке доступа.

Если вы не планируете использовать локальный DNS сервер, — в моём случае это dnscrypt-proxy — можете установить DNS=10.0.0.1 в DNS=192.168.1.1, где 192.168.1.1 — адрес вашего оригинального шлюза. Тогда запросы DNS вашего хоста и локальной сети пойдут в незашифрованном виде через серверы провайдера.

EmitNTP=yes и NTP=192.168.1.1 передают настройки NTP.

То же самое касается строки NTP=10.0.0.1.

Установите и настройте NTP сервер

Установите в систему:

apt install ntp

Правьте конфиг /etc/ntp.conf. Закомментируйте адреса стандартных пулов:

#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst

Добавьте адреса публичных серверов, например, Google Public NTP:

server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust

Предоставьте доступ к серверу клиентам из вашей сети:

restrict 10.0.0.0 mask 255.255.255.0

Включите трансляцию в вашу сеть:

broadcast 10.0.0.255

Наконец, добавьте адреса этих серверов в таблицу статической маршрутизации. Для этого откройте файл конфигурации беспроводного интерфейса /etc/systemd/network/25-wlp6s0.network и добавьте в конец секции Route.

[Route]
Gateway=192.168.1.1
Destination=216.239.35.0

[Route]
Gateway=192.168.1.1
Destination=216.239.35.4

[Route]
Gateway=192.168.1.1
Destination=216.239.35.8

[Route]
Gateway=192.168.1.1
Destination=216.239.35.12

Вы можете узнать адреса ваших серверов NTP, используя утилиту host следующим образом:

host time1.google.com

Установите dnscrypt-proxy, уберите рекламу и скройте DNS трафик от провайдера

apt install dnscrypt-proxy

Чтобы обслуживать DNS запросы хоста и локальной сети, правьте сокет /lib/systemd/system/dnscrypt-proxy.socket. Измените следующие строки:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Перезапустите systemd:

systemctl daemon-reload

Правьте конфиг /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Чтобы направить соединения dnscrypt-proxy через tun2socks, добавьте ниже:

force_tcp = true

Правьте конфиг /etc/resolv.conf, который сообщает DNS сервер хосту.

nameserver 127.0.0.1
nameserver 192.168.1.1

Первая строчка включает использование dnscrypt-proxy, вторая — использует оригинальный шлюз, в случае, когда сервер dnscrypt-proxy недоступен.

Готово!

Перезагрузитесь или остановите действующие сетевые службы:

systemctl stop networking NetworkManager NetworkManager-wait-online

И перезапустите все необходимые:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

После перезагрузки или перезапуска у вас появится вторая точка доступа, которая маршрутизирует хост и устройства локальной сети в SOCKS.

Примерно так выглядит вывод

ip a

обычного ноутбука:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: tun2socks: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 500
    link/none 
    inet 172.16.1.2/24 brd 172.16.1.255 scope global tun2socks
       valid_lft forever preferred_lft forever
    inet6 fe80::122b:260:6590:1b0e/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
3: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether e8:11:32:0e:01:50 brd ff:ff:ff:ff:ff:ff
4: wlp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 4c:ed:de:cb:cf:85 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global wlp6s0
       valid_lft forever preferred_lft forever
    inet6 fe80::4eed:deff:fecb:cf85/64 scope link 
       valid_lft forever preferred_lft forever
5: ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 4c:ed:de:cb:cf:86 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 brd 10.0.0.255 scope global ap0
       valid_lft forever preferred_lft forever
    inet6 fe80::4eed:deff:fecb:cf86/64 scope link 
       valid_lft forever preferred_lft forever

В итоге

  1. Провайдер видит только зашифрованное соединение к вашему серверу SOCKS, а значит, ничего не видит.
  2. И всё же он видит ваши NTP запросы, чтобы предотвратить это, удалите статические маршруты для NTP серверов. Однако, не факт, что ваш сервер SOCKS разрешает протокол NTP.

Костыль, замеченный на Debain 10

Если попытаться перезапустить сетевую службу из консоли, то она упадет с ошибкой. Связанно это с тем, что её часть в виде виртуального интерфейса привязана к службе tun2socks, а значит используется. Чтобы перезапустить сетевую службу, сначала нужно остановить службу tun2socks. Но, я думаю, если вы дочитали до конца, для вас это точно не проблема!

Ссылки

  1. Статическая маршрутизация в Linux — IBM
  2. systemd-networkd.service — Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: This script creates a NATed or Bridged WiFi Access Point.
  5. dnscrypt-proxy 2 — A flexible DNS proxy, with support for encrypted DNS protocols.

Как найти IP шлюза по умолчанию в Linux

Этот быстрый совет по Linux показывает вам различные методы для определения IP-адреса шлюза вашего маршрутизатора в командной строке Linux.

В предыдущей статье мы рассказывали вам о поиске IP-адреса в командной строке Linux. В этом кратком совете мы покажем вам, как найти IP-адрес шлюза по умолчанию в командной строке Linux.

Шлюз работает как вход или дверь между двумя сетями. Маршрутизатор является примером шлюза. Весь ваш трафик идет к маршрутизатору, а затем к остальной части Интернета.

Иногда вам нужно знать IP-адрес вашего маршрутизатора. IP-адрес шлюза – это IP-адрес вашего маршрутизатора при обычной настройке.

Мы собираемся использовать команду IP, чтобы показать IP шлюза в Linux.

Откройте терминал и используйте следующую команду:

ip route

 

Вы должны увидеть результат вроде этого:

default via 192.168.0.1 dev wlp58s0 proto dhcp metric 600
169.254.0.0/16 dev wlp58s0 scope link metric 1000
192.168.0.0/24 dev wlp58s0 proto kernel scope link src 192.168.0.106 metric 600

 

Сосредоточьтесь на строке, которая начинается с default. Это даст IP-адрес шлюза по умолчанию.

В качестве альтернативы и удобства вы можете использовать вышеуказанную команду в сочетании с командой grep:

ip route | grep default

 

Это просто даст IP-адрес шлюза по умолчанию в выходных данных:

default via 192.168.0.1 dev wlp1s0 proto dhcp metric 600

 

И, как вы можете видеть, 192.168.0.1 является IP-адресом шлюза по умолчанию в нашем случае.

 

Другие способы найти IP-адрес шлюза в Linux

Команда IP в Linux обеспечивает большинство ваших основных сетевых потребностей. Но, как вы уже заметили, в Linux существует несколько способов сделать определенные вещи.

Чтобы узнать IP шлюза, вы также можете использовать другие сетевые инструменты командной строки. Позвольте нам показать их вам.

 

Найти шлюз в Linux с помощью команды route

Вы можете использовать опцию -n с командой route для отображения таблицы маршрутизации с IP-адресами.

route -n

 

Пример вывода должен быть таким:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlp58s0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp58s0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp58s0

 

Обратите внимание на флаги U и G? U означает, что маршрут «вверх», а G означает, что это шлюз.

 

Показать шлюз в Linux с помощью команды netstat

Чтобы отобразить информацию о шлюзе, вы можете использовать команду netstat и отобразить таблицу маршрутизации, которая также составляет шлюз.

netstat -r -n

 

Вывод должен быть идентичен тому, что вы видели с командой route:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 wlp58s0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlp58s0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 wlp58s0

 

Вы можете идентифицировать шлюз с флагом G.

 

Заключение

Мы надеемся, что этот быстрый совет по Linux помог вам найти IP-адрес шлюза по умолчанию в командной строке Linux. Добавьте этот веб-сайт в ваш ридер для таких регулярных советов и руководств по Linux.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Настройка сети в Debian — Справка Debian

Список разделов:

Сервисы для работы с сетями и IP-адресами. Эти сервисы действительно полезны.
Объединение каналов (Ethernet-соединение) в Debian.
Как изменить mac адрес сетевой карты.

Основы IP-сетей.

Система под Debian может иметь несколько сетевых интерфейсов с различными АйПи адресами. Интерфейсы могут быть различных типов, включая следующие:

 Петля: lo
Ethernet: eth0, eth2
Wi-Fi: wlan0, wlan1, wifi0,
Token Ring: tr0, tr1
PPP: ppp0, ppp1 

Существует диапазон диапазона прочих сетевых устройств, таких как SLIP, PLIP (последовательные и параллельные линии IP), шейперы (формирователи) для контроля трафика на интерфейсах, Frame Relay, AX.25, X.25, ARCnet и LocalTalk.

сетевой интерфейс подключенный к интернету (или к любой сети основанной на АйПи) имеет уникальный 32-х битный АйПи адрес. АйПи адрес может быть поделен на часть, которая идентифицирует сеть и часть определяющую адрес хоста. Если вы берете АйПи адрес и устанавливаете биты отвечающие за адресные сети равными 1, а биты, адресующие хост, равными 0, вы получите так называемую маску (маску сети) сети.

Традиционно АйПи сети сгруппированы в классы по размеру части адреса, отвечающей за сеть.Они могут быть 8, 16 или 24 бита. Эта система не гибкая и тратит много айпи адресов в пустую, современные поэтому IPv4 сети используют части адреса, отвечающие за сеть, стандартные длины.

 IP-адресов длина маски сети
Класс A 1.0.0.0 - 126.255.255.255 255.0.0.0 = / 8
Класс B 128.0.0.0 - 191.255.255.255 255.255.0.0 = / 16
Класс C 192.0.0.0 - 223.255.255.255 255.255.255.0 = / 24
  

АйПи адреса не входящие в эти диапазоны используются для специальных нужд.

В каждом классе сетей существуют диапазоны адресов зарезервированные для использования в локальных сетях (LAN). Эти адреса гарантированно не будут конфликтовать с любыми адресами присущими интернету. (Справедливо и то, что, если один из адресованных к данному хосту хостов не должен подключаться к нему через шлюз, который работает как прокси или даже осуществляет трансляцию сетевых адресов.) таблице ниже.

 длина сетевых адресов сколько
Класс A 10.x.x.x / 8 1
Класс B 172.16.x.x - 172.31.x.x / 16 16
Класс C 192.168.0.x - 192.168.255.x / 24 256 

Первый адрес в АйПи сети это собственно адрес самой сети. Последний адрес — это широковещательный (широковещательный) адресc для сети. Все другие адреса могут быть выданы хостам в сети. Поэтому первый или последний адрес обычно выдается интернет-шлюзу данной сети.

Таблица маршрутизации (таблица маршрутизации) содержит информацию о том, как отправлять АйПи пакеты к их пунктам назначения. Ниже представлена ​​простая таблица маршрутизации для хоста под Дебиан в локальной сети с адресом 192.168.50.x / 24. Хост 192.168.50.1 (также в локальной сети) является маршрутизатором для корпоративной сети 172.20.x.x / 16 и хост 192.168.50.254 (тоже в локальной сети) является маршрутизатором всей сети для доступа в Интернет.

 # route 

Таблица IP-маршрутизации ядра

Назначение Шлюз Генмаск Флаги Метрическая система Ref Использовать Iface
127.0,0.0 * 255.0.0.0 U 0 0 2 до
192.168.50.0 * 255.255.255.0 U 0 0 137 eth0
172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0
по умолчанию 192.168.50.254 0,0.0.0 UG 1 0 36 eth0

Первая строка после заголовка говорит, что трафик предназначенный для сети 127.x.x.x будет перенаправлен через адрес обратной связи (кольцевой ответ). Вторая строка говорит, что трафик для хостов в локальной сети будет перенаправлен через интерфейс eth0. Третья строка сообщает, что трафик предназначен для корпоративной сети будет направлен на шлюз 192.168.50.1 также через eth0. Четвертая строка сообщает, что трафик направленный в интернет будет направлен на шлюз 192.168.50.254 также через eth0.

АйПи адреса в таблице могут также появиться как имена, полученные просмотренными в / etc / networks или с использованием резолвера из библиотеки языка C.

В дополнение к маршрутизации, ядро ​​может трансляцию сетевых адресов, резать трафик и фильтровать его.

Эти статьи могут быть найдены здесь.

Установка имени хоста.

Задание имени хоста во время установки Дебиан может оказаться преждевременным. Вы можете узнать или установить имя хоста с помощью команды hostname.

Вы можете увидеть свое текущее имя хоста с помощью:

 $ имя хоста 

Например, чтобы установить имя хоста напрямую вам нужно зайти под суперпользователем и выполнить:

 # hostname newname 

Когда ваша система загружается имя хоста будет автоматически прочитано из файла / etc / hostname.Поэтому, если вы хотите установить имя хоста на постоянку, то измените этот файл.

Установка DNS.

Когда дело доходит до установки DNS, Дебиант ничем не отличается от других дистрибутивов. Вы можете добавить имя хоста и его АйПи адрес в файле / etc / hosts для статических запросов.

заставить вашу машину отправить запрос соответствующему серверу, вы просто должны добавить свой адрес в файл /etc/resolv.conf.

Например, машина с адресом 192.168.1.1, которая должна отправлять запросы к DNS серверу, должна иметь файл resolv.conf следующего вида:

сервер имен 192.168.3.2

Установка АйПи адреса

АйПи адреса, связанные с любыми сетевыми

.

Настройка шлюза на Debian

В данной статье я расскажу о настройке шлюза на Debian для раздачи интернета в небольшой локальной сети. Для получения доступа к интернету, на сервере используется подключение OpenVPN. Затем, используя NAT, сервер отдает интернет для других компьютеров в локальной сети.

Настройка сетевого интерфейса

Для начала настроим сетевой интерфейс eth0 :

 авто eth0
iface eth0 inet статический
адрес 10.0.1.2
маска сети 255.255.255.0
post-up route add -net 10.0.2.0 маска сети 255.255.255.0 eth0
post-up route add -net 10.0.3.0 маска сети 255.255.255.0 eth0 

При необходимости прописываем статические маршруты для локальной сети.

В содержимое файла:

 # nano resolv.conf 

Необходимо добавить адреса DNS-серверов:

 сервер имен 8.8.8.8
сервер имен 8.8.4.4 
Настройка подключения OpenVPN

Выполним установку и настройку клиента OpenVPN.

 # apt-get install openvpn 

Переходим в каталог ниже, копируем в него сертификаты и ключи:

 # компакт-диск / etc / openvpn 

Создаем файл с настройками клент.conf , в моем случае я использовал следующие параметры:

 клиент
Dev Tun
proto tcp
пульт 90.90.90.90 1194
nobind
постоянный ключ
настойчивый туннель
ca ca.crt
сертификат client1.crt
ключ client1.key
авторизация SHA512
tls-auth ta.key 1
шифр BF-CBC
comp-lzo адаптивный
статус /var/log/openvpn-status.log
журнал /var/log/openvpn.log
глагол 3
немой 20
маршрут 0.0.0.0 0.0.0.0 

Несмотря на то, что на сервере прописан параметр:

 push "redirect-gateway def1" 

После подключения к серверу OpenVPN, никаких изменений в таблице маршрутизации не происходило.Для того, чтобы после подключения клиента OpenVPN в Debian изменялся маршрут по умолчанию, необходимо добавить в clent.conf следующий параметр:

 маршрут 0.0.0.0 0.0.0.0 

После того, как в системе подымется интерфейс tun0 , можно перейти к дальнейшей настройке.

Настройка NAT

Включаем на сервере поддержку IP forwarding, для этого открытия файл:

 # нано /etc/sysctl.conf 

И раскомментируйте в нем следующую строку:

 # нетто.ipv4.ip_forward = 1 

Чтобы изменить вступили в силу, необходимо загрузим переменные ядра:

 # sysctl -p 

Далее настраиваем NAT в iptables. По очереди в консоли выполните следующие команды:

 iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.0.1.0/24 -j ACCEPT # Разрешить форвардинг для всей подсети
iptables -A FORWARD -m mac --mac-source 00: 00: 00: 00: 00: 00 -j ACCEPT # Или ограничить по MAC
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 

Сохраняем правила в файле:

 # iptables-save> / etc / iptables.conf 

Чтобы правила автоматически применялись при загрузке Debian, необходимо их прописать в rc.local :

 # nano /etc/rc.local 

Добавьте в него команду ниже:

 iptables-restore 

Теперь, если прописать адрес 10.0.1.2 в шлюза, на компьютере должен появиться интернет.

Настройка правил iptables

После того, как мы настроили все основные параметры, добавим в iptables правила безопасности сервера:

 iptables -A INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT
iptables -I ВВОД 1 -i lo -j ПРИНЯТЬ

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 6 -j ACCEPT
iptables -I INPUT -m mac --mac-source 3E: D7: 88: A6: 66: 8E -j ACCEPT # Открыть все порты
iptables -I INPUT -p tcp --dport 22 -m mac --mac-source 48: 5B: 39: AE: 6D: 7D -j ACCEPT # Открыть порт SSH

iptables -P ПАДЕНИЕ ВВОДА
iptables -P FORWARD DROP
iptables -P ПРИНЯТЬ ВЫВОД 

Сохраняем правила в файле:

 # iptables-save> / etc / iptables.conf 

.

Debian, dhcp сервер, dhcp сервер, dhcpd. Шлюз на основе Debian - часть 1. «Debian.pro

Этой статьёй я начинаю цикл статей« Шлюз на основе Debian ». Мы настроим dhcp сервер в самой простой конфигурации. dhcp сервер раздаёт сетевые настойки компам в сети, которые используют динамический IP-адрес. Впрочем, чего объяснять. Если вы читаете эту статью - то вы уже знаете на кой черт оно надо.

Как обычно, fast way идеология.

Сразу определимся в условиях. eth0 - интерфейс внешний, через который сервер получает инет.eth2 - внутренний сетевой интерфейс.

Соответственно, у нас нет никакой необходимости в том, чтобы dhpcd работал на eth0.

root @ debian-gateway: ~ # aptitude install dhcp3-server

Теперь нам нужно указать, какие сетевые интерфейсы стоит «прослушивать» dhcp-демону. В нашем случае - это eth2. Не указывайте интерфейсы, к которой подключена сеть, в которой есть другой сервер dhcp (а тем более - не ваш).

В файле / etc / default / dhcp3-server напишем следующее:
INTERFACES = "eth2"
(По умолчанию там написано INTERFACES = "" , если dhcp должен прослушивать 2 - то следует следовать указать их через пробел - например, INTERFACES = "eth2 eth3" )

Теперь напишем простейший конфигурационный файл (пример конфига в текстовом виде):


# не указать данное значение:
option domain-name "static.example.org dyn.example.org "; вы можеет использовать
# dns серверы для dhcp клиентов:
option domain-name-servers 192.168.0.1, 8.8.8.8, 8.8.4.4;
# основной шлюз (сервер, через который они можно попасть в инет или другую сеть) для dhcp клиентов
option routers 192.168.0.1;
# broadcast address - не меняйте, если не знаете, что это такое.
option broadcast-address 192.168.0.255;
# ntp серверы для dhcp клиентов.
option ntp-servers 192.168.0.1;
default-lease-time 86400;
max-lease-time 86400;
authoritative;
log-feature local7;

# указываем подсеть, из которой будут выдаваться IP-адреса.Если не знаете что менять - не меняйте. Подсеть
192.168.0.0 netmask 255.255.255.0 {
# задаваемый диапазон IP-адресов
диапазон 192.168.0.100 192.168.0.200;
}

И перезагружаем dhcp server:
root @ debian-gateway: ~ # /etc/init.d/dhcpd restart
или
root @ debian-gateway: ~ # /etc/init.d/dhcp3- сервер
или
root @ debian-gateway: ~ # /etc/init.d/dhcp-server

В общем, вкладка вам в помощь.

В общем то всё. Теперь сетевые устройства в вашей сети, настроенные на динамический ip адрес будут его получать.

.

Как настроить сеть в Debian 10? - Хабр Q&A

Коллеги, доброго всем дня!

Что-то я совсем потерялся в новом Debian, который 10.

Пытаюсь настроить сеть, вроде типовая операция, но вылезла интересная проблема, точнее проблемы.

Вот конфиг интерфейсы:

  источник /etc/network/interfaces.d/*

# Петлевой сетевой интерфейс
авто лоу
iface lo inet loopback

# wan ens32 - внешняя сеть
авто Ens32
iface ens32 inet static
        адрес 10.55.0.242
        маска сети 255.255.255.0
        шлюз 10.55.0.250
        DNS-серверы 10.55.0.253

# lan ens33 - внешняя сеть
авто Ens33
iface ens33 inet static
        адрес 10.55.0.243
        маска сети 255.255.255.0
        # dns-nameservers 10.55.0.100 10.55.0.90

# маршрутизация
up route add -net 10.55.0.0 netmask 255.255.0.0 gw 10.55.0.250 ens33  

в названиях сетевых интерфейсов ошибки нет.
Выполнил ip l:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link / loopback 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
2: ens32: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT группа по умолчанию qlen 1000
link / ether 00: 0c: 29: 54: c1: fc brd ff: ff: ff: ff: ff: ff
3: ens33: mtu 1500 qdisc pfifo_fast состояние Режим UP DEFAULT группа по умолчанию qlen 1000
link / ether 00: 0c: 29: 54: c1: 06 brd ff: ff: ff: ff: ff: ff

Проблемы:
команда systemctl перезапуск сети вызывает проблему:
Работа для нетворкинга.сбой службы, потому что процесс управления завершился с кодом ошибки.
Подробнее см. "Systemctl status network.service" и "journalctl -xe".

Вот что в логах:

  - Начат процесс запуска юнита network.service.
апр 09 14:49:19 s055gateway2 ifup [761]: RTNETLINK отвечает: Файл существует
апр 09 14:49:19 s055gateway2 ifup [761]: ifup: не удалось вызвать ens33
апр 09 14:49:19 s055gateway2 systemd [1]: network.service: основной процесс завершен, код = выход, статус = 1 / FAILURE
- Тема: завершен процесс блока
- Определено: systemd
- Поддержка: https: // www.debian.org/support
-
- Процесс ExecStart =, принадлежащий модулю network.service, завершился.
-
- Код выхода процесса - «завершен», а его статус выхода - 1.
апр 09 14:49:19 s055gateway2 systemd [1]: network.service: Ошибка с результатом «код выхода».
- Тема: Ошибка устройства
- Определено: systemd
- Поддержка: https://www.debian.org/support
-
- Модуль network.service перешел в состояние «сбой» с результатом «код выхода».
апр 09 14:49:19 s055gateway2 systemd [1]: Не удалось запустить Raise сетевых интерфейсов.- Тема: Ошибка юнита network.service
- Определено: systemd
- Поддержка: https://www.debian.org/support
-
- Произошел сбой юнита network.service.  

Самое интересное, что если перезагрузить компьютер, то сеть поднимается и работает нормально.

Путем проб и ошибок пробнил, что одна из ошибок - auto ens33 и auto ens32
убираю эти директивы - перезапускаю сеть systemctl restart network - отрабатывает без проблем, но не поднимаеется интерфейс ens32.

Вручную поднимаю его - ifup ens32 - все начинает работать.

Где-то я сильно не прав!

С дебианом я не имел дело давно (с 6 версии)

Как раньше было все просто!

Подскажите, куда копать в каком направлении.

Всем спасибо!

.

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

Ваш адрес email не будет опубликован.

2022 © Все права защищены. Карта сайта