Сеть в 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 show

Pro 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 ACCEPT

6. Диагностика

"Сеть не работает". Какой инструмент взять? Кликни.

Ping (ICMP)

Вопрос: "Ты вообще жив?"
Проверяет доступность хоста на уровне IP. Если пинг идет, значит кабель подключен и маршруты верны.
ping 8.8.8.8

7. NAT (Маскарад)

Почему у твоего компа IP 192.168.1.100, а сайт 2ip.ru видит 80.90.100.10?

Это Source NAT (Masquerading). Твой роутер работает как пограничник. Он берет твой пакет, стирает твой "серый" обратный адрес, пишет свой "белый" адрес и отправляет в интернет. Когда приходит ответ, он вспоминает, кому он предназначался, и пересылает тебе.