Використання iptables: як "відкрити порт" у віртуальну розробку

Використання iptables: як "відкрити порт" у віртуальну розробку

Епоха локальної розробки пішла в історію. Розвиток інтернету зумовив об 'єктивну необхідність розподіленої обробки інформації. Віртуалізація призвела до того, що один комп 'ютер вже не має значущої перспективи. Розробник повинен мати повноцінний комплект віртуальних машин з будь-якого фізичного пристрою. Налаштування віртуальності та технічної можливості роботи через iptables стало затребуваним і важливим фактором при створенні сучасних інформаційних систем.

Сучасна розробка інформаційних систем

Високі технології при всіх своїх досягненнях засновані на жорстких синтаксичних конструкціях. Синтаксис мови програмування або конфігураційного файлу - менше зло, ніж жорсткість концепції розвитку комп 'ютерної справи в цілому.


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

Робота на одному комп 'ютері та/або сервері - це обмеження. Розробник повинен мати арсенал операційних систем, середовище розробки та тестування. Розробник - це розподілена команда фахівців різної кваліфікації.

Ідея iptables пройшла довгий шлях за короткий час. Сьогодні вона надає досить зручний інструментарій для організації технологічних процесів розробки програмного забезпечення та його використання.

За допомогою iptables відкрити порт для конкретного проекту - не проблема. Обмежити (закрити) доступ - просто і зручно. Фаєрвол firewalld - це CentOS і iptables. Відкрити порт тут можна спеціальним інструментом (утиліта). Це зручно, але не так, як у Debian за допомогою командного рядка.

Вибір операційної системи з сімейства лінуксоїдів в контексті вирішення завдання розподілу портів має значення для системного адміністратора в контексті налаштування, але більш суттєвим є розуміння суті питання: як через iptables відкрити порт і забезпечити можливість роботи.

Комутатор і сервер

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


Це комутатор локальної мережі для невеликої компанії або домашнього застосування. Великий бізнес використовує більш технологічне обладнання, але в будь-якому випадку: пристрій виходу в інтернет і організації локальної мережі повинен пропускати всі пакети і мати відкритими всі порти, які будуть необхідні.

Linux-сервер - це iptables. Як відкрити певні порти показують правила входу, виходу і транзиту (INPUT, OUTPUT і FORWARD). Правил не так багато, параметрів у них трохи більше, але комбінацій і можливостей вони надають достатню кількість. За допомогою iptables: відкрити порт - не проблема, працювати на вході (PREROUTING) або на виході (POSTROUTING) - теж.

Всі правила Linux-сервера еквівалентні: умова (критерій), опис, дія та лічильник. Зміст правила залежить від його застосування.

Фізичний сервер віртуальних машин

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

В ідеалі сервер повинен мати графічну оболонку і "вести" власний робочий процес, поза адміністративним (файлове сховище, хостинг, веб-ресурс,...). Зокрема, для вирішення завдання: самонавчальний парсинг і пошук інформації, файлове сховище і кілька віртуальних машин хорошим рішенням буде комп 'ютер з встановленою системою Debian & Proxmox VE.

Тут потрібен iptables. Відкрити порт для кожної віртуальної машини - це півсправи. Потрібно налаштувати мости, маршрути і організувати роботу самого сервера, як самостійного комп 'ютера, керуючого Apache, MySQL, PHP і браузером. Також потрібно налаштувати Proxmox VE, як систему віртуальних машин, доступних всередині локальної мережі і поза нею.

Це практичний (працюючий) приклад для iptables Debian. Як відкрити порт на багатьох прикладах. Це не оптимальний набір правил, але реально працюючий. Деякі правила дублюють один одного, але їх зіставлення дозволяє зрозуміти, як і що потрібно застосувати в конкретній ситуації.


Примітка. Позиції enp0s31f6, 192.168.100.0, 192.168.100.18 та 192.168.100.1 мають бути замінені на реальний мережевий інтерфейс, реальну мережу, реальні IP-адресу сервера та IP-адресу шлюзу.

Порядок і правила роботи з iptables

Якщо потрібно внести зміни в існуючу систему, слід зберегти всі діючі правила і мережеві параметри. У працюючій системі за будь-яких обставин нічого робити не можна. Найкращий варіант - вести роботи на новому сервері, а після їх завершення поміняти машини.

Краще починати з чистого аркуша. Через ключі -F і -X iptables відкрити порт не вийде, але таблиця правил очиститься і можна буде якісно виконати адміністративну роботу. Фаєрвол (ufw) краще вимкнути відразу. Можна почистити таблицю nat - це теж не буде зайвим.

Далі слід обов 'язкове відкриття доступу за ssh (через iptables відкрити порт 22). Сервер повинен бути керований віддалено. Дозволити пінги і перевірити їх також обов 'язково. Адміністратор сервера повинен бути впевнений у тому, що фізично (технічно) обладнання працює справно. А якщо виникає помилка, то вона буде лежати в правилах iptables. Відкрити порти pop, ftp, http, https та інші можна загальним правилом (multiport) або окремими.

Важливо врахувати, що правила мають значення не тільки за змістом, а й за послідовністю вказівки. У контексті використання Proxmox VE обов 'язково дотримати його вимоги (зокрема, через iptables відкрити порт 8006).


Портам 80 (8080) і 443 слід приділити особливу увагу. Наприклад, iptables (відкрити порти http & https) забезпечує трафік веб-ресурсів. Пошта і FTP не є критичними, якщо вони не включені у спектр функціональності сервера.

Правила iptables діють негайно. Ключ "-A" додає правило, а ключ "-D" вилучає його. Зберегти набір створених правил:

  • iptables-save > /etc/iptables.rules.

Відновити, раніше створений набір правил:

  • iptables-restore < /etc/iptables.rules.

Щоб увімкнути iptables і відкрити порти під час завантаження системи, достатньо записати про це при піднятті основного інтерфейсу у файлі/etc/network/intefaces:

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