Ubuntu

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

У цій нотатці буде розказано як за допомогою iptables налаштувати системи з Ubuntu та Debian для роздачі інтернету іншим комп'ютерам локальної мережі. На простому прикладі буде показано як машину з двома мережевими інтерфейсами (до одного надходить інтернет, з іншого — «виходить») зробити шлюзом.

Припустимо, що апаратно-мережева частина вже повністю налаштована, на вашій машині є працездатний інтернет, і ви бачите інші комп'ютери мережі. Тому давайте розберемося до чого, для цього введемо команду:

 

ifconfig

 

Вона видасть список мережних інтерфейсів, що працюють в даний момент. Серед них треба впізнати ті, що починаються зі слів "Link encap: Ethernet" - це інтерфейси мережевих карток. Як правило, це eth0 та eth1.

Тепер потрібно впізнати, в який з них надходить інтернет, а з якого «виходить». Найпростіше це зробити за їхніми ip-адресами.

Отже, допустимо через eth0 ви отримуєте інтернет (наприклад через adsl-модем за протоколом ppp), а eth1 пов'язує вас з локальною мережею.

Якщо локальна мережа налаштована через Network Manager, ми рекомендуємо прописати ці налаштування безпосередньо в системному конфігураційному файлі мережі:

 

sudo nano /etc/network/interfaces


Тут виправте налаштування вашого мережного інтерфейсу, підключеного до локальної мережі (у нашому випадку eth1), відповідно:

 

автомобіль eth1

iface eth1 inet static

адреса 192.168.0.10

маска мережі 255.255.255.0

мережа 192.168.0.0

трансляція 192.168.0.255

 

Значення address - це айпі вашої машини в локальній мережі, за цією адресою власне і буде розташовуватися шлюз.

Значення netmask — у локальних мережах цього діапазону найчастіше така. Для інших діапазонів можна визначити тут.

Значення мережі та 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

або

sudo systemctl restart networking.service

 

Командою:

 

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.xx, маску підмережі для вказівки в першому рядку ви зможете легко обчислити через сервіс 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

net.ipv4.ip_forward=1

 

sudo  sysctl -p

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

 

sudo cat /etc/resolv.conf

 

Якщо всі внесені вами зміни працюють коректно і ви бажаєте внести ці налаштування в автозавантаження (а саме, наведені вище налаштування 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


Тобто воно стане приблизно такого вигляду:

 

автомобіль eth0

iface eth0 inet посібник

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

 

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