Настройка Ubuntu сетевым шлюзом для раздачи интернета в локальную сеть


В этой заметке будет рассказано как с помощью iptables настроить системы с Ubuntu и Debian для раздачи интернета другим компьютерам локальной сети. На простом примере будет показано как машину с двумя сетевыми интерфейсами (в один поступает интернет, из другого — «выходит») сделать шлюзом.

Допустим, что аппаратно-сетевая часть уже полностью настроена, на вашей машине имеются работоспособный интернет и вы видите другие компьютеры сети. Поэтому давайте разберемся что к чему, для этого введем команду:

 

ifconfig

 

Она выдаст список работающих в данный момент сетевых интерфейсов. Среди них надо опознать те, что начинаются со слов «Link encap:Ethernet» — это интерфейсы сетевых карт. Как правило, это eth0 и eth1.

Теперь потребуется опознать в какой из них поступает интернет, а из какого «выходит». Проще всего это сделать по их ip-адресам.

Итак, допустим через eth0 вы получаете интернет (например через adsl-модем по протоколу ppp), а eth1 связывает вас с локальной сетью.

Если локальная сеть настроена через Network Manager, то мы рекомендуем прописать эти настройки непосредственно в системном конфигурационном файле сети:

 

sudo nano /etc/network/interfaces


Здесь исправьте настройки вашего сетевого интерфейса, подключенного к локальной сети (в нашем случае eth1), соответствующим образом:

 

auto eth1

iface eth1 inet static

address 192.168.0.10

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

 

Значение address — это айпи вашей машины в локальной сети, по этому адресу собственно и будет располагаться шлюз.

Значение netmask — в локальных сетях для этого диапазона чаще всего такая. Для других диапазонов можно вычислить здесь.

Значения network и broadcast будут зависеть от вашего адреса. То есть, если ваш локальный ip — 10.0.0.10, то network и broadcast будут 10.0.0.0 и 10.255.255.255 соответственно.

 

Либо, это можно проделать всего одной командой:

 

sudo ifconfig eth1 192.168.0.10

 

Эта команда самостоятельно настроит вашу сетевую карту eth1 на использование статичного айпи-адреса, и самостоятельно пропишет описанные выше настройки в файл /etc/network/interfaces

 

В любом случае, после этих изменений перезапустите networking:

 

sudo /etc/init.d/networking restart

 

Командой:

 

ifconfig

 

проверьте, что изменения вступили в силу и все работает.

 

Теперь осталось дело за малым. В случае если вы уже пытались настроить вашу систему шлюзом, но у вас не получилось или по каким-то другим причинам вы желаете обнулить все настройки файрвола iptables, то это можно сделать следующими командами:

 

iptables --flush

iptables --table nat --flush

iptables --delete-chain

iptables --table nat --delete-chain

 

Если прямой необходимости в сбросе настроек iptables нет, то лучше этого не делать.

 

Следующие команды настроят ваш iptables для NAT-трансляции (NAT, Network Address Translation — «преобразование сетевых адресов») через Ubuntu-шлюз:

 

sudo iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A POSTROUTING -t nat -j MASQUERADE

 

Если необходимые вам сетевые интерфейсы отличаются от eth0 и eth1, то просто измените первую строку соответствующим образом.

Если ваша локальная сеть находится вне диапазона 192.168.x.x, то маску подсети для указания в первой строке вы сможете легко вычислить через сервис Network Calculators.

 

Теперь для конфигурации gateway’я для роутинга между двумя интерфейсами необходимо включить IP-форвардинг командой:

 

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

 

И последний штрих: надо отредактировать файл sysctl.conf:

 

sudo nano /etc/sysctl.conf

 

Добавьте в него вот эти две строки для активации роутинга:

 

net.ipv4.conf.default.forwarding=1

net.ipv4.conf.all.forwarding=1

 

После этого ваш интернет-шлюз готов к работе. Можете настраивать клиентские машины. На нашем примере для них gateway будет 192.168.0.10

 

Если все внесенные вами изменения работают корректно и вы желаете внести эти настройки в автозагрузку (а именно, вышеприведенные настройки iptables теряют активность после перезагрузки системы), то сохраните нынешнюю рабочую конфигурацию iptables в файл командой:

 

sudo sh -c "iptables-save > /etc/iptables.up.rules"

 

После этого в сам файл сетевых настроек /etc/network/interfaces (sudo nano /etc/network/interfaces) к параметрам вашего сетевого интерфейса, например, из которого к вам поступает интернет (в нашем случае – это eth0) добавьте строку:

 

pre-up iptables-restore < /etc/iptables.up.rules


То есть оно станет примерно такого вида:

 

auto eth0

iface eth0 inet manual

pre-up iptables-restore < /etc/iptables.up.rules

 

Только не меняйте значения в строке iface, просто добавьте указанную строку последней в разделе auto eth0 (ну или какого-то другого сетевого интерфейса). После этого при перезагрузке сохраненные настройки iptables будут подниматься автоматически.



Источник: https://oss-it.ru/129

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

Авторизироватся через соц. сеть:
Ваш E-mail не будет опубликован.


Пожалуйста, введите буквы, изображенные на картинке выше. Буквы не чувствительны к регистру.