Programming, electronics, lifestyle
В статье две части:
В официально предоставляемой ОС запущены следующие службы связанные с настройкой сети:
avahi – mDNS сервис предоставляющий возможность подключиться к RPi по hostname (scivision.dev)
dhcpcd – служба для настройки сетевых интерфейсов (roy.marples.name)
/etc/dhcpcd.conf
;networking – служба для настройки сетевых интерфейсов
ifup
, ifdown
для своей работы;/etc/network/interfaces
.wpa_supplicant – служба-клиент защищённого доступа Wi-Fi и проситель IEEE 802.1X
dhcpcd
видит поднятый интерфейс от wpa_supplicant
, то пытается наладить там адресацию;В 2019 году я делал модуль связи на котором также был развернут Wi-Fi broadcast (WFB). С того момента я полностью отказался от использования dhcpcd
по следующим причинам:
dhcpcd
есть опция не работать с интерфейсом. Однако, несмотря на использование этой опции, туда с запросами лез DHCP-клиент. После пары дней тестов я сделал вывод, что полностью отключить dhcpcd
на отдельном интерфейсе нельзя.dhcpcd
не позволяет также гибко настраивать интерфейсы как и networking
.networking
, в то время как dhcpcd
используется по большей части только в Raspbian OS (Raspberry Pi OS).Сетевая конфигурация на которой я остановился на данный момент выполнена следующим образом:
networking
и только для использования в качестве Wi-Fi клиента;allow-auto
, allow-hotplug
; Для каждого интерфейса описана его конфигурация (static
, manual
, dhcp
и loopback
) и ряд хуков. Формат interfaces
описан подробнее на manpages.ylsoftware.com.Замечание:
dhcpcd
иdhclient
– не одно и тоже .dhclient
- утилита для запроса параметров и настройки интерфейса. Работа сdhclient
rtfm.co.ua.
Для создания точки доступа используются следующие утилиты:
networking
.
wpa_supplicant
иhostapd
– утилиты выполняющие схожий функционал. Их сравнение описано на w1.fi.
sudo iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65
В версиях ядер Linux 2.4 и ниже для непосредственной работы с сетью использовались инструменты из пакета net-tools
такие как:
ifconfig
– для управления сетевыми интерфейсами;route
– управление таблицей маршрутизации;arp
– управление таблицей разрешения имен;netstat
– сетевая статистика;mii-tool
– статус сетевых устройств.В дистрибутивах, использующих современные ядра внедряется пакет iproute2
(иногда называется iproute
), net-tools
есть не всегда, но его можно скачать.
В пакет iproute
входят 3 основных утилиты:
ip
– команда для просмотра параметров и настройки сетевых интерфейсов, IP-адресов, таблиц маршрутизации, правил маршрутизации, таблиц ARP преобразования, IP-туннелей и т.д;tc
(traffic control) – команда для просмотра и настройки параметров управления трафиком (классификация трафика, дисциплины управления очереди для различных классов трафика);ss
– команда для просмотра текущих соединений и открытых портов (аналог netstat
).# создание маршрута
ip r add default via 192.168.1.1 dev wlan0
ip r add default via 10.64.64.64 dev ppp0
# удаление маршрута
ip route del default
ip route del default via 192.168.11.1
# создание адресации на интерфейсе
ip addr add 192.168.1.218/24 dev wlan0
# удаление адресации на интерфейсе
ip addr del 192.168.11.218/24 dev wlan0
Подробное использование команды
ip
описано на k-max.name.
ifup eth0
ifup
утилита читает /etc/network/interfaces
и выполняет описанные там инструкции для корректной конфигурации интерфейса.
ip link set eth0 up
Команда ip link up
только меняет статус интерфейса и не проводит никаких дополнительных настроек. Утилита не имеет никаких конфигураций и тд.
Чтобы это было понятнее: ip
команда которая делает низкоуровневое действие, а команда ifup
может/использует ip
команду в составе других для настройки согласно конфигурации конфигурации.
ifconfig eth0 up
ifconfig up
тоже самое, что и ip link up
, аналоги из net-tools
и iproute2
соответственно.
Больше информации на serverfault.com.
С помощью виртуального интерфейса к одному физического сетевому интерфейсу можно присвоить более одного IP-адреса. Это полезно, например при работе с Apache и виртуальными хостами, так как позволяет получить доступ к одному и тому же серверу Apache с двух разных IP-адресов.
Источники:
Отдельно хочу выделить создание виртуального интерфейса (не алиаса) с помощью
uml-utilities
:
# создание виртуального интерфейса router над wlan0
# невозможно без указания IP адреса
ifconfig wlan0:router 192.168.11.1/24 up
# удаление виртуального интерфейса
ifconfig wlan0:router down
Нельзя использовать виртуальный интерфейс в режиме моста или в режиме DHCP-клиента, для интерфейса должен быть задан статичный IP.
Подробнее тут:
Как я понял алиас для интерфейса == создание и настройка виртуальных сетевых интерфейсов через /etc/network/interfaces
.
Сейчас сайт semenushkin.ru не доступен, поэтому скопирую статью от 28.09.2010 сюда.
Устанавливаем несколько IP-адресов на один интерфейс Unix системы
FreeBSD
# Установка алиаса на интерфейс
ifconfig fxp0 alias 192.168.111.110
# Установка алиаса при загрузки системы (rc.conf)
ifconfig_em0_alias0="inet 192.168.111.110"
# Удалить существующий алиас с интерфейса:
ifconfig em0 -alias 192.168.111.110
Debian/Ubuntu
# Установка алиаса на интерфейс (eth0 — оригинальный, eth0:0, eth0:1 — дополнительные)
ifconfig eth0:0 192.168.111.110 up
# Установка алиаса при загрузке системы (/etc/network/interfaces)
auto eth0:0
iface eth0:0 inet static
name Ethernet alias LAN card
address 192.168.1.11
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
auto eth0:1
iface eth0:1 inet static
name Ethernet alias LAN card
address 192.168.10.11
netmask 255.255.255.0
broadcast 192.168.10.255
network 192.168.10.0
# Удалить существующий алиас с интерфейса
ifconfig eth0:0 down
Сейчас сайт eddnet.org не доступен, поэтому скопирую статью от 14.09.2010, 13:02 сюда.
Bridge — это способ соединения двух сегментов Ethernet на канальном уровне, т.е. без использования протоколов более высокого уровня, таких как IP. Пакеты передаются на основе Ethernet-адресов, а не IP-адресов (как в маршрутизаторе). Поскольку передача выполняется на канальном уровне (уровень 2 модели OSI), все протоколы более высокого уровня прозрачно проходят через мост.
Отдельно хочу выделить разницу bridge и macvlan hicu.be.
Нам понадобиться bridge-utils. (В RHEL, CentOS, Fedora, воспользуйтесь yum, в Debian подобных apt-get)
# установка bridge-utils
apt install bridge-utils
Настройку производим на системе с двумя сетевыми карточками:
# Создаем новый мост
brctl addbr br0
# Подключаем к нему сетевой интерфейс
brctl addif br0 eth0
# Очень важно, что бы на сетевом интерфейсе не было IP адреса. Команда, что бы удалить IP адрес
ip addr delete 172.16.0.1 dev eth0
# Подключаем второй интерфейс
brctl addif br0 eth1
# Назначаем мосту IP адрес
ip addr add 172.16.200.8/24 dev br0
# Отключаем STP (Spanning Tree Protocol) режим
brctl stp br0 off
# Подымаем интерфейсы
ip link set br0 up
ip link set eth0 up
ip link set eth1 up
Дополнительные команды:
# Информация о сетевых интерфейсах
ip addr
ip link
# Информация о bridge-е
brctl show
# Таблица MAC-адресов
brctl showmacs br0
Источники:
Я пытался отладить работу L2TP + IPsec сборки состоящей из двух отдельный контейнеров, связанных сетью с помощью утилиты tcpdump
, однако у меня не получилось это сделать.
Pluto listening for IKE on udp 500
Pluto listening for NAT-T on udp 4500
IP libreswan > zz217.113.124-243.tlt.ru: ICMP libreswan udp port 1701 unreachable, length 121
IP ipsec-vpn-server.1701 > zz217.113.124-243.tlt.ru.54767: l2tp:[TLS](27/0)Ns=0,Nr=1 *MSGTYPE(SCCRP) *PROTO_VER(1.0) *FRAMING_CAP(AS) *BEARER_CAP() FIRM_VER(1680) *HOST_NAME(ipsec-vpn-server) VENDOR_NAME(xelerance.com) *ASSND_TUN_ID(22763) *RECV_WIN_SIZE(4)
IP ipsec-vpn-server.1701 > 185.211.158.69.53760: l2tp:[](31/15401) {LCP, Conf-Request (0x01), id 1, length 27}
Больше примеров в этой статье.
Статьи для поднятия L2TP на роутере Mikrotik (раньше планировал использовать его в качестве соединительного узла):
mikrotik
, l2tp
, ipsec
, openvpn
;mikrotik
, l2tp
, ipsec
;mikrotik
, l2tp
, ipsec
;Статьи по настройке IPsec:
openswan
, ipsec
, l2tp
;mikrotik
, ipsec
;ipsec
;# Выключаем нужный нам интерфейс eth1:
ifconfig eth1 down
# Изменяем mac-адрес:
ifconfig eth0 hw ether 01:a2:55:04:d0:f1
# Включаем интерфейс eth1:
ifconfig eth1 up
Чтобы конфигурация сохранилась после перезагрузки, необходимо прописать следующую строку в файл /etc/network/interfaces
:
hwaddress ether 01:a2:55:04:d0:f1
Выполняем рестарт сети:
/etc/init.d/networking restart
# or
systemctl restart networking
Источники:
USB модемы можно разделить на два типа:
В первом случае для установки соединения можно использовать wvdial
(инструкция) + ppp
или sakis3g (robocraft.ru).
Также есть обёртка над sakis
– umtskeeper
. Она является полноценным менеджером соединения + ведет статистику по трафику.
/home/pi/3g_modem/umtskeeper —sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1506' APN='CUSTOM_APN' CUSTOM_APN='internet.beeline.ru' SIM_PIN='0000' APN_USER='beeline' APN_PASS='beeline'" —sakisswitches "--sudo —console" —devicename 'Huawei' —log —silent —nat 'no' &
В данной статье описано как использовать модем с помощью AT-комманд
и подключения через ppp
.
Wireless Extensions
(WE) является универсальным API, реализованным в ядре Linux и позволяющим драйверу отображать в пользовательском пространстве конфигурацию и конкретные особенности обычных беспроводных сетей. Если в драйвере поддерживается использование технологии Wireless Extensions
, то с помощью одного комплекта инструментальных средств можно поддерживать всевозможные варианты беспроводных сетей, независимо от их типа. Параметры WE можно менять на лету без перезагрузки драйвера (или Linux).
Пакет Wireless Tools
представляет собой набор инструментальных средств, позволяющих использовать Wireless Extensions
. Для поддержки всех возможностей Wireless Extensions
используется текстовый интерфейс.
ifrename
– переименовывает сетевые интерфейсы в соответствие с различными статическими критериямиiwconfig
– конфигурирует беспроводный сетевой интерфейсiwevent
– отображает события беспроводной сети, вызванные работой драйверов и изменением настроекiwgetid
– отображает параметры ESSID и NWID или адрес AP/Cell беспроводных сетейiwlist
– получает от беспроводного интерфейса информацию о беспроводной сетиiwpriv
– конфигурирует необязательные (приватные) параметры сетевого беспроводного интерфейсаiwspy
– получает от конкретного узла статистические данные о беспроводной сетиlibiw.so
– содержит функции, необходимые программам, работающим с беспроводными сетями, и предоставляет API для других программ.Источник rus-linux.net, дополнительная информация по пакету wiki.archlinux.org.
Команды для просмотра основных файлов:
# Основной конфигурационный файл
cat /etc/dnsmasq.conf
# Кажется файл с описанием выдачи статических адресов
cat /var/lib/misc/dnsmasq.leases
# Лог-файл выданных адресов
cat /var/log/dnsmasq/dnsmasq.leases
Информация о отключении собрана в паре топиков:
Если коротко, то:
sudo apt-get purge network-manager
sudo systemctl stop NetworkManager.service
sudo systemctl disable NetworkManager.service
sudo systemctl stop NetworkManager-wait-online.service
sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl stop NetworkManager-dispatcher.service
sudo systemctl disable NetworkManager-dispatcher.service
sudo systemctl stop network-manager.service
sudo systemctl disable network-manager.service
sudo reboot
Также мб установлена
nmtui
, её тоже можно удалить.
На некоторых ОС в тч на Armbian изначально включена функция именования интерфейсов с использованием MAC адреса. Например, не eth1
, а wlx0072631836f7
. Её нужно выключить, иначе на разных устройствах в куче конфигурационных файлов служб придется вручную менять все имена интерфейсов. Здесь написано как это сделать.
ifupdown
;allow
от hotplug
в /etc/network/interfaces
;bridge-utils
, настройка DNS resolv.conf
;systemd-resolved
);dnsmasq
;dnsmasq
as DHCP server;dnsmasq
теория и настройка;route
setup default linux gateway;iptables
;iptables
;isp-dhcp-server
, а также немного теории в тч про авторитарный DHCP сервер;wpa_supplicant
;bridge-utils
;bridge-utils
;dnsmasq
on two interfaces;dnsmasq
;dhcpcd
, ifupdown
;dnsmasq
;bridge-utils
;bridge-utils
;hostapd
, dnsmasq
;isc-dhcp-server
, hostapd
;dnsmasq
, bridge-utils
;ifupdown
, bridge-utils
;ifupdown
;bridge-utils
, ifupdown
, wpa_supplicant
;isc-dhcp-server
, hostapd
, routing
;hostapd
, dnsmasq
, routing
;isc-dhcp-server
, hostapd
;routing
, dnsmasq
;systemd-networkd
;routing
, dnsmasq
;routing
, dnsmasq
;isc-dhcp-server
;