🌐 Работа с сетью в Linux

Адреса, маршруты, порты, DNS, диагностика, файрвол и SSH.

Шпаргалки · Администрирование · #linux #network #ip #ss #dns

Интерфейсы и адреса

ip a                          # адреса (сокращённо ip addr)
ip link show; ip -br a
sudo ip addr add 192.168.1.50/24 dev eth0
sudo ip link set eth0 up|down
ip route; ip route get 8.8.8.8
sudo ip route add 10.0.0.0/8 via 192.168.1.1

Старые ifconfig, route, netstat заменены на ip и ss.

Порты и соединения

ss -tulpn                     # прослушиваемые порты и процессы
ss -tan state established     # установленные соединения
sudo lsof -i :8080
nc -zv host 22                # проверка порта

Ключи ss: -t TCP, -u UDP, -l слушающие, -p процесс, -n числа без имён.

DNS

dig example.com; dig +short A example.com; dig MX example.com
dig @8.8.8.8 example.com; dig -x 8.8.8.8
nslookup example.com; host example.com
resolvectl status; resolvectl query example.com
cat /etc/resolv.conf; cat /etc/hosts

Диагностика

ping -c 4 example.com
traceroute example.com; mtr example.com
curl -I https://example.com
tcpdump -i eth0 port 53 -nn           # перехват пакетов
nmap -p 1-1024 host                   # сканирование портов
iperf3 -c server                      # пропускная способность

Порядок поиска проблемы: адрес → шлюз (ping) → внешний IP → DNS (dig) → порт и приложение (curl, nc).

Постоянная настройка

Система Файл или инструмент
Ubuntu Server Netplan: /etc/netplan/*.yaml, netplan apply
Desktop, часть серверов NetworkManager: nmcli, nmtui
Debian классика /etc/network/interfaces
systemd-networkd /etc/systemd/network/*.network
# netplan
network:
  version: 2
  ethernets:
    eth0:
      addresses: [192.168.1.50/24]
      routes: [{ to: default, via: 192.168.1.1 }]
      nameservers: { addresses: [1.1.1.1, 8.8.8.8] }
nmcli device status; nmcli connection show
nmcli con mod "Wired" ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.method manual
hostnamectl set-hostname server1

Файрвол

sudo ufw allow 22/tcp; sudo ufw enable; sudo ufw status          # Ubuntu
sudo firewall-cmd --add-service=http --permanent && sudo firewall-cmd --reload   # RHEL
sudo nft list ruleset; sudo iptables -L -n -v

SSH

ssh user@host -p 2222
ssh-keygen -t ed25519 -C "me@x.com"; ssh-copy-id user@host
ssh -L 8080:localhost:80 user@host      # локальный проброс порта
scp file user@host:/path; rsync -avz src/ user@host:/dst/

Серверный конфиг: /etc/ssh/sshd_config (PasswordAuthentication no, PermitRootLogin no).