Пример настройки сетевой подсистемы Ubuntu Server

HELP-ME-24.COM (Freelance Team), Черноусов Антон

Рассмотрим несколько специфичных моментов настройки сетевой подсистемы Ubuntu Server. Я не претендую на истину в первой инстанции но именно такой подход является довольно устоявшейся и хорошо зарекомендовавшей себя практикой.

Пример схемы настройки сетевой подсистемы Ubuntu Server

Мы используем настройку сетевой подсистемы в режим моста, что упрощает работу с современным именованием сетевых интерфейсов при переносе на другую аппаратную платформу и использование простого файла с правилами iptables применяемыми на этапе настройки сетевых интерфейсов.

Для перенастройки сетевой подсистемы Ubuntu linux в режим работы мост необходимо установить пакет для работы с сетевыми мостами командой:

# aptitude install bridge-utils

Конфигурация сетевой подсистемы находится в конфигурационном файле /etc/network/interfaces. Типовой файл имеет вид:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 93.170.131.195
netmask 255.255.252.0
network 93.170.128.0
broadcast 93.170.131.255
gateway 93.170.128.1
dns-nameservers 8.8.8.8

Нам потребуется перенастроить сетевые интерфейс таким образом, чтобы интерфейсу eth0 не было назначено сетевого адреса, а сетевые настройки в свою очередь назначим виртуальному интерфейсу lxc-bridge (сетевой мост) членом которого сделаем реальный интерфейс. Звучит сложновато, но на деле в конфигурацию потребуется внести не так много изменений:

auto lo
iface lo inet loopback

auto lxc-bridge
iface lxc-bridge inet static
address 93.170.131.195
netmask 255.255.252.0
network 93.170.128.0
broadcast 93.170.131.255
gateway 93.170.128.1
dns-nameservers 8.8.8.8
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off

Сетевой интерфейс eth0 настраивается автоматически и в дополнительной настройке не нуждается, необходимо только указать его в параметре bridge_ports.

В большинстве случаев Ubuntu Server выполняет функции маршрутизатора, а функционал маршрутизации пакетов по умолчанию отключен. Для временного включения функционала маршрутизации пакетов выполните команду:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Для активации форвардинга пакетов на постоянной основе модифицируйте файл /etc/sysctl.conf, раскомментировав или добавив следующий параметр:

net.ipv4.ip_forward=1

Обратите внимание, что если вы не используете протокол IPv6 (например провайдер не предоставляет вам поддержку пула адресов IPv6), то лучше отключите его поддержку изменив следующие параметры в файле /etc/sysctl.conf:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Дополнительно можно полностью отключить поддержку IPv6 добавив запрет использования IPv6 на этапе загрузки, для чего в файле /etc/default/grub измените параметр GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

После внесения изменений выполните обновление загрузчика GRUB командой:

# update-grub

Для применения изменений потребуется перезагрузка. Если вы все выполнили правильно, то в результате выполнения команды ifconfig вы больше не увидите сведений связанных с протоколом IPv6:

# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:50:56:08:74:59
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8943 errors:0 dropped:0 overruns:0 frame:0
TX packets:431 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:599053 (599.0 KB) TX bytes:43383 (43.3 KB)

Напоследок приведем пример того как мы реализуем применение правил Firewall (iptables) при загрузке сервера. Существует несколько штатных решений таких как сервис iptables (/etc/init.d/iptables) и UFW (Uncomplicated Firewall) эти решения достаточно хорошо описаны, но на мой взгляд являются недостаточно гибкими, я в свою очередь предпочитаю старый добрый файл с описаниями правил iptables, который в минимальном варианте выглядит следующим образом (/etc/firewall.sh):

#!/bin/sh
#########################
# Настройки интерфейсов #
########################
IF_MAIN_BRIDGE="bridge-2-lan"
IPT="/sbin/iptables"

####################
# Правила iptables #
####################

# Удаляем все старые правила
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X

# Настраиваем политики по умолчанию
$IPT -P OUTPUT ACCEPT
$IPT -P INPUT DROP
$IPT -P FORWARD DROP

# Разрешаем все операции с loopback интерфейса
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A FORWARD -o lo -j ACCEPT

# Поддерживаем уже установленные соединения
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешаем доступ по SSH (все интерфейсы)
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT

После добавления дополнительных правил просто запустите файл заново и таблицы правил Firewall будут очищены и заново построены. В случае использования файла с правилами некоторые системные администраторы помещают его на запуск в файл /etc/rc.local, что не совсем правильно, так как правила применяются по окончании запуска всех служб, а не на этапе настройке сетевого интерфейса.

Для применения правил на этапе настройки сетевого интерфейса добавьте параметр post-up в файл конфигурирования сетевых интерфейсов /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp
post-up /etc/firewall.sh

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий