Рубрики
network \ сеть

netplan

Ссылки:

https://netplan.io/
https://habr.com/ru/articles/448400/
https://interface31.ru/tech_it/2020/08/nastroyka-seti-v-linux-pri-pomoshhi-netplan.html

Нафига?:

Что 
Все чаще встречается в образа для cloud install (debian12 gns, ubuntu)
При чистой установке debian 12 по прежнему ставится networking.

установка в debian
apt install netplan

Файлы конфигурации находятся по пути /etc/netplan/имяфайла.yaml, между каждым блоком когда должно быть + 2 пробела.

Структура YAML файла: 
поле0:
  поле1:значение1
  поле2:
    -элементсписка1
    -элементсписка2


netplan generate - создать конфигурационные файлы на основании сетевых конфигураций 
netplan try - проверить сетевые настройки
netplan apply - применить сетевые настройки без тестирования

Пример конфига с dhcp:

network: 
  version: 2 
  renderer: networkd 
  ethernets:
    ens33:
      dhcp4: true

Пример статики с роутами и днсами:

network:
  version: 2 
  renderer: networkd 
  ethernets: 
    ens33: 
      dhcp4: false 
      addresses: [192.168.233.154/24] 
      gateway4: 192.168.233.2 
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]

Если требуется указать несколько IP-адресов для одного интерфейса, то запись будет выглядеть так:

addresses: [192.168.233.154/24, 192.168.1.154/24] 

или

addresses:
  - 192.168.233.154/24
  - 192.168.1.154/24

Пример статики с роутами и днсами (более правильный для устаревшего/deprecated gateway4):

ens33: 
  dhcp4: false 
  addresses:
    - 192.168.233.154/24
  routes: 
    - to: default
      via: 192.168.233.2 
    - to: 192.168.111.0/24
      via: 192.168.233.101
  nameservers:
    addresses:
      - 1.1.1.1
      - 8.8.8.8

Пример wi-fi:

network:
  version: 2
  renderer: networkd
  wifis:
    wlx8416f91d8de0:
      dhcp4: true
      access-points:
        MyWiFi:
          password: Pa$$word_1

Пример bond:

bonds: — блок, поясняющий что мы будем настраивать bonding
bond0: — произвольное имя интерфейса
interfaces: — набор интерфейсов собираемых в bond
parameters: — описываем блок настройки параметров
mode: — указываем мод по которому будет работать bonding
mii-monitor-interval: — задаем интервал мониторинга 1 сек


  bonds:
    bond0:
      dhcp4: no
      interfaces: [enp3s0f0, enp3s0f1]
      parameters: 
        mode: 802.3ad
        mii-monitor-interval: 1

Пример vlan:

vlans: — объявляем блок настройки vlan
vlan10: — произвольное имя vlan интерфейса
id: — тег нашего vlan
link: — интерфейс через который vlan будет доступен
routes: — объявляем блок описания маршрутов
— to: — задаем адрес/подсеть до которой необходим маршрут
via: — указываем шлюз через которой будет доступна наша подсеть
on-link: — указываем что прописывать маршруты всегда при поднятии линка


vlans: 
    vlan10:
      id: 10
      link: bond0
      dhcp4: no
      addresses: [10.10.10.2/24]
      gateway: 10.10.10.1
      routes:
        - to: 10.10.10.2/24
          via: 10.10.10.1
          on-link: true

виртуальные фейсы

network:
    version: 2
    renderer: networkd
    ethernets:
        enp7s0f0:
    vlans:
        veth0:
            id: 0
            link: enp7s0f0
            addresses: [10.0.0.1/24]
	    macaddress: aa:bb:cc:dd:ee:ff
  	veth1:
            id: 0
            link: enp7s0f0
            addresses: [10.0.1.2/24]
	    macaddress: aa:bb:cc:dd:ee:ff
Рубрики
network \ сеть

boringtun / wireguard / wg / userspace / qrencode

ссылки:

https://github.com/cloudflare/boringtun
https://www.wireguard.com/xplatform/
https://stackoverflow.com/questions/31571091/could-not-find-cargo-toml-when-building-a-dependent-crate-from-github
https://github.com/webrtc-rs/webrtc/issues/433
https://crates.io/crates/cargo-update
https://doc.rust-lang.org/cargo/commands/cargo-update.html
https://www.comptia.org/blog/configuring-wireguard-vpn

install

0. Установим необходимые пакеты 
apt update && apt upgrade -y 
apt install wireguard
apt install cargo

1. Установим boringtun
sudo su - 
# собираем под пользователем
# cargo install boringtun-cli - может не сработать 
cargo install --locked boringtun-cli


2. Добавить в конец
vim .profile
---------
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.cargo/bin" ] ; then
   PATH="$HOME/.cargo/bin:$PATH"
fi
---------


3. Запуск
Скопируем бинарник boringtun-cli в /usr/bin
# sudo cp ./cargo/bin/boringtun-cli /usr/bin/
Выдадим на него права
# sudo setcap cap_net_admin+epi /usr/bin/boringtun-cli 
sudo WG_QUICK_USERSPACE_IMPLEMENTATION=boringtun-cli WG_SUDO=1 wg-quick up CONFIGURATION

systemd

vim /etc/systemd/system/boringtun.service
----------------------------------------- 
[Unit]
Description=BoringTUN via wg-quick for wg0
Before=network-pre.target
After=network-online.target nss-lookup.target
Wants=network-online.target nss-lookup.target
PartOf=wg-quick.target

[Service]
Type=oneshot
RemainAfterExit=yes
User=root
WorkingDirectory=/root
ExecStart=/usr/bin/wg-quick up wg0
ExecStop=/usr/bin/wg-quick down wg0
Environment=WG_QUICK_USERSPACE_IMPLEMENTATION=boringtun-cli
#ExecStartPost=/usr/bin/wg setconf wg0 /etc/wireguard/wg0.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target
----------------------------------------- 


systemctl daemon-reload
systemctl start boringtun.service 

Debian 11 генерация QR (каур кода) для wireguard

apt install qrencode 
qrencode -t ansiutf8 < wg0.conf

Пример конфигов wg-quik без boring

Генерируем ключи:
cd /etc/wireguard
umask 077; wg genkey | tee privatekey | wg pubkey > publickey
Генерируем общий ключ:
wg genpsk > presharedKey


PC1
cat /etc/wireguard/wg0.conf
---------------------------
cat wg0.conf 
[Interface]
Address = 10.0.0.1/24
ListenPort = 51100
PrivateKey = PRIVATE_KEY_TEXT_PC1
#MTU = 9000

[Peer]
PresharedKey =  PRE_KEY
PublicKey = PUBLIC_KEY_TEXT_PC2
 
AllowedIPs = 10.0.0.2/32

---------------------------

PC2 
cat /etc/wireguard/wg0.conf
---------------------------
[Interface]
PrivateKey =  PRIVATE_KEY_TEXT_PC2
Address = 10.0.0.2/24
#MTU = 9000
 
[Peer]
PresharedKey = PRE_KEY
PublicKey = PUBLIC_KEY_TEXT_PC1
AllowedIPs = 10.0.0.0/24
Endpoint = 10.77.77.1:51100
PersistentKeepalive = 20
---------------------------


Запуск и остановка вручную:
wg-quick up wg0
wg-quick down wg0

В автозагрузку можно так:
systemctl start wg-quick@wg0
systemctl enable wg-quick@wg0
systemctl status wg-quick@wg0


Еше пример конфига для клиента 
Interface]
Address = 10.0.0.4/24
DNS = 8.8.8.8, 8.8.4.4
PrivateKey = PRIVAT_KEY_CLIENT
#PostUp = ip r a 0.0.0.0/1 dev wg0 
#PostDown = ip r d 0.0.0.0/1 dev wg0 
[Peer]
PublicKey = PUBLIC_KEY_SERVER_WG
#AllowedIPs = 0.0.0.0/0
AllowedIPs = 0.0.0.0/1 # если сделать так то весь трафик кроме локального будет завернут в vpn 
Endpoint = IP_WG_SERVER:PORT_WG_SERVER
PersistentKeepalive = 25

Пример запуска в ручную в userspace

root@puzzleiperf1:/etc/wireguard# 

pc1 cat boringtun.sh 
--------------------
boringtun-cli --log /root/boringtun.log --threads 4 --verbosity info wg0
ip a a 10.0.0.1/24 dev wg0
wg set wg0 private-key ./privatekey listen-port 51100
wg set wg0 peer PUBLIC_KEY_TEXT_PC2 allowed-ips 10.0.0.2/32 endpoint 10.77.77.2:51100
ip link set up dev wg0
----------------------


pc2  cat boringtun.sh
---------------------- 
boringtun-cli --log /root/boringtun.log --threads 4 --verbosity info wg0
ip a a 10.0.0.2/24 dev wg0
wg set wg0 listen-port 51100
wg set wg0 private-key ./privatekey 
wg set wg0 peer PUBLIC_KEY_TEXT_PC1  allowed-ips 10.0.0.0/24 endpoint 10.77.77.1:51100
ip link set up wg0
-----------------------

Рубрики
network \ сеть Конспект

Конспект: routing / frr / bgp / ecmp

Cсылки:

# RFC
https://tools.ietf.org/html/rfc1918 
https://tools.ietf.org/html/rfc6890
https://www.rfc-editor.org/rfc/rfc1930
https://www.rfc-editor.org/rfc/rfc4271
# IPCALC
http://jodies.de/ipcalc
# FIB
https://en.wikipedia.org/wiki/Forwarding_information_base
# SYSCTL / rp-filter
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
# Looking glass
http://lg.mtu.ru/cgi-bin/lgform_img.cgi
# OSPF
https://community.cisco.com/t5/networking-documents/ospf-design-best-practices/ta-p/3112070
https://spw.ru/educate/articles/primenenie-ospf-v-routeros-1/
# BGP
https://linkmeup.ru/blog/65.html
https://www.ssi.gouv.fr/uploads/2016/03/bgp-configuration-best-practices.pdf
http://xgu.ru/wiki/BGP_%D0%B2_Cisco
http://www.justogroup.ru/dokumentacija/cisco/marshrutiziruemye_seti/prakticheskie_primeri_bgp.pdf
# AS 2.0
https://www.cidr-report.org/as2.0/
# BIRD
https://bird.network.cz/
# frr
https://frrouting.org/
# печалька в яндекс в 2211 году
https://habr.com/ru/company/yandex/blog/126709/

Сети

Серые сети
- 10.0.0.0/8
- 172.16.12.0/12
- 192.168.0.0/16

Специальные сети
- 0.0.0.0/8 - этот хост как источник
- 127.0.0.0/8 - этот хост как приемник, loopback
- 100.64.0.0/10 - Shared Net - NAT на уровне провайдера
- 169.254.0.0/16 - Link Local - сеть для самоконфигурирующихся устройств
- 240.0.0.0/4 - Multicast

Рекомендуемая схема нумерации для сетей
10.1.32.0/23
   |  |
   |  |
   |  vlan #132 
   geo-id #1


Агрегат:



Агрегат - минимально возможная сеть, включающая в себя все специфики
10.0.0.0/13 - Агрегат
10.1.0.0/16 - Специфик
10.2.0.0/16 - Специфик
10.6.20.0/22 - Специфик

forwarding information base (FIB)
также известная как "таблица пересылки"(forwarding table) или "таблица MAC -адресов"(MAC table)
В роутинге специфики всегда выигрывают при поиске в FIB

Агрегаты всегда должны "заворачиваться в null", что бы избегать проблем с кольцами, броадкастами и мусорным трафиком в маршрутизации
ip route add blackhole 10/8
Кроме того, null routing - самый дешевый способ фильтрации трафика


Динамическая маршрутизация:

Автоматическое получение маршрутов и возможность их перестроения при изменении топологии
Interior Gateway Protocols
- Open Shortest Path First
- Enhanced Interior Gateway Routing Protocol

Работают на уровне L3, каждый роутер знает всю топологию своей области, отслеживается состояние соединений

Border Gateway Protocol (BGP)
Работает на уровне L4 (возможно управление маршрутизаторами с отдельно стоящего BGP Route Server), 
состояние пиринга определяетя по состоянию TCP-сессии. 

Может использоваться внутри AS/Area


Quagga (ex-Zebra) (deprecated / устарел)

