🌐 Работа с сетью в 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).