Сеть в Linux:
Глубже, чем ifconfig
Пакеты, Сокеты, Маршруты и магия NAT. Почему `netstat` устарел и как работает фаервол внутри ядра.
1. Модель TCP/IP (На практике)
Забудьте про 7 уровней OSI. В Linux мы работаем с 4 уровнями. Когда вы открываете сайт, происходит упаковка матрешки:
L4: App
HTTP, SSH
Данные
L3: Transport
TCP, UDP
Порт (80)
L2: Network
IP
IP (1.2.3.4)
L1: Link
Ethernet
MAC
2. IP vs Ifconfig
ifconfig устарел лет 15 назад. Он не показывает вторичные IP и не умеет управлять маршрутами. Используйте iproute2.
// 1. Посмотреть адреса
ip a// 2. Посмотреть "железки"
ip link showPro Tip: В Linux на один интерфейс (eth0) можно повесить сколько угодно IP-адресов. Это называется IP Aliasing.
3. Маршрутизация (Мозг)
Когда ядро получает пакет, оно смотрит в таблицу маршрутизации.
// ip route show
# Маршрут по умолчанию (для интернета)default via 192.168.1.1 dev eth0
# Маршрут к соседям (LAN)
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
Логика ядра: "Если адрес назначения совпадает с 192.168.1.X — кидаю напрямую в сеть. Если нет — кидаю на шлюз (1.1)".
4. Сокеты (SS vs Netstat)
Нам нужно знать, какие программы какие порты "слушают" (LISTEN). netstat медленный (читает файлы). ss быстрый (спрашивает ядро напрямую).
// Показать все слушающие порты (TCP/UDP) с именами процессов
sudo ss -tulnp- t: TCP
- u: UDP
- l: Listen (слушающие)
- n: Numeric (показывать 80, а не http)
- p: Process (показать имя программы, например nginx)
5. Firewall (Netfilter)
iptables — это просто пульт управления. Сам брандмауэр встроен в ядро и называется Netfilter. У него есть "крючки" (hooks), которые ловят пакеты:
INPUT
Пакет пришел МНЕ.
OUTPUT
Я создал пакет.
FORWARD
Я роутер (проходной двор).
// Пример правила iptables
iptables -A INPUT -p tcp --dport 22 -j ACCEPT6. Диагностика
"Сеть не работает". Какой инструмент взять? Кликни.
Ping (ICMP)
Проверяет доступность хоста на уровне IP. Если пинг идет, значит кабель подключен и маршруты верны.
ping 8.8.8.8
7. NAT (Маскарад)
Почему у твоего компа IP 192.168.1.100, а сайт 2ip.ru видит 80.90.100.10?
Это Source NAT (Masquerading). Твой роутер работает как пограничник. Он берет твой пакет, стирает твой "серый" обратный адрес, пишет свой "белый" адрес и отправляет в интернет. Когда приходит ответ, он вспоминает, кому он предназначался, и пересылает тебе.