Набор демонов, реализующий управление сетью в linux
RIPD, OSPFD, BGPD, ISISD
Zebra (Forwarding Information Base, FIB)
vtysh - консоль управления
Взаимодействует с таблицей "Kernel Routing Table"
Возможно так же управление интерфейсами и разнообразными сетевыми настройками
Полностью копирует управление и функциональность Cisco IOS

BIRD

- разрабатывается с 2005 года
- умеет: OSPF,IS-IS,RIP,BGP,BFD
- умеет IPV6
- свой язык описания конфигов и фильтров
- используется: DE-CIX, LINX, PAIX, MSK-IX

Архитектура:
- master - Основанная таблица, в которую попадают маршруты от других  протоколов
- device - протокол, который следит за статусами интерфейсов в системе
- static - протокол, отвечающий за статическую маршрутизацию
- direct - протокол, создающий в таблице маршруты на основе настроек интерфейсов системы
- kernel - протокол для взаимодействия с ядром и загрузкой маршрутов в таблицу маршрутизации linux

OSPF Terms / Neighbourhood / interface

OSPF Terms:
Area - интерфейсы, роутеры которых получают всю информацию о топологии сети. 
Для небольшой сети возможно использование единственной Area 0. Есть разновидности - backbone, standard, stub, not-so-stubby area и еще несколько
Hello - пакеты, устанавливающие и поддерживающие соеденение роутеров
LSA (Link State Announce) - единица обмена информацией между роутерами
OSPF (https://habr.com/post/201794/)
BR - Border Router
ABR (ospf term) - Area Border Router
ASBR (bgp term) - Autonomous System Border Router
DR - Designated Router - ABR, являющийся основной точкой входа в Area
BDR - Backup Designated Router - ABR, являющийся резервной точкой входа
DROther - BR, не участвующий в построении графа маршрутов

OSPF Neighbourhood
Cостояния соседства маршрутизаторов
Down - соседа не видно
Attempt, Init - попытка установить соединение
2-Way - роутеры видят друг-друга
Exstart, Exchange, Loading aka Adjacent - роутеры обмениваются информацией
Full aka Full Adjacent - роутеры обменялись информацией


OSPF interface
Priority: DR/BDR election
Если в одну сеть есть два входа через два роутера, то один из них становится DR, остальные - BDR. 
На принятие решения влияет priority и router-id. 
Если по каким-то причинам роутеры не могут выбрать DR, то состояние их соседства повиснет в 2way/DRother.
Специальное значение priority 0 - отказ от выборов.

Cost - стоимость прохождения через этот интерфейс. 
По-умолчанию рассчитывался исходя из пропускной способности интерфейса. 
Теперь неактуально, потому что при bw ≥ 100 Mbps default cost = 1. 
Если есть два маршрута в одну сеть с одинаковой суммарной стоимостью - устанавливаются оба, 
в противном случае устанавливается только один с минимальной стоимостью. 
Параметр интерфейса роутера, а не направления в целом, поэтому для понижения приоритета всего линка должен быть установлен с обоих сторон.

Linux rp_filter
По умолчанию, параметр установлен в 1, что обозначает строгую проверку маршрута источника. 
Это правильно до тех пор, пока мы не сталкиваемся с динамическим роутингом. 
При использовании IGP можно сразу выставить в 2 (нестрогая проверка) или в 0 (отсутствие проверки)

Автономная система:

Автономная система (autonomous system, AS) - это система IP-сетей и маршрутизаторов, управляемым одним или несколькими операторами, имеющими единую политику маршрутизации с Интернетом.

Особенности:
- процесс создания и регистрации AS описан в RFC 1930.
- номера AS выдается организациями RIR (Regional Internet Registry) или LIR (Local Internet Registry)
- до 2007 года были 16-бинтыми, теперь 32-битные номера

Диапазоны номеров автономных систем:
- 0-65535 (изначально определенный диапазон для ASN 16 бит)
- 65536-4294967295 (новый диапазон для ASN 32 бит(КАС 4893))
(май 2007)

Использование номеров автономных систем:
- 0 и 64535 - зарезервированы
- 1-64495 публичные номера (все что не выдали до 2012 - резерв у IANA)
- 65552-4294967295 публичные номера (выдается с 2010)
- 64512-65534 - приватные номера
- 23456 - представляет 32-битный диапазон на устройствах, которые работают с 16-битным диапазоном(для совместимости со старым оборудованием)

Provider Aggregatable (PA) -  диапазон адресов, приндлежащий провайдеру
Особенности:
- легко получить
- принадлежат провайдеру
- в случае смены провайдера - остается у провайдера

Provider Independent (PI) - независимый от провайдера диапазон адресов
Особенности:
- приобретается у  LIR
- привязывается к номеру AS
- сохраняются при смене провайдера и добавляет гибкости маршрутизации

AS и префикс с реальным IP-адресами выдает RIPE
Не операторы могут получить префикс, можно договорится с другими операторами и поднять пиринг по BGP. В базе данных RIPE можно будет добавить информацию о том что сеть закреплена за вашей организацией.

Если нету номера AS для поднятия пирига можно использовать приватный диапазон AS 64512-65534.

BGP

RIPE -> RIR -> LIR

Особенности:
- дистанционно-векторный протокол
- децентрализованный
- имеет гибкую систему фильрации и управления приоритетами маршрутов
- имеет защиту от образования петель
- объединяет автономные системы (AS)(eBGP)
- может использоваться внутри одной AS(iBGP)
- работает на уроне L4
- состояние пиринга определяет по состоянию TCP-сессии
- для построения таблицы маршрутизации используется номера AS
- может быть требователен к ресурсам маршрутизатора
- текущий размер полной таблицы маршрутизации сети Интернет более 800к маршрутов

Основные условия для установления соседства по BGP
- связанность по TCP
- доступность порта TCP 179
- программные или аппаратные маршрутизаторы с поддержкой протокола

Таймеры:
- необходимы для установки соседства
- по RFC4271, keepalived time = 90s, hold time = 30s
- Cisco, keepalived time = 180, hold time = 60s
- FRR, keepalived time = 180s, hold time = 60s
- не стоит делать значения таймеров очень мленькими , это может вызвать проблемы
- лучше использовать протокол BFD

Основные состояния установления соседства по BGP:
IDLE - изначальное состояние BGP-соседства. Ничего не происходит.
CONNECT - слушает порт 179, но ничего не отправляет
ACTIVE - отправил SYN и ждет ответа от соседа
OPENSENT** - BGP начал обмен сообщениями OPEN. Сообщение отправлено
OPENCONFIRM** - сообщение OPEN получено
ESTABLISHED - все настройки согласованы и сессии BGP работают

Основные сообщения в BGP:
Open - согласование номера ASб HoldTimer и Router ID.


Протокол обмена маршрутной информацией уровня провайдера.
Объединяет т.н. Автономные Системы (Autonomous System, AS)

AS похож на OSPF Area. Подразумевается, что все сети внутри AS так или иначе объединены с помощью IGP
В некоторых случаях BGP может использован внутри AS. 
Т.к. BGP в основном означает связь с провайдером, то для внутренних связей используют термин iBGP
Автономную систему хорошо иметь для независимости от ДЦ и в случае нескольких ДЦ. 
Минимальный размер сети, анонсируемой через BGP не регламентируется протоколом, но в реальной жизни - /24. 
Поэтому минимальный размер AS тоже /24. 
Раньше адреса можно было получить непосредственно у RIPE, теперь ищите LIR, у которых еще остались блоки адресов.

RIPE хранит всю информацию о связях AS. 
Её со своей стороны надо всегда держать в актуальном состоянии, потому что есть много транзитных операторов, которые используют эту базу для конфигурации устройств в автоматическом режиме
Типичный сценарий использования: вы анонсируете провайдеру свои сети, провайдер вам в ответ анонсирует 0.0.0.0/0.
При пиринге всегда нужно использовать фильтрацию префиксов, что бы ни вы, ни провайдер не отослали лишнего.

whois - интерфейс командной строки ко всем базам координационных центров. Россия относится к RIPE.

Looking glass - Инструмент ограниченного доступа к роутерам провайдера через web-интерфейс.

vtysh

show running-config - посмотреть текущий файл конфигурации
show ip bgp - посмотреть текущую таблицу маршрутов
show bgp summary -сводная информация для всех экземпляров маршрутизации
show bgp neighbor - отображение информации
!!! обратите особое внимание состояние BGP. 
!!! Любое состояние, отличное от Established, указывает на то, 
!!! что обмен информацией между соседями не налажен

OSPF mesh??

Для создания mesh-сети с OSPF нужно настроить несколько узлов, каждый из которых будет обмениваться маршрутной информацией с другими.
У каждого узла должен быть свой уникальный router-id, но все они должны быть частью одной и той же OSPF-области (например, area 0).



sudo apt update
sudo apt install frr frr-pythontools

vim /etc/frr/daemons
--------------------
ospfd=yes
--------------------


vim  /etc/frr/frr.conf
----------------------
!
! Конфигурация маршрутизатора
!
frr defaults traditional
hostname my-router
log syslog
service integrated-vtysh-config
!
! Включаем OSPF
!
router ospf
 ospf router-id 1.1.1.1        ! Уникальный ID маршрутизатора
 network 10.99.99.0/24 area 0  ! OSPF для сети 10.99.99.0/24 в области 0
 passive-interface default     ! Отключаем отправку Hello-пакетов на всех интерфейсах
 no passive-interface eth0     ! Включаем OSPF на интерфейсе eth0
 no passive-interface eth1     ! Включаем OSPF на интерфейсе eth1
!
! Интерфейсы
!
interface eth0
 ip ospf area 0
!
interface eth1
 ip ospf area 0
!
line vty
----------------------




vtysh
show ip ospf neighbor
show ip route ospf
Рубрики
network \ сеть

systemd-networkd / bond / ovs / wi-fi wpa_supplicant / apipa v4 v6 / tun / tap / dummy / bond / batman-adv

ссылки:

https://wiki.archlinux.org/title/Systemd-networkd
https://wiki.archlinux.org/title/systemd-networkd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
https://wiki.archlinux.org/title/systemd-networkd
openvswitch / ovs / bond0

wpa_supplicant

wpa_supplicant -B -b br0 -i wlan0 -c wpa.conf -Dwext

wpa_supplicant - Wi-Fi Protected Access client and IEEE 802.1X supplicant

-B Run daemon in the background.
-b br_ifname Optional bridge interface name. (Per interface)
-i ifname Interface to listen on
-c filename Path to configuration file.
wpa.conf - wpa_supplicant config file example:

network={
    ssid="MYSSID"
    psk="passphrase"
}

Enable 4-address mode when creating an interface.
Wireless chip needs support it. (aka AP-to-Sta WDS).
iw dev wlan0 set 4addr on

Add interface to bridge:
brctl addif br0 wlan0

wi-fi wpa_supplicant

0. Генерируем параметры подключения 
wpa_passphrase MYSSID passphrase - генерация подключения к SSID + PASSWORD
--------------------------------
выхлопа:
network={
ssid="MYSSID"
psk="passphrase"
psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
}
--------------------------------

1.Создаем файл /etc/wpa_supplicant/example.conf
# wpa_passphrase MYSSID passphrase >> /etc/wpa_supplicant/example.conf
vim /etc/wpa_supplicant/example.conf
------------------------------------
ctrl_interface=/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1


network={
ssid="MYSSID"
psk="passphrase"
psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d
}
------------------------------------


2. Проверяем что подключение работает
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/example.conf

3. Если все ок Переименовываем файл example.conf в wpa_supplicant-wlan0.conf
systemctl enable wpa_supplicant@wlan0
systemctl start wpa_supplicant@wlan0

bond средствами systemd

0. Переходим в катало  /etc/systemd/network и создаем файлы конфигурации
cd /etc/systemd/network 


0. создаем устройство bond0 / wi-fi + wired
vim  30-bond0.netdev 
--------------------
[NetDev]
Name=bond0
Kind=bond

[Bond]
Mode=active-backup
PrimaryReselectPolicy=always
MIIMonitorSec=1s
--------------------

1. Настраиваем проводной интерфейс
vim 30-ethernet-bond0.network
----------------------------- 
[Match]
Name=enp2s0

[Network]
Bond=bond0
PrimarySlave=true
----------------------------- 

2. Настраиваем без проводной интерфейс
vim 30-wifi-bond.network 
------------------------
[Match]
#Name=wlan0
MACAddress=d4:1b:81:03:25:03
#MACAddress=MAC_address_of_the_WiFi_card

[Network]
Bond=bond0
------------------------

3. Настраиваем получение IP на bond0
vim 30-bond0.network 
----------------
[Match]
Name=bond0
[Network]
DHCP=ipv4
#Address=10.1.10.9/24
#Gateway=10.1.10.1
#DNS=10.1.10.1
----------------

4. Перезапускаем systemd и проверяем настройки
systemctl restart systemd-networkd.service
networkctl

bond openvswitch / ovs

### !!1 с wi-fi не работает
ovs-vsctl add-br ovsbr1 
ovs-vsctl add-bond ovsbr1 bond0 eth1 eth3
# режим бонада должно уметь оборудование 
ovs-vsctl set port bond0 lacp=active
ovs-vsctl add-bond ovsbr0 bond0 eth1 eth2 bond_mode=active-backup
# info
ovs-appctl bond/show bond0 - показать информацию о bond
ovs-appctl lacp/show bond0 - показать информацию о lacp
ovs-vsctl list port bond0

P.S

Бонидинг средствами systemd работает прекрасно с eth+wifi. (если делать по этой вот статье https://wiki.archlinux.org/title/Systemd-networkd)
Бондинг средствами ovs на виртуальных проводных интерфейсах в виртуальной машине, работает. 
Бондинг средствами systemd на виртуальных проводных интерфейсах в виртуальной машине, работает. 
Если интерфейс bond(созданный с помощью systemd) всунуть в ovs то бондинг не работает. (в случае поломки не переключается на исправный, хотя в инфо показывает что переключение случилось )


Своя генерация linklocal ipv4 / APIPA

APIPA = 169.254.0.0/16


vim /etc/systemd/network/ens6.network
------------------------
[Match]
Name=ens6

[Network]
DHCP=ipv4
LinkLocalAddressing=ipv4
IPv6AcceptRA=no
IPv4LLStartAddress=169.254.55.55

[DHCP]
MaxAttempts=3
RouteMetric=10
ClientIdentifier=mac
------------------------

Что то похожие на APIPA IPV6

vim /etc/systemd/network/ens6.network
-------------------------------------
[Match]
Name=ens6

[Network]
IPv6AcceptRA=no
IPv6PrivacyExtensions=prefer-public

[DHCP]
MaxAttempts=3
RouteMetric=10
ClientIdentifier=mac
-------------------------------------

APIPA IPV4 + IPV6


cat > /etc/systemd/network/50_ens6.network << "EOF"
[Match]
Name=ens6

[Network]
LinkLocalAddressing=yes
IPv4LLStartAddress=169.254.55.55
IPv6AcceptRA=no
IPv6PrivacyExtensions=prefer-public

[DHCP]
MaxAttempts=3
RouteMetric=10
ClientIdentifier=mac

EOF


Виртуальных интерфейсы: tun, tap и dummy

Отличие интерфейсов tun и tap заключается в том, что tap старается больше походить на реальный сетевой интерфейс, а именно он позволяет себе принимать и отправлять ARP запросы, 
обладает MAC адресом и может являться одним из интерфейсов сетевого моста, так как он обладает полной поддержкой ethernet - протокола канального уровня (уровень 2).
Интерфейс tun этой поддержки лишен, поэтому он может принимать и отправлять только IP пакеты и никак не ethernet кадры.
Он не обладает MAC-адресом и не может быть добавлен в бридж. 
Зато он более легкий и быстрый за счет отсутствия дополнительной инкапсуляции и прекрасно подходит для тестирования сетевого стека или построения виртуальных частных сетей (VPN). 
Виртуальный интерфейс типа dummy очень похож на tap, разница лишь в том, что он реализуется другим модулем ядра.

Создаем интерфейс типа tun вручную и на время(жить будет до перезагрузки):
ip tuntap add dev tun0 mode tun
ip address add 10.0.0.1/30 dev tun0
ip address show tun0
!!! Внимание tun интерфейс невозможно добавить в бриджи (так как он не имеет MAC)
Собственно при попытки добавить tun в бридж будет ошибка:
ip link set dev tun0 master br0
RTNETLINK answers: Invalid argument


Создаем интерфейс типа tap вручную и на время(жить будет до перезагрузки):
ip tuntap add dev tap0 mode tap
ip address add 10.0.0.5/30 dev tap0
ip address show tap0
В бридж tap добавляется без проблем:
ip link set dev tap0 master br0

Создаем интерфейс типа dumm вручную и на время(жить будет до перезагрузки):
ip link add dev dum0 type dummy
ip address add 10.0.0.7/30 dev dum0
ip address show dum0
В бридж dumm добавляется без проблем:
ip link set dev dum0 master br0


Примеры конфигов для systemd:
TUN:
vim /etc/systemd/network/tun0.netdev
------------------------------------
[NetDev]
Name=tun0
Kind=tun
------------------------------------

vim /etc/systemd/network/tun0.netdev
------------------------------------
[Match]
Name=tun0
[Network]
Address=10.0.0.1/30
------------------------------------

TAP:
vim /etc/systemd/network/tap0.netdev
------------------------------------
[NetDev]
Name=tap0
Kind=tap
------------------------------------
vim /etc/systemd/network/tap0.network
-------------------------------------
[Match]
Name=tap0
[Network]
Address=10.0.0.5/30
-------------------------------------

DUMMY:
vim /etc/systemd/network/dum0.netdev
------------------------------------
[NetDev]
Name=dum0
Kind=dummy
------------------------------------
vim /etc/systemd/network/dum0.network
-------------------------------------
[Match]
Name=dum0
[Network]
Address=10.0.0.7/30
-------------------------------------


P.S.
Стоит отметить, что если вы планируете маршрутизировать траффик через виртуальные интерфейсы 
( а, используя их для цели создания виртуальных частных сетей (VPN), вы точно этого хотите), 
то в конфигурационный файл в секции "Network" следует добавить диррективу "IPForward=yes".

B.A.T.M.A.N

cat /etc/systemd/network# cat 10_fm1-mac10.network
[Match]
Name=fm1-mac10

[Network]
BatmanAdvanced=bat0

cat /etc/systemd/network# cat 20_wlP2p1s0f1.network
[Match]
Name=wlP2p1s0f1

[Network]
BatmanAdvanced=bat0

cat /etc/systemd/network# cat bat0.netdev 
[NetDev]
Name=bat0
Kind=batadv

[BatmanAdvanced]
GatewayMode=server
RoutingAlgorithm=batman-v
OriginatorIntervalSec=5

Примеры конфигов batman-adv / bridge / vlan


cat  > /etc/systemd/network/ens4.network << "EOF"
[Match]
Name=ens4

[Network]
Bridge=br0
EOF

cat  > /etc/systemd/network/ens5.network << "EOF"
[Match]
Name=ens5

[Network]
BatmanAdvanced=bat0
EOF


cat  > /etc/systemd/network/ens6.network << "EOF"
[Match]
Name=ens6

[Network]
BatmanAdvanced=bat0
EOF


cat >  /etc/systemd/network/bat0.netdev << "EOF"
[NetDev]
Name=bat0
Kind=batadv

[BatmanAdvanced]
#GatewayMode=server
RoutingAlgorithm=batman-v
OriginatorIntervalSec=5
EOF

cat  > /etc/systemd/network/bat0.network << "EOF"
[Match]
Name=bat0

[Network]
Address=10.0.0.12/24
Bridge=br0
EOF


cat > /etc/systemd/network/br0.netdev << "EOF"
[NetDev]
Name=br0
Kind=bridge
EOF




br0 / mac / tap

Без ovs на brctl будет так выглядеть

cat  > /etc/systemd/network/tap0.network << "EOF"
[Match]
Name=tap0
 
[Network]
Bridge=br0
EOF
 
cat  > /etc/systemd/network/tap1.network << "EOF"
[Match]
Name=tap1
 
[Network]
Bridge=br0
EOF

cat  > /etc/systemd/network/ens3.network << "EOF"
[Match]
Name=ens3
 
[Network]
Bridge=br0
EOF


cat > /etc/systemd/network/br0.netdev << "EOF"
[NetDev]
Name=br0
Kind=bridge
EOF



для смены маков вот так вот
cat > /etc/systemd/network/40-tap0.link << "EOF"
[Match]
OriginalName=tap0

[Link]
Name=tap0
MACAddress=02:DB:32:8F:B1:02
EOF


Ну а остальные ip можно доверить на br развесить netplan
Ну или запилить дальше в systemd



cat > /etc/systemd/network/br0.network << "EOF"
[Match]
Name=br0
[Network]
Address=10.0.0.5/30
Address=10.0.1.10/24
EOF






MTU + br0

cat 10-fm1-mac10.network
------------------------
[Match]
Name=fm1-mac10
[Network]
Bridge=br0
[Link]
MTUBytes=4000
------------------------

MTU + br0 + speed

https://www.freedesktop.org/software/systemd/man/latest/systemd.link.html#BitsPerSecond=

cat 10-fm1-mac10.network
------------------------
[Match]
Name=fm1-mac10
[Network]
Bridge=br0
[Link]
MTUBytes=4000
AutoNegotiation=yes
Advertise=10baset-full
Advertise=100baset-half
Advertise=1000baset-full
Advertise=10000baset-full
Advertise=100000basedr-full
------------------------



/etc/systemd/network/10-enp9s0.link
-----------------------------------
[Match]
Name=enp9s0

[Link]
AutoNegotiation=no
Speed=100Mbps
Duplex=full
-----------------------------------

Пример демона для снижения скорости:

.0 
/etc/systemd/system/ethtool-enp9s0.service
------------------------------------------
[Unit]
Description=Configure enp9s0 speed and duplex
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s enp9s0 speed 100 duplex full autoneg off

[Install]
WantedBy=multi-user.target
------------------------------------------

1.
sudo systemctl daemon-reload
sudo systemctl enable ethtool-enp9s0.service
sudo systemctl start ethtool-enp9s0.service
sudo systemctl status ethtool-enp9s0.service

Пример с файлом /etc/network/interfaces

/etc/network/interfaces
-----------------------
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# Loopback network interface
auto lo
iface lo inet loopback

# Primary network interface
auto enp9s0
iface enp9s0 inet dhcp
    up /sbin/ethtool -s enp9s0 speed 100 duplex full autoneg off
/etc/network/interfaces
-----------------------

Рубрики
network \ сеть

ipv6 dhcp / debian / batman / ovs / radvd / isc-dhcp-server / dnsmasq / bind9

ссылки:

https://www.isc.org/dhcp/
https://wiki.debian.org/DHCP_Server
https://wiki.debian.org/IPv6PrefixDelegation
https://wiki.debian.org/NetworkConfiguration
https://wiki.debian.org/ru/NetworkConfiguration
https://subatomicsolutions.org/8-freebsd/17-ipv4-ipv6-isc-dhcp-server-on-a-dual-stack-network

client interfaces

auto enp1s0
iface enp1s0 inet manual
             up batctl ra BATMAN_V
             up batctl if add enp1s0
             up batctl mff 1
 
auto enp7s0
iface enp7s0 inet manual
             up batctl if add enp7s0

auto bat0
iface bat0 inet manual

auto br0
iface br0 inet manual

auto dhcp-client
iface dhcp-client inet dhcp

auto dhcp-client6
iface dhcp-client6 inet6 dhcp
                   accept_ra 2
                   request_prefix 1 

server interfaces

auto enp1s0
iface enp1s0 inet dhcp

auto enp1s0
iface enp1s0 inet manual
             up batctl ra BATMAN_V
             up batctl if add enp1s0
             up batctl mff 1
  
auto enp7s0
iface enp7s0 inet manual
             up batctl if add enp7s0

auto bat0
iface bat0 inet manual


auto br0
iface br0 inet manual

auto dhcp-server
iface dhcp-server inet static
                  address 10.50.50.1/24
iface dhcp-server inet6 static
                  address 2002:db:a::1/64

ovs

ovs-vsctl show 
--------------
111dac72-04b7-4806-a881-7e057d6e3e34
    Bridge ovsbr0
        Port ovsbr0
            Interface ovsbr0
                type: internal
        Port dhcp-client6
            Interface dhcp-client6
                type: internal
        Port dhcp-client
            Interface dhcp-client
                type: internal
        Port bat0
            Interface bat0
    ovs_version: "2.15.0"
--------------

ovs-vsctl add-br ovsbr0
ovs-vsctl add-port ovsbr0 bat0
ovs-vsctl add-port ovsbr0 dhcp-client -- set interface dhcp-client type=internal
ovs-vsctl add-port ovsbr0 dhcp-client6 -- set interface dhcp-client6 type=internal



ovs-vsctl show 
--------------
111dac72-04b7-4806-a881-7e057d6e3e34
    Bridge ovsbr0
        Port ovsbr0
            Interface br0
                type: internal
        Port dhcp-server
            Interface dhcp-server
                type: internal
        Port bat0
            Interface bat0
    ovs_version: "2.15.0"
--------------


ovs-vsctl add-br ovsbr0
ovs-vsctl add-port ovsbr0 bat0
ovs-vsctl add-port ovsbr0 dhcp-server -- set interface dhcp-server type=internal

isc-dhcp-server


vim /etc/default/isc-dhcp-server
--------------------------------
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf 
DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf 
DHCPDv4_PID=/var/run/dhcpd.pid 
DHCPDv6_PID=/var/run/dhcpd6.pid 
INTERFACESv4="dhcp-server" 
INTERFACESv6="dhcp-server"
--------------------------------


cat /etc/dhcp/dhcpd.conf
------------------------
authorative;
ddns-update-style none;
option domain-name "mesh.inc";
option domain-name-servers 10.50.50.1;
option routers 10.50.50.1;
default-lease-time 600;
max-lease-time 7200;
#authoritative;
log-facility local7;

subnet 10.50.50.0 netmask 255.255.255.0 {
    range 10.50.50.100 10.50.50.200;
}
------------------------



cat /etc/dhcp/dhcpd6.conf
------------------------
authorative;
default-lease-time 1200;
max-lease-time 7200;

option dhcp6.domain-search "mesh.inc";
option dhcp6.name-servers  2002:db:a::1;

log-facility local7;

subnet6 2002:db:a::/64 {
    range6 2002:db:a::100 2002:db:a::300;
}
------------------------


radvd

vim  /etc/radvd.conf
--------------------
interface dhcp-server
{
  AdvSendAdvert on;
  MaxRtrAdvInterval 30;

  prefix 2002:db:a::1/64
  {
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr off;
    AdvValidLifetime 300;
    AdvPreferredLifetime 120;
  };
};
--------------------

dnsmasq / off dns

!!! Естественно dnsmasq не может работать вместе с isc-dhcp-server/radvd
vim /etc/dnsmasq.conf
---------------------

#interface=ovsbr0
#listen-address=10.10.10.1
#dhcp-range=10.10.10.2,10.10.10.254,255.255.255.0,12h


port=0 #dns off
interface=dhcp-server
enable-ra
dhcp-range=192.168.25.2,192.168.25.150,255.255.255.0,12h
#dhcp-host=80:15:AA:BB:CC:DD,192.168.0.10
dhcp-range=d::2, d::ffff:ffff:ffff:ffff, 64, 12h
dhcp-range=d::2, slaac, 64, 12h
dhcp-range=d::2, ra-only, 64, 12h
---------------------



bind

cd /etc/bind/

cat 10.50.50.in-addr.arpa.zone
------------------------------
$TTL 30
$ORIGIN 10.50.50.in-addr.arpa.
@ SOA b1-node.mesh.inc. root.b1-node.mesh.inc. (
20120200
1h
10m
1d
30 )

  NS b1-node.mesh.inc.

1 PTR b1-node.mesh.inc.
;20 PTR win2003.mesh.inc.
;30 PTR win2008.mesh.inc.
;120 PTR winxp.mesh.inc.
------------------------------

cat mesh.inc.zone
----------------- 
$TTL 30
$ORIGIN mesh.inc.
@ SOA b1-node root 2022040801 1h 10m 1d 30
  NS b1-node
  MX 10 b1-node
 
b1-node A 10.50.50.1
;winxp A 10.10.10.120
;win2003 A 10.10.10.20
;win2008 A 10.10.10.30
-----------------


cat named.conf.options
----------------------
options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable 
        // nameservers, you probably want to use them as forwarders.  
        // Uncomment the following block, and insert the addresses replacing 
        // the all-0's placeholder.

        forwarders {
                192.168.1.1;
                8.8.8.8;
                8.8.4.4;         
         };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        listen-on-v6 { none; };
};
----------------------


cat named.conf.local
--------------------
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";


zone "mesh.inc" {
type master;
file "/etc/bind/mesh.inc.zone";
allow-transfer { 127.0.0.1 ; };
};
 
zone "10.50.50.in-addr.arpa" {
type master;
file "/etc/bind/10.50.50.in-addr.arpa.zone";
};
--------------------
Рубрики
network \ сеть

debian / ethtool / net tweak / производительность сетевой карты

ссылка

https://wiki.mikbill.pro/billing/howto/accel_nic_settings
https://wiki.mikbill.pro/billing/howto/irq_affinity

Настройки сетевой карты /etc/network/interfaces

auto eth0
iface eth0 inet static
	address x.x.x.x
	netmask y.y.y.y
	pre-up /sbin/ifconfig $IFACE txqueuelen 1000 > /dev/null 2>&1;\
	       /sbin/ethtool --offload $IFACE rx off tx off > /dev/null 2>&1;\
	       /sbin/ethtool -K $IFACE rxvlan off txvlan off > /dev/null 2>&1;\
	       /sbin/ethtool -G $IFACE rx 2048 tx 2048 > /dev/null 2>&1;\
	       /sbin/ethtool -A $IFACE autoneg off rx off tx off > /dev/null 2>&1;\
	       /sbin/ethtool -K $IFACE tso off gso off gro off lro off > /dev/null 2>&1

Рассмотрим каждую команду более подробнее:

Длина очереди передачи.
В современных сетях для 1G используется значение 1000, для 10G используется значение 10000.
/sbin/ifconfig eth0 txqueuelen 1000

Отключаем checksum offload для правильной работы шейперов
/sbin/ethtool --offload eth0 rx off tx off

Отключаем аппаратную поддержку 802.1q
/sbin/ethtool -K eth0 rxvlan off txvlan off

Увеличивает размер буфера, чтобы избежать дропов.
Убедитесь, что ваша сетевая поддерживает такой размер буфера выполнив ethtool -g ethX
/sbin/ethtool -G eth0 rx 2048 tx 2048

Отключает авто определение скорости порта
/sbin/ethtool -A eth0 autoneg off rx off tx off

Отключим оффлоады для лучшей производительности TCP
/sbin/ethtool -K eth0 tso off gso off gro off lro off


Рубрики
network \ сеть

bond linux

Ссылки:

Link aggregation between Juniper and Linux
https://askubuntu.com/questions/1112288/netplan-configuring-2-vlan-on-same-bonding https://habr.com/ru/post/58218/ ## error An illegal loopback occurred on adapter https://support.mellanox.com/s/article/MLNX2-117-999kn

Необходимо поставить пакет:

apt-get install ifenslave 
apt-get install ifupdown

Проверяем:

lsmod | grep bonding
modprobe bonding
ip link show
cat /proc/net/bonding/bond0

Опция в ядре linux:

CONFIG_BONDING=m

Режимы bond:

mode=0 (balance-rr)
Последовательно кидает пакеты, с первого по последний интерфейс.

mode=1 (active-backup)
Один из интерфейсов активен. 
Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. 
Не требует дополнительной настройки коммутатора

mode=2 (balance-xor)
Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. 
Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.

mode=3 (broadcast)
Все пакеты на все интерфейсы

mode=4 (802.3ad)
!!! В случае ошибок (An illegal loopback occurred on adapter) поменяй на другой режим, например (mode 1).
Link Agregation — IEEE 802.3ad, требует от коммутатора настройки.

mode=5 (balance-tlb)
Входящие пакеты принимаются только активным сетевым интерфейсом, исходящий распределяется в зависимости от текущей загрузки каждого интерфейса.
Не требует настройки коммутатора.

mode=6 (balance-alb)
Тоже самое что 5, только входящий трафик тоже распределяется между интерфейсами. Не требует настройки коммутатора, но интерфейсы должны уметь изменять MAC.

Пример конфига /etc/network/interfaces для bond:

auto eth1
iface eth1 inet manual
    bond-master bond0

auto eth2
iface eth2 inet manual
     bond-master bond0

auto bond0
iface bond0 inet static
     address 10.10.12.2
     netmask 255.255.255.0
     #bond-mode 802.3ad
     bond-mode 4
     bond-miimon 100
     bond-lacp-rate 1
     bond-slaves eth1 eth2

Пример конфига /etc/network/interfaces для bond (debian 11 202207):

Наблюдалась проблема работы режимов 4 и 802.3ad, перевел на bond 1

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
 
auto bond0
iface bond0 inet static
     address 10.0.0.2/24
     bond-mode 1
     bond-miimon 100
     bond-lacp-rate 1
     bond-slaves ens4 ens5

Проверка работы bon0

cat /proc/net/bonding/bond0

Бонд в режиме балансировки:

auto bond0
iface bond0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4
    bond-slaves eth0 eth1
    bond-mode 802.3ad
    bond-miimon 100
    bond-xmit-hash-policy layer3+4

auto eth0
iface eth0 inet manual
    bond-master bond0

auto eth1
iface eth1 inet manual
    bond-master bond0

Рубрики
network \ сеть Конспект

Конспект: ipv6 / disable / enable / setup / ip / ip6tables / ping / systemd-networkd

Сравнение ipv4 и ipv6

https://en.wikipedia.org/wiki/IPv6_address
________________________________________________________________________________________________________________________
|                                                           |                                                          |
| IPv4 = /32 (8 + 8 + 8 + 8)                                |  IPv6 =/128 бит (16+16+16+16+16+16+16+16)                |
|      000.000.000.000                                      |   0000:0000:0000:0000:0000:0000:0000:0000                |
|      255.255.255.255                                      |   ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff                |
|                                                           |                  ::                                      |
|___________________________________________________________|__________________________________________________________|
| Это иерархический адрес из 2-х частей: Сетевая/Узловая    | В IPv6 нет широковещательных адресов.                    |
|___________________________________________________________|__________________________________________________________|  
| Типы адресов:                                             | Типы адресов:                                            |
| 1. Сетевой                                                | 1. Индивидуальные                                        |              
| 2. Адрес узлов                                            | 2. Групповые                                             |           
| 3. Широковещательные адреса                               | 3. Произвольные                                          |              
|___________________________________________________________|__________________________________________________________|
| 0.0.0.0 - 223-225.255.255 - одноадресный диапазон ipv4    | FC00::/7-FDFF/7 - Уникальные локальные                   |                       
| 224.0.0.0 - 239.255.255.255 - многоадресный диапазон ipv4 | FF00::/8 - Групповые                                     |                        
| 224.0.0.0 - 224.0.0.255 - много адресный диапазон для ЛС  | FE80::/10-FEBF/10 - Локальные адреса канала              |
|       ЛС - локальная сеть                                 |                                                          |
| 224.0.0.9 - RIP (резерв)                                  |                                                          |
|___________________________________________________________|__________________________________________________________|  
| Частные IPv4(RFC-1918):                                   | Что то типа частных:                                     |
| 10.0.0.0 - 255.255.255.255 (10.0.0.0/8)                   | 2001:DB8 - тестовая сеть                                 |
| 172.16.0.0 - 172.31.255.255 (172.16.0.0/12)               | fc00::/7 - Уникальные локальные адреса (ULA)             |
| 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)            | fc00:: до fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff        |
|                                                           | предназначены для локальной связи                        |
|                                                           | 2001:0DB8::/32 - РЕЗЕРВ для примеров                     |
|___________________________________________________________|__________________________________________________________|
|  Loopback  / петля                                        |   loopback - из 0, последний бит - 1                     |
| 127.0.0.1 - 127.255.255.254 (/8)                          |   ::1/128                                                |       
|                                                           |   ::1                                                    |
|___________________________________________________________|__________________________________________________________|
|  APIPA / не работает dhcp                                 |     FE80:: - LINK-LOCAL                                  |
|  169.254.0.1 - 169.254.255.254 (169.254.0.0/16)           | адрес формируется на основе так                          |
|                                                           | называемого «идентификатора интерфейса» IEEE EUI-64      |
|                                                           | где в середину добавляют байты 0xFF и 0xFE               |
|                                                           | MAC адреса 00:21:2F:B5:6E:10                             |
|                                                           | получится EUI-64 02:21:2F:FF:FE:B5:6E:10                 |
|                                                           |                                                          |
|___________________________________________________________|__________________________________________________________|
|   Неопределённый адрес                                    | Неопределённый адрес / (невозможно назначить интерфейсу) |
|   0.0.0.0                                                 |   ::/128                                                 |
|                                                           |   (::)                                                   |
|___________________________________________________________|__________________________________________________________|
| Адреса TEST-NET:                                          |   Default route                                          |
|                                                           |    ::/0                                                  |
| 192.0.2.0 - 192.0.2.255 (192.0.2.0/24)                    |                                                          |
| Экспериментальные:                                        | Глобальный адрес - обычный адрес, видимый всему Интернету|
| 240.0.0.0 - 255.255.255.254(/?)                           | 2000::/3 глобальное пространство                         |
| Классовые:                                                | 001 - 200:/3 - Глобальные / Global                       | 
| A 0.0.0.0 - 127.0.0.0/8 (Крупные)                         | от 2000:: до 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff     |
| B 128.0.0.0 - 191.255.0.0/16 (Средние)                    |                                                          |
| C 192.0.0.0 - 223.255.255.0/24 (Малые)                    |                                                          |
| D 224.0.0.0 - 239.0.0.0 (Групповые)                       |                                                          | 
|                                                           | ::ffff:0:0:0/96 - используемый преобразованных в IPv4    |  
|                                                           | 64:ff9b::/96  и  64:ff9b:1::/48  Адреса с этим префиксом |
|                                                           |  используются для автоматической трансляции IPv4/IPv6    |
|                                                           |                                                          | 
|                                                           | 100::/64 - используется для отбрасывания трафика         |
|___________________________________________________________|__________________________________________________________|

