команда ip
https://losst.ru/nastrojka-seti-v-linux
https://packetpushers.net/linux-ip-command-ostensive-definition/
СИНТАКСИС
Сначала рассмотрим синтаксис команды:
ip [опции] объект команда [параметры]
опции — это глобальные настройки, которые сказываются на работе всей утилиты независимо от других аргументов, их указывать необязательно.
объект — объект или устройство, с которым будем работать или о котором будем узнавать информацию.
команды — какое-либо действие с объектом.
параметры — само собой, командам иногда нужно передавать параметры, они передаются в этом пункте.
ОПЦИИ
Поддерживаются такие опции для настройки сети в lInux:
-v — только вывод информации об утилите и ее версии
-s — включает вывод статистической информации
-f — позволяет указать протокол, с которым нужно работать, если протокол не указан, то берется на основе параметров команды. Опция f должна принимать одно из значений: bridge, dnet, inet, inet6, ipx или link. По умолчанию используется inet, link — означает отсутствие протокола.
-o — выводить каждую запись с новой строки
-r — выполнять резолвинг и выводить символические имена хостов
Все остальные опции — ярлыки опции -f:
-4 — ярлык для -f inet
-6 — -f inet6
-B — -f bridge
-0 — -f link
ОБЪЕКТЫ
address — сетевой адрес на устройстве
link— физическое сетевое устройство
monitor — мониторинг состояния устройств
neigh — ARP
route — управление маршрутизацией
rule — правила маршрутизации
tunnel — настройка туннелирования
Во время ввода имя объекта может быть сокращено до одной буквы. При неоднозначности используется алфавитный порядок. Например, ip a show, расшифровывается как ip address show. Тогда как в ip r show, r - означает route.
КОМАНДЫ
Теперь рассмотрим доступные команды, с помощью которых может быть выполнена настройка сети linux. Вот они: add, change, del или delete, flush, get, list или show, monitor, replace, restore, save, set, и update.
Если команда не задана, по умолчанию используется show (показать).
Здесь тоже поддерживается сокращение и в большинстве случаев для выполнения нужного действия достаточно нескольких символов. Но алфавитный порядок соблюдается не всегда. Например, ip a s, означает ip address show, а не ip address set, к сожалению.
ПАРАМЕТРЫ
Параметры зависят от объекта и указанной команды. Рассмотрим самые основные:
dev имя_устройства - сетевое устройство
up - включить
down - выключить
llarrr - MAC - адрес
initcwnd - размер окна перегрузки TCP при инициализации
window - размер окна TCP
cwnd - размер окна перегрузки TCP
type - тип
via - подключиться к роутеру
default - маршрут по умолчанию
blackhole - маршрут "черная дыра" - отбрасывать пакеты и не посылать ICMP сообщения о недоступности
prohibit - маршрут "запрета" - отбрасывать пакеты и возвращать ICMP сообщения о запрете доступа
unreachable - маршрут "недостижимый" - отбрасывать пакеты и посылать ICMP пакеты о недостижимости узла.
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
IP LINK
Утилита ip в Linux с параметром linux позволяет управлять состоянием сетевых интерфейсов и просматривать информацию о них.
ip link show - отобразить состояние всех сетевых интерфейсов
ip l sh - то же самое
ip ll - то же самое
ip l - то же самое
ip link show eth0 - отобразить состояние eth0
ip link list up - отобразить статус всех включенных интерфейсов
ip link set eth1 up - включить eth1
ip link set eth1 down выключить eth1
IP NEIGBOUR
Объект neigbour используется для управления ARP таблицами.
ip neigh show - показать все записи ARP
ip n sh - то же самое
ip n l - то же самое
ip n - то же самое
ip neigh show dev eth0 - посмотреть все ARP записи для eth0
ip neigh flush - удалить все ARP записи
ip ne fl dev eth0 - удалить все ARP записи для eth0
ip nei add 1.1.1.13 lladdr AA:BB:CC:DD:EE:FF dev eth0 - добавить ARP запись для определенного IP адреса.
ip n del 1.1.1.13 dev eth0 - удалить все записи для указанного адреса
IP ADDRESS
Важно заметить, что вторичные ip адреса не используются в качестве исходящих адресов для отправки пакетов.
ip address show - показать все ip адреса и их интерфейсы
ip a sh - то же самое
ip a list - то же самое
ip a - то же самое
ip a l permanent - отобразить только статические ip адреса
ip a l dynamic - отобразить только динамические ip адреса
ip addr add 1.1.1.13/24 dev eth0 - установить ip адрес для интерфейса eth0
ip addr del 1.1.1.13/24 dev eth0 - удалить ip адрес интерфейса eth0
ip add flush dev eth0 - удалить все ip адреса интерфейса eth0
IP ROUTE
Утилита ip в Linux позволяет не только устанавливать ip адреса, но и настраивать маршруты. По умолчанию в Linux используется таблица маршрутизации 254, вы также можете иметь дело с таблицей 255, которую не следует изменять, а также 253, в которой хранятся маршруты по умолчанию.
ip r sh показать все маршруты в таблице маршрутизации
ip route show table nnn - отобразить все маршруты из таблицы 255
ip route get 10.10.20.0/24 - отобразить маршрут к этой сети
ip route get 10.10.20.0/24 from 192.168.12.9 - отобразить маршрут к этой сети от указного интерфейса.
ip route add 10.10.20.0/24 via 192.168.50.100 - создать маршрут
ip route delete 10.10.20.0/24 - удалить маршрут.
ip route del 10.10.20.0/24 via 192.168.50.100 - удалить маршрут.
ip route add default via 192.168.50.100 - создать маршрут по умолчанию.
ip route add 10.10.20.0/24 dev eth0 - создать маршрут к указной сети.
ip route add table nnn 10.10.20.0/24 dev eth0 - создать маршрут в специальной таблице роутинга.
ip route add blackhole 10.10.20.0/24 dev eth0 - создать blackhole маршрут.
ip route add unreachable 10.10.20.0/24 dev eth0 - создать unreachable маршрут.
Использование route
https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s1-networkscripts-static-routes.html
Просмотреть таблицу можно следующими способами:
route -n (устаревшее)
netstat -rn
ip route show
cat /proc/net/route
route -f операция -тип адресат шлюз интерфейс
Команда route -f удаляет из таблицы данные обо всех шлюзах
Добавление маршрута через шлюз:
route add -net 192.168.0.0/16 gw 10.0.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.1
Добавление маршрута через интерфейс:
route add -net 192.168.0.0/16 dev eth1
Маршрут до отдельного хоста:
route add -host 192.168.0.1 gw 172.16.0.1
Маршрут по умолчанию настраивается следующей командой:
route add default gw 192.168.1.1 eth0
Удаление маршрута: route del ..
настройка сети для убунтовых
https://uzverss.livejournal.com/79797.html (Настройки, работа с сетевыми интерфейсами )
https://netplan.io/examples
nano /etc/netplan/01-network-manager-all.yaml
простой конфиг
в этом случае libvirt (kvm qemu) машины ходят в сеть по дефолтной конфигурации, находясь за nat
посложней, несколько адресов, на одном интерфейсе
здесь надо создавать br0 для libvirt (см ниже настройка сети KVM)
netplan --debug apply
netplan try
systemctl restart systemd-networkd
networkctl status -a
ip link set enp3s0 up
ip link set enp3s0 down
настройка сети для rhel
Настройка сети в CentOS 7
Устанавливаем статический ip
узнаём интерфейс
ip a
nano /etc/sysconfig/network-scripts/ifcfg-интерфейс
ip neig flush all # очистить кэш arp
systemd-resolve --flush-caches # очистить кэш dns имён
systemctl restart systemd-resolved # обновить dns
sudo /etc/init.d/dns-clean start # очистить кэш dns имён для старых os
ip ro
yum install net-tools # нужен для роутинга
route add default gw 192.168.1.1 # добавить шлюз по умолчанию
route del default gw 192.168.1.1 # удалить шлюз по умолчанию
route add -net 192.168.2.0/24 gw 192.168.1.2 # дополнительный роутинг
route delete -net 192.168.1.0 # удалить маршрут
лучше обойтись без net-tools, поскольку он устарел
ip route add default via 192.168.1.1
ip route add default via 192.168.1.1
https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s1-networkscripts-static-routes.html
Для того чтобы добавленные маршруты работали после перезапуска системы необходимо прописать их в /etc/sysconfig/network-scripts/route-имя_интерфейса
default 192.168.0.1 dev eth0
10.10.10.0/24 via 192.168.0.1 dev eth0
172.16.1.0/24 via 192.168.0.1 dev eth0
systemctl restart network
для винды
NIC Teaming в Windows Server 2012
Объединения сетевых адаптеров NIC Teaming в Windows server 2012 R2
настройка сети KVM
http://www.linux-kvm.org/page/HOWTO
Enabling Intel VT and AMD-V virtualization hardware extensions in BIOS
Гость может связаться с внешней сетью, но не может получить доступ к хосту (macvtap)
http://onreader.mdl.ru/MasteringKVMVirtualisation/content/Ch05.html
https://wiki.libvirt.org/page/Networking
https://libvirt.org/formatnetwork.html
KVM: Creating a bridged network with NetPlan on Ubuntu 22.04
uzverss первый запуск OpenWRT на QEMU
LC_ALL=C lscpu | grep Virtualization
cat /proc/cpuinfo |egrep "vmx|svm"
grep -E --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo
lsmod | grep kvm
modprobe kvm-amd
sudo apt-get install cpu-checker
kvm-ok
sudo apt-get install virt-manager
sudo usermod -aG libvirtd `id -un`
sudo virsh net-start default
Создание сети мостов KVM Linux NAT
использовать существующую default конфигурацию сети для создания нового сетевого устройства
virsh net-dumpxml default > br0.xml
в virt-manager добавить сетевое устройство и выбрать br0, адрес будет не за виртуальным nat
определить сеть из файла XML без ее запуска
virsh net-define /etc/libvirt/qemu/networks/br0.xml
запустить (ранее определенную) неактивную сеть
virsh net-start br0
создать переходную сеть, которая не может быть настроена на использование автозапуска
virsh net-create br0.xml
добавить сеть в автозапуск
virsh net-autostart br0
Проверить, включен ли флаг автозапуска
virsh net-list --all
преобразовать сетевое имя в UUID сети
virsh net-uuid br0
проверка доступных мостов в вашей системе
brctl show br0
ip addr show dev br0
Удаление сети
отключить сеть, чтобы поместить ее в неактивный режим
virsh net-destroy br0
проверить
virsh net-undefine br0
brctl show br0
перезапустить
service libvirtd restart
добавить br0 интерфейс к vm, pxe который будет настроен как сервер среды Preboot eXecution.
# virsh attach-interface --domain pxe --type bridge --source br0 --model virtio --config --live
# virsh domiflist pxe
Отсоединение интерфейса, подключенного к виртуальной машине
# virsh detach-interface --domain pxe --type bridge --mac 52:54:00:47:2f:eb --config
# virsh domiflist pxe
на виртуалке
/etc/network/interfaces
dhclient -v enp7s0
route add default gw 10.1.0.1 enp7s0
ping -I enp7s0 ya.ru
Создание моста Linux с помощью brctl
Создайте новый мост:
# brctl addbr br0
Добавьте устройство к мосту, например eth0:
# brctl addif br0 eth0
Назначение IP-адреса
# ip addr add dev br0 192.168.2.4/24
# ip route add default via 192.168.2.1 dev br0
Покажите текущие мосты и с каким интерфейсом они связаны:
# brctl show
Установите мостовое устройство вверх:
# ip link set up dev br0
Удалите мост, вам нужно сначала установить его вниз:
# ip link set dev br0 down
# brctl delbr br0
DHCP
Для получения настроек по DHCP, выполняем следующую команду:
dhclient eth0
Для отключения получения IP адреса по DHCP, выполняем следующую команду:
killall dhclient
DNS
update-resolve-conf
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
Если система использует systemd-resolved, то указанный выше IP-адрес будет 127.0.0.53
systemd-resolved
Настройка кеширования DNS с помощью systemd-resolved
resolvectl status
files – считывание настроек из файла /etc/hosts (имеет наивысший приоритет);
myhostname – считывание имени текущего хоста;
resolve [!UNAVAIL=return] – считывание настроек с помощью локального кеширующего DNS-сервера, systemd-resolved поддерживает внутренний каталог с собственным файлом resolv.conf;
dns – обращение напрямую к DNS-серверам (имеет низший приоритет).
vim /etc/systemd/resolved.conf
Указать список основных и запасных DNS. Для этого раскомментируйте параметры DNS= и FallbackDNS= и укажите свои значения.
В параметре DNS= рекомендуется указывать IP-адрес главного маршрутизатора в локальной сети.
В параметре FallbackDNS= рекомендуется указывать любые публичные DNS-серверы, например, 77.88.8.88 – бесплатный DNS-сервер от Яндекс.
При необходимости раскомментируйте и укажите нужные значения для следующих параметров:
DNSSEC=yes – набор расширений протокола DNS, позволяющий минимизировать атаки, связанные с подменой IP-адреса при разрешении доменных имён;
DNSOverTLS=yes – стандартный протокол для выполнения разрешения удалённой системы DNS с использованием TLS;
MulticastDNS=no – многоадресный DNS для поиска устройства или службы по имени в локальной сети;
LLMNR=no – протокол стека TCP/IP, выполняющий разрешение имён хостов в локальной сети.
Включите кеширование, раскомментировав параметр Cache= и установив значение yes.
После настройки конфигурационного файла выполните перезапуск службы systemd-resolved и проверьте её статус:
systemctl restart systemd-resolved
systemctl status systemd-resolved
systemctl enable systemd-resolved.service --now
проверка открытых портов
netstat -ltup; netstat -lntup; netstat -lntupc
ss -lntu; ss -lntup
nmap -n -Pn -sS -sU -p- localhost
lsof -i; lsof -i :80
частые команды
ifdown enp3s0
ifup enp3s0
ip link set enp3s0 up - включить enp3s0
ip link set enp3s0 down выключить enp3s0
ip link set wlan0 down - деактивировать wlan0 (ifconfig wlan0 down)
ip link set wlan0 up -активировать wlan0 (ifconfig wlan0 up)
ip link show up
ip address
ip a - узнать интерфейсы
ip addr add 192.168.100.12/24 dev enp3s0 - изменить адрес
ip addr del 192.168.100.5/24 dev enp3s0 - удалить адрес
ip addr add 172.17.2.11/16 brd + dev br0 - добавить дополнительный адрес
ip addr del 172.17.2.11/16 dev br0 - удалить дополнительный адрес
ifconfig enp3s0 192.168.100.12 netmask 255.255.255.0
ifconfig eth0 192.168.100.12 netmask 255.255.255.0
dhclient enp3s0 - получить по dhcp адрес
dhclient -r - удалить его
ip r sh
ip route add 10.0.0.0/24 via 192.168.1.50
route add -net 192.168.100.0/24 dev eth2
ip route delete 10.0.0.0/24
post-up route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.50
pre-down route del -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.50
service networking restart
/etc/init.d/networking restart
ethtool eth0
изменить скорость сетевой карточки до 100Mb/s в случае, если там стояла другая скорость.
ethtool -s eth0 speed 100 duplex full
sudo lspci - список pci устройств, среди которых есть и сетевые карты
sudo lspci -v подробнее; sudo lspci -vv - еще подробнее; sudo lspci -vvv - подробнее не бывает :)
sudo lshw - список оборудования, можно посмотреть и логическое имя сетевой карты
sudo lshw -class network список сетевого оборудования с логическими именами
ifconfig, rourte и netstat - устаревшие команды (legacy), вместо них нужно использовать ip и ss
Network namespace - виртуальный сетевой стек в linux
Примеры применения Linux network namespaces (netns)
Команда для очистки ARP кэша в Linux
ip neig flush all
Команда для очистки DNS кэша в Linux
systemd-resolve --flush-caches
systemctl restart systemd-resolved
systemd-resolve --status
ошибки
Определение правильного MTU
ping -M do -s 1500 -c 1 www.example.com
Уменьшайте значение 1500 на 10 каждый раз, пока пинг не будет успешным. Как только пинг завершится успешно, используемым значением будет MTU, которое вы должны использовать.
разное
Network namespaces или несколько виртуальных сетевых карт (интерфейсов) с разными IP на одной машине.
Добавление дополнительных network namespaces к уже настроенным.
Настройте локальный DNS-преобразователь в Ubuntu 20.04 с BIND9
Как заблокировать IP адрес с помощью ufw на Ubuntu Linux
nano /etc/ufw/before.rules
# Block страница блокировки РосТелеком
-A ufw-before-input -s 95.167.13.50 -j DROP
-A ufw-before-input -s 95.167.13.51 -j DROP
ufw reload
nano /etc/host
127.0.0.1 warning.rt.ru
Блокировку Роскомнадзора можно обойти, добавив точку в конец адреса web-сайта