Шлюз на 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. Для решения текущей задачи разница в работе не будет заметна. Каждый выбирает то, что больше нравится и к чему привык.
Пройдемся быстренько по этапам того, что сделали:
- Подготовили сервер Debian к настройке шлюза.
- Настроили маршрутизацию, iptables, нат. Проверили, что весь функционал восстанавливается после перезагрузки.
- Установили и настроили простой dhcp сервер и кэширующий dns сервер — dnsmasq. С его помощью автоматизировали поучение сетевых настроек пользователями.
- Установили простое средство мониторинга сетевой активности в консоли в режиме реального времени с помощью утилиты iftop.
На этом мы закончили настройку. Как продолжение развития темы интернет шлюза можно заняться настройкой прокси сервера для управления доступам к ресурсам интернета, или сервера openvpn для подключения филиалов или удаленных сотрудников. Для примера привел ссылки на другие дистрибутивы. Со временем планирую описать реализацию этого функционала на debian. Принципиальных отличий нет, только нюансы разных дистрибутивов.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Дополнительные материалы по Debian
Рекомендую полезные материалы по Debian: |
Настройки системы |
---|
Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика. Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования. Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др. |
Настройка программных комплексов |
Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке. Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk. Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива. Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети. |
Разное |
|
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
Если строчка закомментирована — то раскомментируйте её.
Ну и применим новый конфиг, чтобы не перезагружаться:root@debian-gateway:~# sysctl -p
Как вариант — выполнить команду (будет работать только без перезагрузки):root@debian-gateway:~# sysctl -w net.ipv4.ip_forward="1"
Теперь расскажем нашему серверу, куда собственно направлять трафик, который прилетает на наш сервер, как на шлюз (вместо eth0 укажите тот интерфейс, которым шлюз смотрит в инет):root@debian-gateway:~# 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.
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 адрес - не меняйте, если не знаете что это такое.
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:root@debian-gateway:~# /etc/init.d/dhcpd restart
илиroot@debian-gateway:~# /etc/init.d/dhcp3-server
илиroot@debian-gateway:~# /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 для конфигруации сетевых интерфейсов.
Вот простейшая блок-схема, внутреннего устройства такого маршрутизатора.
Итак, я напомню, какие цели преследует цикл данных статей:
- Маршрутизировать в SOCKS все соединения ОС, а также соединения всех устройств, состоящих в одной сети с ноутбуком.
- Ноутбук в моем случае должен оставаться полностью мобильным. То есть, давать возможность использовать окружение рабочего стола и не быть привязанным к физическому местуположению.
- Последний пункт подразумевает подключение и маршрутизацию только через встроенный беспроводной интерфейс.
- Ну, и конечно, создание исчерпывающего руководства, а также разбор соответсвующих технологий в меру моих скромных познаний.
Что будет рассмотрено в данной статье:
- git — скачаем репоизитории проектов tun2socks, необходимого для маршрутизации трафика TCP в SOCKS, и create_ap — скрипта для автоматизации настройки виртуальной точки доступа с помощью hostapd.
- tun2socks — построим и установим в систему службу systemd.
- systemd-networkd — настроим беспроводной и виртуальные интерфейсы, таблицы статической маршрутизации и перенаправление пакетов.
- 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 запускает службу wpa_supplicant@имя, где имя — это имя беспроводного интерфейса. Если вы не использовали systemd-networkd до этого момента, то, наверняка, эта служба в вашей системе отсутствует.
Поэтому создайте ее командой:
systemctl enable wpa_supplicant@wlp6s0
Я использовал wlp6s0 в качестве имени своего беспроводного интерфейса. У вас это имя может отличаться. Вы можете узнать его командой
ip l
.
Теперь созданная служба wpa_supplicant@wlp6s0 будет запускаться при «поднятии» беспроводного интерфейса, однако она, в свою очередь, будет искать настройки 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, а служба tun2socks — 172.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
В итоге
- Провайдер видит только зашифрованное соединение к вашему серверу SOCKS, а значит, ничего не видит.
- И всё же он видит ваши NTP запросы, чтобы предотвратить это, удалите статические маршруты для NTP серверов. Однако, не факт, что ваш сервер SOCKS разрешает протокол NTP.
Костыль, замеченный на Debain 10
Если попытаться перезапустить сетевую службу из консоли, то она упадет с ошибкой. Связанно это с тем, что её часть в виде виртуального интерфейса привязана к службе tun2socks, а значит используется. Чтобы перезапустить сетевую службу, сначала нужно остановить службу tun2socks. Но, я думаю, если вы дочитали до конца, для вас это точно не проблема!
Ссылки
- Статическая маршрутизация в Linux — IBM
- systemd-networkd.service — Freedesktop.org
- Tun2socks · ambrop72/badvpn Wiki · GitHub
- oblique/create_ap: This script creates a NATed or Bridged WiFi Access Point.
- 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 версии)
Как раньше было все просто!
Подскажите, куда копать в каком направлении.
Всем спасибо!
.