Отличие ipv6 от ipv4 и коротко об особенностях ipv6:


IP-адреса будут иметь длину 128 бит (а не 32 как в IPV4). 
При записи в традиционном формате IP-адрес будет выглядеть так:
abcd:0017:2ff:12aa:2222:783:00dd:1234

32 шестнадцатеричных значения
: - хекстет
0000:0000:0000:0000:0000:0000:0000:0000
 

Очевидно, что такие записи неудобны на практике. 
Ради экономии места адреса IPv6 будут разбиваться символом хекстет(:)
на группы шестнадцатеричных чисел (не более восьми групп), например, так:
abcd:17:2ff:12aa:2222:783:dd:1234

Чтобы не нужно было писать лишнего, используется символ ::, который является сокращенной формой для нескольких нулевых групп:
abcd:17:0:0:0:0:dd:1234 -> axd:17::dd:1234 
0:0:C:0:0:783:dd:1234 3 ->  ::783:dd:1234

При отображении адресов IPv4 в формате IPv6 первые шесть групп являются нулевыми. 
Оставшиеся две группы можно записывать не только в шестнадцатеричной но и в более привычной десятичной системе:
Адрес IPv4:  ::110.111.112.113

Для localhost существует более компактная запись — ::1.

::/128 - текущий хост

