1. Как мисля за мрежата
В железопътния транспорт мрежата от релси е нещо, което приемаш за даденост – докато не се появи проблем. Същото важи и за IP мрежите. Когато всичко работи, никой не забелязва. Когато нещо се обърка, целият сървър спира.
Моят подход е прост: конфигурирам мрежата така, че да мога да я проверя и възстановя бързо, без да разчитам на спомени или случайни бележки. Затова използвам статични конфигурации, където е възможно, и документирам всичко.
2. Основни мрежови интерфейси
В повечето сървъри имам поне един физически интерфейс – обикновено eth0 или enpXsY (в зависимост от дистрибуцията). Новите именования (predictable network interface names) са по-логични, но аз все още използвам eth0 за улеснение.
# Показва всички интерфейси и IP адреси
ip addr show
# По-кратък изход (само активните)
ip -br addr show
# Старата команда (все още работи)
ifconfig -a
За мен най-важното е да видя дали интерфейсът има IP адрес и дали е UP (активен). Ако няма IP, значи конфигурацията не е заредена правилно.
3. Статична конфигурация в Debian/Ubuntu
В Debian-based системите използвам /etc/network/interfaces или netplan (в Ubuntu). Лично предпочитам стария начин с interfaces, защото е по-прост и не изисква допълнителни инструменти.
# Външен интерфейс (публичен IP)
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 1.1.1.1 8.8.8.8
systemctl restart networking (или ifdown eth0 && ifup eth0). Винаги проверявам дали новият адрес е зареден.
4. DHCP – когато е удобно
DHCP е удобен за клиентски машини или тестови среди. За сървъри обаче го избягвам, освен ако не използвам DHCP reservation в рутера. Причината е проста: ако DHCP сървърът не отговори, сървърът остава без IP.
auto eth0
iface eth0 inet dhcp
5. Bridge – за виртуални машини и контейнери
Когато използвам Proxmox или Docker, често имам нужда от bridge мрежа. Тя позволява на виртуалните машини да са в същата мрежа като host-а.
# Физическият интерфейс (без IP)
auto eth0
iface eth0 inet manual
# Bridge интерфейсът
auto br0
iface br0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
6. VLAN-и – разделяне на трафика
В по-големи среди използвам VLAN за разделяне на трафика – например мрежа за управление (management), мрежа за приложения и мрежа за бази данни. Това повишава сигурността и улеснява диагностиката.
# Физически интерфейс
auto eth0
iface eth0 inet manual
# VLAN 100 – мрежа за управление
auto eth0.100
iface eth0.100 inet static
address 10.0.100.10
netmask 255.255.255.0
vlan-raw-device eth0
# VLAN 200 – мрежа за приложения
auto eth0.200
iface eth0.200 inet static
address 10.0.200.10
netmask 255.255.255.0
vlan-raw-device eth0
7. DNS – за да не помня IP-та
DNS е нещо, което често пренебрегваме, но когато не работи, всичко спира. На сървърите си конфигурирам /etc/resolv.conf с надеждни DNS сървъри.
nameserver 1.1.1.1
nameserver 8.8.8.8
search mydomain.local
systemd-resolved, промените в /etc/resolv.conf може да бъдат презаписани. В такъв случай конфигурирай DNS чрез systemd-resolved или networkd.
8. Диагностика на мрежови проблеми
Когато мрежата не работи, имам няколко стандартни стъпки, които следвам. Те са ме спасявали стотици пъти.
- Проверявам дали интерфейсът е UP:
ip link set eth0 up - Проверявам дали има IP адрес:
ip addr show eth0 - Проверявам дали мога да стигна до gateway-а:
ping 192.168.1.1 - Проверявам дали мога да стигна до външен сървър:
ping 1.1.1.1 - Проверявам DNS резолюцията:
nslookup google.com - Проверявам дали портовете са отворени:
ss -tulpn | grep 80
ping 1.1.1.1 работи, но ping google.com не, значи проблемът е в DNS.
9. Мрежова сигурност – iptables и nftables
Всеки сървър, който поддържам, има firewall. В миналото използвах iptables, но в последните години преминах към nftables, защото е по-модерен и по-бърз.
# Разрешавам SSH от конкретен IP
nft add rule inet filter input ip saddr 192.168.1.100 tcp dport 22 accept
# Разрешавам HTTP/HTTPS за всички
nft add rule inet filter input tcp dport 80 accept
nft add rule inet filter input tcp dport 443 accept
# Запазвам правилата
nft list ruleset > /etc/nftables.conf
10. Практически съвети
- Записвай конфигурациите. Копирам
/etc/network/interfacesв безопасно място преди големи промени. - Използвай
ethtool. С него проверявам скоростта и състоянието на физическия кабел:ethtool eth0. - Не забравяй мрежовите маршрути.
ip route showти показва как трафикът излиза от сървъра. - Тествай връзката с
traceroute. Показва пътя на пакетите до дестинацията.
Заключение
Мрежовите конфигурации са основата, върху която всичко друго се гради. Без стабилна мрежа, няма смисъл от оптимизирани приложения или сигурни настройки. Затова отделям време, за да ги направя правилни от самото начало.
В тази статия споделих моя подход – от статични IP-та до bridge-и и VLAN-и. В следващата част ще се потопим в сигурността – SSH, ключове, fail2ban и защита на сървъра.