Цей пост намагається трохи пояснити, як працюють мережі та як перетворити наше обладнання Linux на маршрутизатор, який забезпечує трохи більше нашої мережі, будь то вдома чи навіть у бізнесі. Тож приступимо до справи:
Маршрутизація та фільтрація
Щоб поговорити і зрозуміти про маршрутизацію, ми спочатку можемо визначити, яка функція маршрутизатора? Для цього ми можемо сказати, що маршрутизатор, крім створення мережі та дозволу з'єднання з іншим обладнанням (знаючи, що ми можемо зробити це за допомогою точки доступу, комутатора, концентратора або інших), має можливість з'єднувати дві різні мережі між собою.
Як ми бачимо на зображенні, існує локальна мережа "10.0.1.0", яка створюється маршрутизатором і досягає одного з двох її інтерфейсів. Тоді маршрутизатор на іншому інтерфейсі має іншу мережу із загальнодоступним IP-адресою, за допомогою якої він може підключатися до Інтернету. Функція маршрутизації в основному служить посередником між цими двома мережами, щоб вони могли спілкуватися.
Linux як маршрутизатор.
Звичайно, ядро Linux вже має можливість переадресації, але за замовчуванням воно вимкнено, тому, якщо ми хочемо, щоб наша Linux виконувала цю роботу, ми повинні перейти до файлу.
/proc/sys/net/ipv4/ip_forward
Там ми виявимо, що це файл, який містить лише нуль "0", і ми повинні змінити його на "1", щоб активувати цю поведінку. На жаль, це видаляється при перезавантаженні комп’ютера, щоб залишити його активованим за замовчуванням, ми повинні використовувати команду:
sysctl net.ipv4.ip_forward=1
Або відредагуйте його безпосередньо у файлі /etc/sysctl.conf. Залежно від розподілу ця конфігурація також може бути у файлі у форматі /etc/sysctl.d/.
За замовчуванням наш Linux повинен мати таблицю маршрутизації, яка, як правило, є конфігурацією нашої мережі LAN і підключенням до маршрутизатора. Якщо ми хочемо побачити цю маршрутизацію, ми можемо використовувати дві команди:
route -n
o
netstat -nr
Обидві команди повинні повертати однакові.
Загалом, цієї конфігурації достатньо, щоб ваш Linux служив шлюзом, а інші комп’ютери могли переходити через наш комп’ютер. Тепер, якщо ми хочемо, щоб наш Linux з'єднував дві або більше мереж, локальних чи ні, наприклад, ми можемо використовувати статичні маршрути.
Припустимо, мій Linux має два мережеві інтерфейси, перший має підключення до Інтернету, мережа якого становить 172.26.0.0, а друга (10.0.0.0) має комп’ютери з іншої локальної мережі. Якщо ми хочемо направити пакети до цієї іншої мережі, ми можемо використовувати:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8
Загалом це:
route add -net REDDESTINO netmask MASCARA gw IPDELLINUX
якщо ми дамо маршрут -n незалежно від того, існує ця мережа чи ні, ця маршрутизація буде виправлена в нашій таблиці.
Якщо ми хочемо усунути згадану маршрутизацію, ми можемо використовувати
route del -net 10.0.0.0 netmask 255.0.0.0
iptables.
В основному iptables використовується для фільтрації пакетів, вихідних, вхідних чи інших, це робить його чудовим інструментом для управління нашим мережевим трафіком. Ну, iptables, так як це дозволяє нам фільтрувати трафік того самого комп'ютера, це також дозволяє фільтрувати трафік, який проходить через нього. (Пересилання). Iptables можна розділити на таблиці, ланцюжки та дії.
- Дошки: в основному може бути дві таблиці, фільтр, фільтрувати пакети та nat перекладати адреси, тобто переходити з однієї мережі в іншу.
- Ланцюги: Ланцюг відноситься до типу трафіку, який ми хочемо відфільтрувати або переплисти, тобто до якого трафіку ми будемо застосовувати таблиці? і вони можуть бути: ВХІД: Вхідний трафік, ВИХІД: вихідний трафік або ВПЕРЕД: Трафік, який проходить через нього, але це не належне з'єднання.
- Це також може з'явитися ПОРОШТУВАННЯ, який використовується для обробки пакету певним чином після його маршрутизації.
- Дії: Дії - це в основному дії, які слід виконати з ланцюжком. Ця дія може бути КРАПЛЕННЯ, що просто руйнує цей трафік або ПРИЙМІТИ. що дозволяє трафіку робити таку дію.
Правила IPTABLES зберігаються та виконуються в тому порядку, в якому вони були створені, і якщо правило видаляє попереднє правило, завжди застосовується останнє правило в порядку.
Політика брандмауера.
Загалом, брандмауери, природно, працюють двома способами:
- Дозволити весь трафік, крім, або
- Не дозволяти рух, крім ...
Щоб застосувати правила, використовуйте IPTABLES - РАБОЧИЙ ЛАНЦЮГ
Де рядок представляє тип трафіку (INPUT, OUTPUT, FORWARD, POSTROUTING ...), а дія - DROP OR ACCEPT.
Давайте розглянемо приклад.
Тут ми бачимо, що спочатку мені вдалося здійснити пінг, а потім я сказав IPTABLES, що весь вихідний трафік був ПАДИМ або заборонений. Потім я сказав IPTABLES прийняти це.
Якщо ми збираємося створювати брандмауер з нуля, ми завжди повинні застосовувати правила (Не допускати жодного трафіку, крім ... Для цього тоді ми застосовуємо правила
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Для повернення ми пишемо те саме і замінюємо DROP на ACCEPT.
На цьому етапі, оскільки весь трафік відмовлено, ми починаємо повідомляти нашим IPTABLES, який трафік він може мати.
Синтаксис:
iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción
Де:
Рядок = ВХІД, ВИХІД або ВПЕРЕД
origin_ip = Походження пакетів, це може бути окремий IP або мережа, і в цьому випадку ми повинні вказати маску).
destination_ip = куди прямують пакети. це може бути окремий IP або мережа, і в цьому випадку ми повинні вказати маску).
протокол = вказує протокол, що використовується пакетами (icmp, tcp, udp ...)
порт = пункт призначення пункту руху.
дія = ПАДАЙТЕ або ПРИЙМАЙТЕ.
Приклад:
Застосовуються ВСІ обмежені правила.
Потім ми додаємо правила, щоб мати змогу отримувати трафік через порти 80 HTTP та 443 HTTPS, з протоколом TCP. Потім порт 53 Застосовується для DNS-клієнта для вирішення доменів, інакше ви не будете керувати. Це працює з протоколом udp.
Лінія:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Це відбувається через наступне: Коли ви, наприклад, робите HTTP-запит, ви підключаєтесь до порту 80 сервера, але сервер для повернення інформації повинен підключатися до вас через будь-який порт. (Загалом більше 1024).
Оскільки всі наші порти закриті, цього не буде досягнуто, якщо ми не відкриємо всі порти вище 1024 (погана ідея). Це говорить про те, що весь вхідний трафік, що надходить від з'єднання, яке я встановив сам, приймається. Я маю на увазі зв’язок, який я в принципі започаткував.
Сподіваюся, вам сподобалась ця інформація. У наступному я розповім про NAT, проксі та сценарії Firewal.
Це основа, яку багато підприємців беруть для виготовлення власних брандмауерів, тому на ринку існує стільки брандмауерів із вбудованим Linux, деякі хороші, а інші не так вже й багато.
Відмінна стаття. З нетерпінням чекаю другої частини.
Дуже гарне пояснення, це допомогло мені зрозуміти суть моєї роботи. Дякую
Привіт, Jlcmux,
Чудово, мені дуже сподобалось, коли буде доступна інша сторона?
Вітаю та дякую за поділ
Дякую за коментар.
Я надіслав іншу частину вчора, протягом дня, думаю, вони її опублікують.
Привіт.
Дуже хороший друг зі статтею @ Jlcmux, я справді дізнався з ним, оскільки він прояснив деякі сумніви, які у мене були деякий час, до речі, ви не проти були б поділитися книгою джерела статті, Себастьяном БОБІЛЬЄ, ну slau2s і зараз побачити 2-ю частину, salu2s.
Привіт Дякую за коментар Ізраїлю.
Виявляється, книга у мене є у фізичному вигляді. Але я знайшов це посилання в Google Books. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=
Я думаю, що це закінчено.
Дуже хороша стаття, я додаю запитання: Якою була б перевага використання linux як маршрутизатора, якщо такий є, стосовно апаратного забезпечення, виділеного для нього? Або це просто для вправ? Я знаю, що існують спеціальні дистрибутиви, але я не знаю, чи будуть вони виправляти старі ПК або забезпечувати більшу гнучкість у конфігурації.
Ну, я думаю, переваги та недоліки залежать від сценарію, коли ви збираєтесь це реалізувати. Чому, звичайно, ви не збираєтесь купувати UTM або щось подібне для свого будинку? І, можливо, для малого бізнесу, який теж не може собі цього дозволити. Це також добре як вправа, оскільки воно допомагає зрозуміти всю логіку цього, і ви можете краще налаштувати виділений FWall. На додаток до цього майже всі ці пристрої насправді є вбудованим Linux.
Привіт.
Привіт, запитання, чи можете ви створити "штучний" інтерфейс у Linux для подібної маршрутизації між мережами? (стиль трасування пакетів) для роботи з віртуальними машинами? наприклад, якщо у мене є eth0 (оскільки, звичайно, у мене є одна карта), чи можу я створити eth1 для створення іншої мережі? Дуже хороший репетитор!
Звичайно, в Linux ви можете створювати віртуальні інтерфейси. Якщо у вас є eth0, ви можете мати eth0: 0, eth0: 1, eth0: 2 ... тощо
Так добре, дякую за поділ