::/0 - маршрут по умолчанию

::1/128 - обратная петля (loopback)

Зарезервированные адреса многоадресной рассылки(multicast):
Multicast - ff00::/8 - адреса групповой рассылки
FF02::1 - все устройства
FF02::2 - все маршрутизаторы
FF02::1:2 - все DHCPv6 серверы
FF02::1:FFxx:xxxx/104 - solicited-node multicast, группа узлов, у которых совпадают последние 24 бита (xx:xxxx) из unicast адреса
FF02::5 - группа маршрутизаторов с протоколом OSPFv3
FF02::6 - группа маршрутизаторов с протоколом OSPFv3


Сеть для эксперементов:
2001:db8:0000:0000:0000:0000:0000:0001
_____________|____|___________________
Network ID Subnet Interface ID
адреса из области 2001:0DB8::/32 предназначены для использования в экспериментах


ipv6 маска сети:
!!! ipv6 нету маски используется \ вместо этого длина префикса
Провайдеры выдают сеть /48
Длина префикса от 0 - до 128
Стандартная длина префикса /64 (Можно использовать другой но windows хочет /64)



Существует три типа IPv6–адресов:
# Unicast (индивидуальный) – Служит для определения интерфейса на устройстве под управлением протокола IPv6
одноадресная рассылка (unicast) - один пк на другой 
 
