Тази публикация се опитва да изясни малко за това как работят мрежите и как да превърнем нашето Linux оборудване в рутер, който осигурява малко повече нашата мрежа, независимо дали е домашна или дори бизнес. Така че нека да се заемем с бизнеса:
Маршрутизиране и филтриране
За да говорим и разбираме за маршрутизацията, първо можем да определим каква е ролята на рутера? За това можем да кажем, че рутерът, освен че създава мрежа и позволява връзка с друго оборудване (знаейки, че можем да направим това с AP, Switch, Hub или други), има способността да свързва две различни мрежи помежду си.
Както виждаме на изображението, има локална мрежа „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 - P ДЕЙСТВИТЕЛНА ВЕРИГА
Когато низът представлява вида на трафика (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 или мрежа и в този случай трябва да посочим маската).
дестинация_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, наистина научих с него, тъй като той изясни някои съмнения, които имах от известно време, между другото няма да имате нищо против да споделите книгата на източника на статията, тази на Sébastien BOBILLIER, добре 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 ... и т.н.
Толкова добре, благодаря за споделянето