# Multicast (Групповой) – Используется для отправки пакетов по нескольким адресам назначения 
(Заменил собой Broadcast адрес, имеется IPv6- адрес для всех узлов, который дает аналогичный результат.)
многоадресная рассылка (multicast) - на группу пк (iptv)
 
# Anycast (Произвольный) – Любой индивидуальный адрес, который может быть назначен нескольким устройствам. 
Пакет, отправляемый на адрес произвольной рассылки, направляется к ближайшему устройству с этим адресом.
адрес любого узла из группы (anycast) - любой адрес из группы 
Примечание. Протокол IPv6  не содержит адресов широковещательной рассылки (broadcast)


Начальные цифры адресов IPv6:
Глобальные: 2 или 3
Локальный: FD
Локальный канал связи: FE80
Групповой: FF



Еще разок про IPV6-адрес
Разберем адрес:
2001:0DB8:ACAD:0002::/64
___________________________________________________________________________________________________
|48бит                              |16бит                    |64бит                               |
|Префикс глобальной маршрутизации   |Идентификатор подсети    |Идентификатор интерфейса/Адрес хоста|
|2001:0DB8:ACAD                     |:0002:                   |:/64                                |
|___________________________________|_________________________|____________________________________|
                                                               /64
48бит - выдается региональным регистратором (RIR)
16бит - выдается провайдером
64бит - локальная сеть клиента, где он может делать все что угодно

2001:0DB8:ACAD:0002::/64
2001:0DB8:ACAD:0003::/64

Разбиение на подсети с использованием идентификатора подсети: 
Как вы помните, блок IPv6-адресов с префиксом /48 содержит 16 бит идентификатора подсети, как показано на рисунке. 
Разбиение на подсети с использованием 16 бит идентификатора подсети даёт 65 536 возможных подсетей /64. 
Поэтому нет необходимости заимствовать биты из идентификатора интерфейса или узловой части адреса. 
Каждая IPv6-подсеть /64 содержит примерно 18 квинтиллионов адресов, что, как очевидно, гораздо больше, чем когда-либо понадобится в одном сегменте IP-сети.
Подсети, созданные из идентификатора подсети, легко представить, поскольку не нужно выполнять преобразование в двоичный формат. 
Чтобы определить следующую доступную подсеть, достаточно рассчитать следующее шестнадцатеричное число.
Необходимо применить расчёт части идентификатора подсети в шестнадцатеричной системе счисления.
Префикс глобальной маршрутизации является одинаковым для всех подсетей. 
Для каждой подсети увеличивается только четырёхразрядный байт идентификатора подсети.

Типы совместного использование протоколов IPv4 и IPv6

0. Двойной стек: двойной стек позволяет протоколам IPv4 и IPv6 сосуществовать в одной сети. 
Устройства с двойным стеком одновременно работают с протокольными стеками IPv4 и IPv6
 ______
|      |              ___
|      | <--ipv6---> |   |-----> ipv6-network
|      | <--ipv4---> |___|-----> ipv4-network
|______|             router
  PC

1. Туннелирование — это способ транспортировки IPv6-пакетов через IPv4-сеть. 
IPv6-пакет инкапсулируется внутри IPv4-пакета, как и другие типы данных

                    ______    transit network     ____           
ipv4-network <----->|____| --------tunel---------|____|<----->ipv4-network
                    router     ipv6 network      router

2. Преобразование — преобразование сетевых адресов 64 (NAT64) позволяет устройствам под управлением IPv6 обмениваться данными 
с устройствами под управлением IPv4 с помощью метода преобразования, похожего на метод преобразования из NAT для IPv4. 
IPv6-пакет преобразовывается в пакет IPv4-пакет и наоборот.
                     _____
ipv6-internet -------|___| -----pc-ipv4-host
                      NAT

Основные отличия IPV6 от IPV4

1. В IPv6 нету Broadcast ARP
Broadcast частично заменили Multicast адреса и адреса Link Local. 
ARP протокол заменен протоколом NDP;
 
2. В IPv6 нет технологии NAT, которая есть в IPv4. 
Смело спорьте с тем: кто скажет обратное. 
Экономия адресов в IPv6 не используется, адресов хватит на всех. 
Уровень безопасности, который обеспечивает NAT в технологии IPv4, заменен адресами Unique Local, 
но нельзя забывать, что безопасность должны обеспечивать межсетевые экраны - это их функция. 
Название Nat64 которое можете встретить в литературе про IPv6, идет речь о совместном использовании технологии IPv6, IPv4.
 
3. Благодаря Link Local адресам сетевые устройства могут общаться в пределах одного локального канала и только в пределах его.
 
4. Появилась фича которая называется: «проверка уникальности IPv6 адреса». 
Используется в DHCPV6, полный процесс будет описан чуть ниже. 
Суть ее в том, что после назначения ip-адреса устройству он посылает icmp запрос, destination выбирает данный ему адрес, 
если приходит ответ — то его адрес не уникален и нужно получать новый IPv6 адрес.
 
5. Появились адреса anycast. 
В сети могут существовать несколько хостов с абсолютно идентичными IPv6-адресами. 
Вариант использования, например,  несколько балансировщиков около сервера. 
Им дается один и тот же адрес, который называется anycast. 
 
6. Вендоры, такие как Cisco или Juniper, полностью готовы к переходу на IPv6, дело остается за операторами связи и ИТ-компаниями.

Ping:

ping6 -c4 -I eth0 ff02::1 - узнать какие хосты могут использовать ipv6
ping6 ::1 - пингануть локальный хост

::1 — это сокращение от 0000:0000:0000:0000:0000:0000:0000:0001. 
Любая непрерывная последовательность нулей может быть заменена 
на пару двоеточий, а любая четвёрка, состоящая из нулей,
может быть заменена на один ноль.

Подключение по SSH:

ssh phineas@fe80::221:97ff:feed:ef01%eth0
И опять же, если вы используете link-local адрес, то вы должны указать имя интерфейса 
с которого будете осуществлять подключение. 
Как показано выше, делается это путём добавления знака процента и имени интерфейса

Еще раз про типы адресов IPv6:

Калькулятор ipv6:
https://findipv6.com/ipv6-cidr-to-range
Конвертер ip4 to ipv6:
https://dnschecker.org/ipv4-to-ipv6.php

IPv6 также может показаться сложным, потому что существуют разные типы адресов. 
Подобно общедоступным, частным (RFC 1918) и адресам автоматической частной IP-адресации (APIPA) IPv4 (169.254.0.0/16), 
IPv6 имеет четыре основных типа адресов, каждый из которых выполняет свою специфическую функцию:

2000::/3 =  Global Unicast Addresses = глобальные одноадресные адреса (GUA).
Вы можете думать о них как об общедоступных интернет-адресах для прямой одноадресной связи между узлами.
Start range:
2000::
End range:
3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff


FC00::/7 = Unique Local Addresses = уникальные локальные адреса (ULA). 
Это частные адреса, которые никогда не должны использоваться в Интернете, а не через NAT.
Start range:
fc00::
End range:
fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

FE80::/10 = Link-Local Addresses  = Локальные адреса ссылок. 
Используется только для внутренней связи по локальной сети, никогда не перенаправляется маршрутизаторами.
Start range:
fe80::
End range:
febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff

FF00::/8 =  Multicast addresses  = многоадресные адреса. 
Используется для распространения пакетов «один ко многим» в пределах сети.
Start range:
ff00::
End range:
ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Давайте сосредоточим наше внимание на глобальных адресах(GUA), потому что это то, что вы собираетесь использовать для своих систем, 
выходящих в Интернет,  а также сетей и систем в пределах вашего интернет-периметра. 
Для IPv6 не требуется функциональность NAT (см. RFC 4864 ), потому что у нас множество адресов.

Уникальные локальные адреса (ULA) ( RFC 4193 ) не рекомендуются для внутренних корпоративных сетей. 
Адреса Link-local IPv6 и многоадресные адреса можно легко исследовать самостоятельно 



Пример:
Сеть для эксперементов:
2001:db8:0000:0000:0000:0000:0000:0001
_____________|____|___________________
Network ID Subnet Interface ID

адреса из области 2001:0DB8::/32 предназначены для использования в экспериментах
Start range:
2001:db8::
End range:
2001:db8:ffff:ffff:ffff:ffff:ffff:ffff

Обращение к страничкам в интернете:

При использовании IPv6-адреса в URL необходимо заключать адрес в квадратные скобки:
http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/
 
Если необходимо указать порт, то он пишется после скобок:
http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/


DHCP в ipv6

ipv6 SLAAC \ NDP \ Neighbor Discovery \ Router Discovery

Собственно адрес ipv6  128 бит делится на две части:
0. Префикс IPv6 = 64бит (Эту часть отдает DHCPv6)
1. Идентификатор интерфейса = 64бит \ (ff:fe в середину MAC) (Эта часть генерируется клиентом при EUI-64)
  
Neighbor Discovery
(знаю адрес IPv6 соседа, но не знаю канальный: как найти?)
Neighbor Solicitation (NS) - запрос канального адреса (LLA или ::(DAD) -> SNMA)
Neighbor Advertisement (NA) - ответ на такой запрос (LLA -> LLA или FF02::1(DAD))
тут же работают механизмы Duplicate Address Detection (DAD) и Neighbor UnreachabilityDetection (NUD)
 
Router Discovery
(хочу получить информацию о роутерах)
Router Solicitation (RS) - запрос информации о роутерах (:: -> FF02::2)
Router Advertisement (RA) - оповещение по расписанию о настройках IPv6 и ответ, если был принудительный запрос (LLA -> FF02::1)
 
ND использует порты udp port 547,546


Как клиент получает адрес:
На роутере настроить radvd и SLAAC!
 
Включить интерфейс
0. Генерируется Link-Local Address и рассылается сообщение Neighbor Solicitation на адрес Solicited-node Multicast для Duplicate Address Detection (адрес в состоянии tentative)
1. Рассылается сообщение Router Solicitation на адрес ff02::2
2. Роутер отвечает на Link-Local Address, что есть такие-то доступные префиксы и настройки
3. Генерируется Global Unicast Address на основе полученного префикса и рассылается сообщение Neighbor Solicitation на адрес Solicited-node Multicast
для Duplicate Address Detection (адрес в состоянии tentative)
4. Применяются настройки полученные от роутера
5. Если Duplicate Address Detection отрабатывает успешно, то адреса переходят в состояние preferred.

Для чего нужен DHCPv6?
то бы раздавать опции!
DHCPv6 нужен, т.к. в SLAAC ограничен набор предлагаемых опций.
Если вы хотите, к примеру, загрузку по сети или передавать опции NTP, то вам нужен полноценный сервер DHCPv6.
Варианты:
stateless DHCPv6 = SLAAC (сеть, префикс и шлюз) + DHCPv6 (опции);
stateful DHCPv6 (клиент принципиально не слушает RA от роутера и обращается к серверу DHCPv6).
 
radvd
Если сообщения RA рассылаются, то:
Autonomous = off (не назначаем адрес из префиксов RA)
Managed = on (запрашиваем адрес у сервера DHCPv6)
OtherConfig = on (получаем опции у сервера DHCPv6)
Если RA не рассылаются, то клиент всегда может самостоятельно обратиться к серверу DHCPv6 по FF02::1:2
Помним, что клиент отправляет сообщение с порта 546/UDP серверу на порт 547/UDP.
В идеальном случае, DHCPv6 сервер ещё добавляет соответствующие записи в зону DNS.


Кратко как всё-таки работает DHCPv6:
Вариант 1(Только SLACC):
"Я предоставляю все необходимое вам данные (префикс, длину префикса и шлюз по умолчанию)"
Вариант 2(SLAAC и DHCPv6):
Вот моя информация, но вам понадобится и другие данные, например об DNS-адресах с сервера DHCPv6"
Вариант 3(только DHCPv6):
"Я не могу вам помочь. Запросите необходимую информацию у сервера DHCPv6"

Настройка ipv6 средствами systemd-networkd

vim /etc/systemd/network/eth0.network
-------------------------------------
[Network]
# Use 'yes' instead of 'ipv6' for both ipv4 and ipv6.
DHCP=ipv6
/etc/systemd/network/lan.network
[Network]
IPv6SendRA=yes
DHCPv6PrefixDelegation=yes
-------------------------------------

Если все таки хочется задушить ipv6, используем systemd-networkd:

etc/systemd/network/40_eth0.network 
-----------------------------------
[Match]
Name=eth0
[Network]
LinkLocalAddressing=ipv4 # вот эта строка отключает работу ipv6 на интерфейсе
DHCP=ipv4
#DHCP=yes # по умолчанию просит настройки ipv6 вместе с ipv4
----------------------------------

Еще примеры настройки сети используя systemd-networkd:


cat > /etc/systemd/network/10-eth-static.network << "EOF"
[Match]
Name=
[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
DNS=192.168.0.1
Domains=
EOF

cat > /etc/systemd/network/10-eth-dhcp.network << "EOF"
[Match]
Name=
[Network]
DHCP=ipv4
[DHCP]
UseDomains=true
EOF

cat > /etc/systemd/network/10-ether0.link << "EOF"
[Match]
# Change the MAC address as appropriate for your network device
MACAddress=12:34:45:78:90:AB
[Link]
Name=ether0
EOF

cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain 
nameserver 
nameserver 
# End /etc/resolv.conf
EOF

Ручное управление ipv6 программой ip:

 
ifconfig eth0 | grep "inet6 addr:" посмотреть адрес
ip -6 addr add 2001::1/64 dev eth0  - назначить адрес
ip -6 addr del 2001::1/64 dev eth0  - удалить адрес

firewall

Управляется так де как и iptables 
# ip6tables -P OUTPUT DROP
# ip6tables -p INPUT DROP
# ip6tables -p FORWARD DROP

Включения forward для ipv6:

временно до перезагрузки:
sysctl -w net.ipv6.conf.all.forwarding=1 - вкл маршрутизации ipv6
Проверка:
cat /proc/sys/net/ipv6/conf/eth0/forwarding проверка включения маршрутизации ipv6

Для постоянно нужно отредактировать файл /etc/sysctl.conf и раскоментировать строку:
net.ipv6.conf.all.forwarding = 1 

Основной вариант отключения IPV6

 
0. В файле /etc/sysctl.conf вставляем следующие строки -
nano /etc/sysctl.conf 
---------------------
#disable ipv6 settins
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.enp1s0.disable_ipv6 = 1
--------------------
Сохраняем файл.

1. Применяем:
sysctl -p


P.S. аналогичное в windows
Отключение 6to4
netsh int 6to4 set st disabled

вариант 2

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1

вариант 3

sudo vi /etc/default/grub
-------------------------
GRUB_CMDLINE_LINUX = "ipv6.disable = 1"
-------------------------
sudo update-grub2

Обще доступные серверы DNS для ipv6:

DNS Google	Базовый	2001:4860:4860::8888	
DNS Google	Базовый	2001:4860:4860::8844
DNS Google      Базовый	2a02:6b8::feed:0ff
DNS Google      Базовый 2a02:6b8:0:1:feed::0ff
 
DNS Яндекс      Безопасный	2a02:6b8::feed:bad
DNS Яндекс      Безопасный	2a02:6b8:0:1::feed:bad
DNS Яндекс      Семейный	2a02:6b8::feed:a11 - адрес семейного сервера (не выдаются адреса с контентом 18+)
DNS Яндекс      Семейный	2a02:6b8:0:1::feed:a11 - адрес семейного сервера (не выдаются адреса с контентом 18+)

Пример записи ipv6 в /etc/network/interfaces

auto ens5 
iface  ens5 inet6 static 
            address 2001:db8::1/64

cisco

ipv6 unicast-routing

Рубрики
network \ сеть

debian / GATEWAY/ FORWARD / NAT / DNS / DHCP

Настройка сети

 
Для настройки сети, отредактируйте: 
/etc/network/interfaces - интерфейсы
/etc/resolv.conf - днс 
/etc/hostname - имя пк
/etc/hosts - статический днс

Настройки интерфейса который получает интернет

 
nano /etc/network/inerfaces
---------------------------
auto eth0 - автоматически определить интерфейс
iface eth0 inet static - статический IP адрес 
address 192.168.3.112 - адрес интерфейса
netmask 255.255.255.0 - маска сети
gateway 192.168.3.1 - шлюз
dns-nameservers 8.8.8.8 - указываем DNS сервер
dns-search CORP.NAME.local 
dns-domain CORP.NAME.local
-------------------------

Настройка интерфейс который его раздает

 
-----------------------
auto eth1
iface eth1 inet static
address 192.168.25.1/24
----------------------

DNS

 
/etc/resolv.conf - внимание на данный момент во всех дистрибутивах этот файл генерируется в resolfconf (head, base, tail) и из настроек сетевой карты
nano /etc/resolvconf/resolv.conf.d/head - настройка DNS
---------------------
search name_dns.server 
nameserver 10.1.1.1 
nameserver 8.8.8.8
---------------------
resolvconf -u - команда обновит настройки DNS без перезагрузки

NAT / FORWARD / MASQUERADE

0. Откроем файл /etc/sysctl.conf
sudo nano /etc/sysctl.conf

1. Найдём строку net.ipv4.ip_forward=0 и заменим её на net.ipv4.ip_forward=1
Если строчка закомментирована – то раскомментируйте её, если ее нет то создаем ее.

2. Теперь применим только что отредактированный конфиг:
sudo sysctl -p

3. Теперь осталось указать системе, что делать с трафиком, который прилетает на наш шлюз.
В нашем примере шлюз соединяется с интернетом через eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

dhcp:

!!! вместо dnsmasq можно установить  isc-dhcp-server
Для того, чтобы локальные компьютеры автоматически получали параметры, 
необходимые для работы в сети TCP/IP, устанавливаем DHCP-сервер.

sudo apt install dnsmasq

Теперь редактируем конфигурационный (/etc/dnsmasq.conf) файл DHCP-сервера:
nano /etc/dnsmasq.conf
----------------------
interface=eth1
dhcp-range=192.168.25.2,192.168.25.150,255.255.255.0,12h
----------------------

где:
dhcp-range - диапазон выдаваемых адресов от 192.168.0.2 до 192.168.0.150
маска под сети 255.255.255.0
аренда сроком на 12 часов

Пере запускаем сервер:
sudo /etc/init.d/dnsmasq restart
Рубрики
network \ сеть

debian настройка сети / network / inerfaces

Настройка сети

 
https://wiki.debian.org/ru/NetworkConfiguration

Для настройки сети, отредактируйте: 
/etc/nsswitch.conf - важный файл, здесь задаётся порядок использования DNS, аутентификации и т.д.

/etc/network/interfaces - конфиг сетевых настроек
/etc/resolv.conf - днс  DNS
/etc/hostname - имя пк
/etc/hosts - статический днс


less /usr/share/doc/network-manager/README.Debian - документация
/etc/dbus-1/event.d/25NetworkManager restart - перечитать/перезагрузить  конфигурацию сети
/etc/init.d/networking restart - перечитать/перезагрузить  конфигурацию сети
/etc/init.d/networking stop - остановить сетевые интерфейсы
/etc/init.d/networking  start - запуск сетевых интерфейсов

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

 
nano /etc/network/inerfaces
---------------------------
allow-hotplug eth0 - автоматически определить интерфейс
iface eth0 inet static - статический IP адрес 
address 192.168.3.112 - адрес интерфейса
netmask 255.255.255.0 - маска сети
gateway 192.168.3.1 - шлюз
dns-nameservers 8.8.8.8 - указываем DNS сервер
dns-search CORP.NAME.local 
dns-domain CORP.NAME.local
auto eth0
-------------------------

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

    allow-hotplug eth0
    iface eth0 inet dhcp
    auto eth0

Рубрики
network \ сеть

Port knocking / icmp knoking

Ссылки:

https://putty.org.ru/articles/port-knocking
https://habr.com/ru/companies/inDrive/articles/673976/
http://www.portknocking.org/




https://ipset.netfilter.org/iptables.man.html
https://ipset.netfilter.org/ipset.man.html
https://ipset.netfilter.org/iptables-extensions.man.html


iptables: конспект / iptables / conntrack / NAT / sysctl
Конспект: mikrotik firewall

knockd

0. Сервис knockd служит для прослушивания любого порта и выполнения любой команды commnad.
apt install -y knockd


1. Настройка:
vim /etc/knockd.conf 
--------------------
[options]
 UseSyslog
 Interface = enp3s0

[SSH]
 sequence    = 7000,8000,9000
 seq_timeout = 5
 tcpflags    = syn
 start_command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 45916 -j ACCEPT
 stop_command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 45916 -j ACCEPT
 cmd_timeout   = 60
---------------------

Interface
вы можете определить, какой интерфейс прослушивать в случае, если в вашей системе он не является единственным.

Значение параметра sequence определяет последовательность. Числа являются номерами TCP-портов. 
Также, вы можете явно указать, TCP или UDP порт использовать, при помощи суффиксов :tcp и :udp. 
Например:
sequence = 3333:tcp,9999:udp,1010:udp,8675:tcp

Значение параметра seq_timeout задаёт максимальное время в секундах, которое отводится на совершение клиентом последовательности подключений. 
Если клиент не укладывается в это время — подключение будет отклонено.

Значение параметра command определяет путь и параметры вызываемой программы в случае обнаружения корректной последовательности.

Параметром tcpflags вы можете определять, какие флаги должны иметь пакеты, участвующие в последовательности. 
Несколько флагов необходимо разделять запятой:
tcpflags = syn,ack,urg

А для явного исключения отельных флагов нужно использовать восклицательный знак:
tcpflags = syn,!ack,urg

Параметр start_command по смыслу идентичен параметру command. 
Значение параметра cmd_timeout определяет временной интервал в секундах, по истечении которого запустится команда, 
определённая значением параметра stop_command. 
Таким образом, вы можете открывать определённый порт лишь на некоторый промежуток времени.




2. Автозапуск:
ip a - имя интерфеса
vim /etc/default/knockd
-----------------------
START_KNOCKD=1
KNOCKD_OPTS="-i enp3s0"
-----------------------
Здесь enp3s0 это сетевой интерфейс на котором работает программа knockd.

systemctl start knockd
systemctl enable knockd
systemctl status knockd

Собственно а как стучать в порты?!

!!! Port Knocking  есть строенный в PuTTY

Программа knock для постукивания в порт:
knock 10.0.1.100 3333:tcp 9999:udp 1010:udp 8675:tcp

Программа nmap:
for x in 7000 8000 9000; do nmap -Pn --max-retries 0 -p $x 10.10.0.12; done 


Для windows:  
ping -l 2 -n 5 10.0.0.25 - при такой команде будет послано пять пакетов размером 2 на адрес 10.0.0.5
Для linux: 
ping -s 2 -c 5 10.0.0.25 - - при такой команде будет послано пять пакетов размером 2 на адрес 10.0.0.5

icmp knoking / iptables / ipset


Пример правил в iptables:
iptables -N INPUT_NEW
iptables -N PORTKNOCKING
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate NEW -j INPUT_NEW
iptables -A INPUT_NEW -j PORTKNOCKING
iptables -A INPUT_NEW -p tcp -m tcp --dport 22 -m set --match-set knock_allow src,src -j ACCEPT
iptables -A PORTKNOCKING -p icmp --icmp-type 8 -m connbytes --connbytes 500:500 --connbytes-mode bytes --connbytes-dir original -m set --match-set knock_step_2 src -j SET --add-set knock_allow src,src --exist
iptables -A PORTKNOCKING -p icmp --icmp-type 8 -m connbytes --connbytes 1028:1028 --connbytes-mode bytes --connbytes-dir original -m set --match-set knock_step_1 src -j SET --add-set knock_step_2 src
iptables -A PORTKNOCKING -p icmp --icmp-type 8 -m connbytes --connbytes 999:999 --connbytes-mode bytes --connbytes-dir original -j SET --add-set knock_step_1 src
iptables -P INPUT DROP

Создание списков:
ipset create knock_allow hash:net,iface timeout 60
ipset create knock_step_1 hash:ip timeout 2
ipset create knock_step_2 hash:ip timeout 2

Вот так пингуем:
ping -l 971 -w 100 -n 1 mysrv.com; ping -l 1000 -w 100 -n 1 mysrv.com; ping -l 472 -w 100 -n 1 mysrv.com; ssh mysrv.com

Mikrotik port knoking icmp

!!! может быть полезно для создания portknoking
!!! по умолчанию размер пакета ping равен 28
!!! Для windows:  ping -l 2 -n 5 10.0.0.25 - при такой команде будет послано пять пакетов размером 2 на адрес 10.0.0.5
!!! Для linux: ping -s 2 -c 5 10.0.0.25 - - при такой команде будет послано пять пакетов размером 2 на адрес 10.0.0.5

/ip firewall filter
add action=add-src-to-address-list address-list=ping_size_2_me address-list-timeout=10m chain=input in-interface-list=WAN packet-size=30 protocol=icmp


Рубрики
network \ сеть

route \ маршрутизация

ip route - узнать какой шлюз используется по умолчанию
route print - таблица маршрутизации

traceroute -I ya.ru - использование ICMP для отслеживания маршрутов
traceroute -p 25 ya.ru - использование ICMP и 25 порта для отслеживания маршрутов
traceroute -n ya.ru - отключить разрешение имен при отслеживании маршрутов 
tracepath ya.ru - использование UDP для отслеживания маршрутов

route - отобразить информацию о локальной маршрутизации
route -n  - отобразить таблицу маршрутизации  без DNS-преобразований
route add default gw 10.0.0.20
route add -net 192.168.0.0 netmask 255.255.255.0 eth0 - добавление маршрута (выбрали шлюз интерфейс eth0)
route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.100 - добавление маршрута  (выбрали шлюз IP)
route del -net 192.168.0.0 netmask 255.255.255.0  - удалить маршрут

ip route show - показать основную информацию о маршрутах
ip r - показать основную информацию о маршрутах
ip r add 192.168.0.0/24 via 10.0.0.100 dev eth0 - добавление маршрута
ip r add 102.168.0.0/24 via 10.0.0.100 - добавление маршрута
ip r del 192.168.0.0/24 - удалить маршрут
Рубрики
network \ сеть

ARP \ MAC \ соответствие MAC/IP

arp -v - отобразить записи ARP (соответствие MAC/IP)
arp -vn - отобразить записи ARP (соответствие MAC/IP) 
arp -d 10.0.0.50 - удалит запись 10.0.0.50 из кеша arp
arp -s 10.0.0.51 00:0B:6A:02:EC:95 - добавить IP и MAC-адреса в ARP

ip neighbor - отобразит записи ARP
ip nei - отобразит записи ARP
ip n - отобразит записи ARP
ip n del 10.0.0.50 dev eth0 - удалить запись с IP 10.0.0.50 из таблицы ARP у eth0
ip n add 10.0.0.51 lladdr 00:0B:6A:02:EC:95 dev eth0 - добавить запись с IP/MAC 

arping 10.0.0.50 - опросить локальную сеть если такой IP и какой у него MAC
arping -f 10.0.0.50 - опросить IP и остановиться после получения первого ответа
arping -c 2 10.0.0.51 - опросить IP и остановиться после двух раз


Рубрики
network \ сеть

ping \ проверка доступности хоста

ping 10.0.0.1 - проверяем доступность 10.0.0.1
ping -a 10.0.0.1 - проверяем доступность 10.0.0.1 (по мере пингования звуковой эффект)
ping -c 4 10.0.0.1 - проверяем доступность 10.0.0.1 (4 раза)
ping -q -c 5 10.0.0.1 - проверяем доступность 10.0.0.1 (отобразит сводку)
ping -f 10.0.0.1 - проверяем доступность 10.0.0.1 (посылает большое кол-во пакетов (флуд))
ping -i 3 10.0.0.1 - проверяем доступность 10.0.0.1 (интервал 3 секунды)
ping -I eth0 10.0.0.1 - проверяем доступность 10.0.0.1 (используя источник eth0)
ping -I 10.0.0.155 10.0.0.1 - проверяем доступность 10.0.0.1 (используя источник 10.0.0.155 )
ping -s 1500 10.0.0.1 - проверяем доступность 10.0.0.1 (размер пакетов 1500 байт) (по умолчанию 56 байт)
Рубрики
network \ сеть

DNS \ dig \ host \ resolv ip \ преобразование сетевого имени в ip

Для чего нужны DNS-серверы:

Domain Name System
DNS - преобразует имя домена  в ip адрес.

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

Служба доменных имён работает благодаря DNS-cерверам.
Именно эти жизненно важные «программы» хранят таблицы соответствий вида «имя домена» — «IP-адрес». 
Кроме того, DNS-серверы служат для хранения ресурсных записей доменов.
В интернете огромное количество DNS-серверов и каждый выполняет свою функцию в общей системе. 
Служба Domain Name System необходима для того, чтобы мы могли без проблем находить свои любимые сайты, не запоминая вереницы цифр.

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

Основные записи:

А - IP-адрес веб-ресурса, который соответствует определённому имени домена
Запись A (address) - одна из ключевых ресурсных записей Интернета. 
Она нужна для связи домена с IP-адресом сервера. 
Пока не прописана А-запись, ваш сайт не будет работать.
site.ru         A       123.123.123.123
shop.site.ru    A       123.123.123.123

CNAME - указывает аналог основному доменному имени. 
Эта запись чаще всего используется для прикрепления поддомена.
CNAME (Canonical name) - запись, которая отвечает за привязку поддоменов (например, www.site.ru) к каноническому имени домена (site.ru) или другому домену.
Основная функция CNAME - дублирование ресурсных записей домена (A, MX, TXT) для различных поддоменов.
www.site.ru     CNAME    site.ru
mail.site.ru    CNAME     webmail.hosting.reg.ru

MX - адрес почтового сервера
Это запись, отвечающая за сервер, через который будет работать почта. 
Записи MX критически важны для работы почты. 
Благодаря им отправляющая сторона «понимает», на какой сервер нужно отправлять почту для вашего домена.
site.ru         MX   10  mx1site.ru
site.ru         MX   15  mx2.site.ru


NS - адрес DNS-сервера, где хранятся все ресурсные записи
NS - запись (Authoritative name server) указывает на DNS-серверы, которые отвечают за хранение остальных ресурсных записей домена. 
Количество NS записей должно строго соответствовать количеству всех обслуживающих его серверов. 
Критически важна для работы службы DNS.


TXT - любая текстовая информация о домене
TXT (Text string) - запись, которая содержит любую текстовую информацию о домене


SPF - список серверов, которым позволено отправлять письма от имени указанного домена

SOA - исходная запись зоны, в которой указаны сведения о сервере

Запись PTR
PTR - обратная DNS-запись, которая связывает IP-адрес сервера с его каноническим именем (доменом).
PTR-запись применяется для фильтрации почты.


Список 13 корневых серверов:

Официальная информация о том, где находится и кому принадлежит тот или иной действующий корневой DNS-сервер, публикуется на сайте Ассоциации операторов Корневых серверов DNS.
Чтобы повысить устойчивость системы, были созданы копии основных серверов в разных странах. Таким образом, корневых серверов стало 123.
DNS-серверы расположены согласно интенсивности использования интернет-инфраструктуры.

Хост	Оператор
a.root	VeriSign, Inc.
b.root  Information Sciences Institute
c.root  Cogent Communications
d.root  University of Maryland
e.root  NASA Ames Research Center
f.root  Internet Systems Consortium, Inc.
g.root  Defense Information Systems Agency
h.root  U.S. Army Research Lab
i.root  Netnod
j.root  VeriSign, Inc.
k.root  RIPE NCC
l.root  ICANN
m.root  WIDE Project

Как работают DNS-серверы в браузерах:

0. 
Когда вы вводите в строке браузера доменное имя, например, "b14esh.com" , браузер ищет на вашем локальном компьютере файл hosts. 
Допустим, в этом файлe есть запись для введённого доме, сайт откроется сразу.

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

2. 
Если запись отсутствует, провайдер перенаправит DNS-запрос на корневые DNS-серверы.
Корневые DNS-серверы хранят информацию только о DNS-серверах, ответственных за доменные зоны. 

3. 
Корневой DNS-сервер не может предоставить провайдеру информацию об IP-адресе домена "b14esh.com". 
Зато он отправит IP-адрес DNS-сервера доменной зоны, в данном случае зоны ".com".
Теперь у интернет-провайдера есть IP-адрес DNS сервера доменной зоны ".com". 
Поэтому он обращается к этому DNS-серверу и запрашивает IP-адрес домена.
DNS-серверы зоны ".com" хранят только информацию о DNS-серверах всех доменов в этой зоне, а не их IP-адреса. 
Поэтому DNS-серверы зоны подскажут интернет-провайдеру IP-адрес DNS-сервера домена "b14esh.com".

4.
Интернет-провайдер получил IP-адрес DNS-сервера домена "b14esh.com". 
Он обращается к DNS-серверу домена (например, к ns1.superpuper.com) с запросом IP-адреса домена.
После получения запроса DNS-сервер сначала проверяет, есть ли у него информация о домене "b14esh.com" и искомый IP-адрес для него. 
В случае успеха DNS-сервер отправит IP-адрес домена интернет-провайдеру.

5.
Интернет-провайдер получает IP-адрес домена и сохраняет его у себя в кеше. 
После этого он отправит браузеру результат DNS-запроса — IP-адрес домена "b14esh.com".
Браузер обращается к хостингу по полученному IP-адресу. 
Теперь пользователю открывается запрашиваемый сайт "b14esh.com".

hostname

hostname - посмотреть имя локального пк
hostname -f - посмотреть имя FQDN локального пк

DNS

nano /etc/resolv.conf - настройка DNS 
nameserver 8.8.8.8
nameserver 8.8.4.4 

DIG

dig - без параметров выведет информацию о DNS

dig www.server.com - поиск по A указанным в ( в первую очередь /etc/resolv.conf)
dig www.site.ru mx - запрос об устройстве работы с электронной почтой MX
dig www.name.com ns - запрос о низкоуровневых серверах имен NS 

dig -f names.txt +noall +answer - ключ (-f) позволяет использовать список имен из файла names.txt

dig @8.8.8.8 www.name_site.org - выполнить опрос конкретного DNS-сервера (@8.8.8.8)
dig @ns1.yandex.ru ya.ru - выполнить опрос конкретного DNS-сервера  (@ns1.yandex.ru)

dig -x 66.113.99.70 - получение информации PTR по IP адресу

dig ya.ru ns +short  - отображает NS ( +short  вывод короткий)
dig ya.ru a  +short  - отображает A ( +short  вывод короткий)
dig ya.ru mx +short  - отображает MX ( +short  вывод короткий)
dig -x 66.113.99.70 +short - получение информации PTR по IP адресу ( +short  вывод короткий)


dig +trace www.name.ty - рекурсивное отслеживание DNS-серверов
dig AXFR @ns1.xname.org cb.vu  - получить всю зону (пересылка зоны)

HOST

host ya.ru - получение A MX AAAA

host 66.113.99.70 - получение информации PTR  (70.99.133.66.in-addr.arpa name_server.com)
host 87.250.250.242 - получение PTR

host -a ya.ru - выведет больше информации

host ya.ru 8.8.8.8 - используем в качестве резолвера 8.8.8.8

NSLOOKUP

nslookup - программа позволяет подключится к dns серверу и запросить у него name/ip тип ALL/A/MX/SRV/NS (server=8.8.8.8, set q=MX)

Первый вариант использования:
nslookup ya.ru - все о DNS ya.ru
nslookup 78.31.70.238
nslookup -type=all ya.ru  8.8.8.8 - показать все A,MX,PTR,NS и т.д.
nslookup -type=ns ya.ru  8.8.8.8 -  показать записи MX (почта) домена ya.ru
nslookup -type=a ya.ru  8.8.8.8 -  показать записи MX (почта) домена ya.ru
nslookup -type=mx ya.ru  8.8.8.8 -  показать записи MX (почта) домена ya.ru
nslookup -type=ptr 8.8.8.8  8.8.8.8 - показать имя сервера которому принадлежит 8.8.8.8
nslookup ya.ru 8.8.8.8 - все о DNS ya.ru спросили у 8.8.8.8


Второй вариант использования:
nslookup - входим в программу
nslookup \ server=DNS_server \ q=вид_запроса \ hostname
nslookup -> server ->  8.8.8.8 -> set q=ALL -> ya.ru  - показать все A,MX,PTR,NS и т.д.
nslookup -> server -> 8.8.8.8 -> set q=a ->  ya.ru - показать записи A домена ya.ru
nslookup -> server -> 8.8.8.8 -> set q=mx ->  ya.ru -  показать записи MX (почта) домена ya.ru
nslookup -> server -> 8.8.8.8 -> set q=ptr ->  8.8.8.8 - показать имя сервера которому принадлежит 8.8.8.8
nslookup -> server -> 8.8.8.8 -> set q=ns ->  ya.ru - показать сервер держателя DNS ya.ru



Рубрики
network \ сеть

модемы \ com порты

wvdialconf /etc/wvdial.conf - сканирование последовательных портов, создание конф. для модема
wvdial - подключение к провайдеру, используя телефонную линию и модем

setserial -g /dev/ttyS0 /def/ttyS1 /def/ttyS2 /def/ttyS3 - показать  последовательные порты COM1-COM4
setserial -a /dev/ttyS0 - отобразить детальную информацию о порте COM1
stty -F /dev/ttyS0 -a - просмотр настроек для Com1 порта
minicom -s - создание настроек для вашего модема
minicom -D /dev/ttyUSB1 -b15000000
minicom -D /dev/ttyUSB1 -b115200
minicom -D /dev/ttyUSB1 -b8000
Рубрики
network \ сеть

iwconfig / wi-fi / iw / управление адаптером wi-fi

lspci | grep -i wireless - поиск беспроводных pci-карт
ip link list - выводе этой команды будет содержать все сетевые интерфейсы
iw dev - показать устройства wi-fi

ip link set wlp2s0 up - включить устройство wlp2s0 
!!! Если у вас возникнет ошибка:
!!! RTNETLINK answers: Operation not possible due to RF-kill
!!! Можно установить утилиту rfkill и с ее помощью решить эту проблему


iwconfig wlan0 essid "MyNet" - присвоить SSID "MyNet"
iwconfig wlan0 channel 3 - установит канал 3
iwconfig wlan0 mode Ad-Hoc - сменить режим Managed на Ad-Hoc
iwconfig wlan0 ap any - использовать любую точку доступа
iwconfig wlan0 sens -50 - установить чувствительность -50
iwconfig wlan0 retry 20 - установить значение 20 для повторной передачи MAC
ifconfig wlan0 key 1234-pass-123 - установить пароль 1234-pass-123

iwconfig wlp4s0 essid ваш_essid - подключение к незащищенной сети
iwconfig wlp4s0 essid ваш_essid freq 2432M - подключение с задающим каналом сети
iwconfig wlp4s0 essid ваш_essid key s:ваш_ключ -подключение к WEP зашифрованному каналу сети, ключа ASCII

iwconfig wlp4s0 power on - включение режима экономии питания

iw dev wlp4s0 link iwconfig wlp4s0 - показать статус соединения
iw dev wlp4s0 scan iwlist wlp4s0 scan -сканирование сети на точки доступа
iw dev wlp4s0 set type ibss  - настройка режима работы ad-hoc
iw dev wlp4s0 connect ваш_essid - подключение к незащищенной сети
iw dev wlp4s0 connect ваш_essid 2432 - подключение с задающим каналом сети
iw dev wlp4s0 connect ваш_essid key 0:ваш_ключ -  -подключение к WEP зашифрованному каналу сети, ключа ASCII
iw dev wlp4s0 set power_save on - включение режима экономии питания
iw dev wlp4s0 scan | less - сканируем сеть

Режимы работы:

AccessPoint (AP) infrastructure mode
Точка доступа действует как главное устройство в управляемой беспроводной сети. 
Он объединяет сеть, управляя и поддерживая списки связанных станций. 
Он также управляет политиками безопасности. 
Сеть названа в честь MAC-адреса (BSSID) точки доступа. 
Удобочитаемое имя сети, SSID, также устанавливается точкой доступа.
/!\ Чтобы использовать режим AP в Linux, вам необходимо использовать hostapd

Station infrastructure mode
Устройство Station подключается к точке доступа, отправляя ей определенные пакеты управления. 
Этот процесс называется аутентификацией и ассоциацией . 
После того как точка доступа отправила успешный ответ на ассоциацию, станция становится частью сети.

Monitor mode
Режим мониторинга — это только пассивный режим, пакеты не передаются. 
Все входящие пакеты передаются на главный компьютер совершенно нефильтрованными. 
Этот режим полезен для просмотра того, что происходит в сети.
С mac80211 можно иметь сетевое устройство в режиме мониторинга в дополнение к обычному устройству, 
это полезно для наблюдения за сетью во время ее использования. 
Однако не все оборудование полностью поддерживает это, поскольку не все оборудование можно настроить для отображения всех пакетов, 
в то время как в одном из других режимов работы интерфейсы режима мониторинга всегда работают "наилучшим образом".
С mac80211 также можно передавать пакеты в режиме мониторинга, который известен как внедрение пакетов. 
Это полезно для приложений, которые хотят реализовать работу MLME в пользовательском пространстве, например, 
для поддержки нестандартных расширений MAC IEEE 802.11.

Ad-Hoc (IBSS) mode
Режим Ad-Hoc используется для создания беспроводной сети без необходимости наличия в сети главной точки доступа. 
Каждая станция в сети IBSS сама управляет сетью. 
Ad-Hoc полезен для соединения двух или более компьютеров друг с другом, когда для этой цели нет (полезной) точки доступа.

Wireless Distribution System (WDS)
Система распределения — это проводное соединение восходящей линии связи с точкой доступа. 
Беспроводная система распределения является ее беспроводным эквивалентом. 
WDS служит каналом беспроводной связи между взаимодействующими точками доступа (обычно в одной ESS), его можно использовать вместо кабеля. 

Mesh
Mesh-интерфейсы используются для обеспечения возможности связи нескольких устройств друг с другом путем динамического установления интеллектуальных маршрутов между собой.
Рубрики
network \ сеть

ifconfig \ ip \ управление сетевым адаптером

ifconfig \ ip

ifconfig - проверка состояния сетевых интерфейсов
ifconfig -a - покажет все сетевые интерфейсы (неактивные в том числе)
ifconfig eth0 down - отключить сетевой интерфейс eth0 (команда устарела)
ifocnfig eth0 up - включить сетевой интерфейс eth0 (команда устарела)

ifdown eth0 - отключить сетевой интерфейс
ifup eth0 - включить сетевой интерфейс

ip - управление сетевыми интерфейсами (замена ifconfig)
ip help - помощь по команде ip
ip addr help - помощь
ip route help - помощь
ip tunnel help - помощь
ip addr show - получение информации о всех сетевых интерфейсах
ip a - получение информации о всех сетевых интерфейсах
ip addr show eth0 - отобразит информацию о eth0

ipcalc -bmn 192.168.1.100/27 - расчет маски под сети хост-компьютерам с помощью  CIDR IP- адреса
Рубрики
network \ сеть

netstat \ сетевая статистика

netstat -I - отображает сетевую статистику
netstat -ic - отображает и обновляет сетевую статистику ежесекундно
netstat -s | less - показать сетевую активность TCP, ICMP, UDP
netstat -tanp - посмотреть активные TCP-подключения
netstat -uanp - посмотреть активные UDP-подключения
watch netstat -i - вывод на экран сетевой статистики
Рубрики
network \ сеть

ethtool \ управление сетевыми интерфейсами

ethtool -h | less - отображает параметры команды ethtool
ethtool eth0 - отображает информацию о сетевом интерфейсе eth0
ethtool -i eth0 - выводит информацию о драйвере eth0
ethtool -S eth0 - отображает статистику NIC интерфейса eth0