LINUX.ORG.RU
ФорумAdmin

Где почитать про маршрутизацию и файерволы?

 , , ,


3

3

Всем привет.

Я осваиваю настройку сетей на примере OpenWRT и Open vSwitch. Уже научился строить SSH тоннели и организовывать VPN на WireGuard и OpenVPN. Примитивные успехи, конечно.

Основная проблема у меня сейчас в том, что я умею работать только с один интерфейсом / одной сетью. А пробрасывать трафик из одной сети с одного интерфейсва в другую сеть не понимаю как.

Например, я не понимаю какие различия между device, port (имеется в виду порт на железе, а не IP-порт), network и zone.

Другой пример. У меня есть роутер на OpenWRT с двумя портами Eth0 и Eth1. OpenWRT сам назначил на порт Eth0 две сети «lan» и «br-lan»(кстаи, зачем он?), а на Eth1 - «wan». И по умолчанию в настройках firewall есть связность между «lan» и «wan». При этом «lan» - это и interface, и zone. С «wan» ситуация аналогичная. Я, конечно, вижу, что связность между «wan» и «lan» есть в настройках /etc/config/firewall. Там указаны reject или accept для разных направлений трафика, а также указан сети(?) source и/или destination. Проблемы начинаются далее. Когда я устанавливаю VPN соединение между OpenWRT(client) и внешним сервисом VPN, появляется новый девайс «tun». При этом новый интерфейс и/или зона не появляется. То есть я должен создать новую зону, ассоциировать с ней VPN подключение в виде device или interface и проключить трафик из «lan» в «vpn» вместо «wan». А как это сделать? И как протестировать утечку трафика вне VPN-подключения?

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

PS. Для конкретики приведу текущую задачу. Хочу чтобы трафик от конкретного IP-адреса, подключённого к OpenWRT шёл только в SSH-туннель построенный между OpenWRT и удалённым Debian-сервером. А далее трафик шёл только в конкретном VPN-подключении и вылезал в Интернет уже после VPN-а. А если какое-то звено цепи не работает, хочу чтобы трафик резался и никуда не шёл.



Последнее исправление: Netman (всего исправлений: 4)

В документации OpenWRT, полагаю. Потому что в обычном линуксе нет никаких зон, а почти все твои вопросы про них. Кроме:

появляется новый девайс «tun». При этом новый интерфейс… не появляется.

Это как вообще? Интерфейс и есть девайс.

как протестировать утечку трафика вне VPN-подключения?

Послушать трафик на наружнем интерфейсе каким-нибудь tcpdump/wireshark, выфильтровывая VPN-трафик, и убедиться, что там ничего страшного не осталось.

t184256 ★★★★★
()

Для понимания принципа, попробуй вот это полистать. Там есть рабочие примеры скриптов. https://www.frozentux.net/documents/iptables-tutorial/

Вообще, сейчас актуально nftables. Принцип тот же, только гибче (глубже вникать).

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от Netman

Судя по их документации, создать пару forwarding между zones, туда и обратно.

Извини, я правда плохой советчик, я OpenWRT настраивал лишь раз, а до этого учился на обычных линуксах и уже знал, что хотел.

t184256 ★★★★★
()

Не, не, не.
Для начала хотя бы ознакомься с модель osi уровни и протоколы.
Это просто для ознакомления. Есть с картинками и подробно.
Просто так будет проще разговаривать.
А потом про маршрутизацию.
Ну и про фильтрацию пакетов.
Это что первое попалось на яндексе. :)
Куча вопросов отпадет сама собой.

hbars ★★★★★
()
Ответ на: комментарий от hbars

Из стать по вашей ссылке: Кадр, сгенерированный интерфейсом Ethernet 1 маршрутизатора, имеет аппаратный адрес источника от интерфейса Ethernet 1 и аппаратный адрес назначения для сетевого адаптера хоста В.

Такие советы мне не нужны.

Netman
() автор топика

Про маршрутизацию и файрволы (и в целом очень обширный курс по сетям) - цикл СДСМ. Первая статья цикла тут https://linkmeup.ru/blog/1188/, остальное в оглавлении в самом начале статьи.

Про настройку openwrt, ovs и прочего что вы перечислили - читайте статьи по соответствующему ПО.

l0stparadise ★★★★★
()
Ответ на: комментарий от l0stparadise

Сети для самых маленьких написаны очень криво. Не печатным словом, а будто записанный устный разговор. Множество мусорных слов и оборотов. А полезного материала мало. Увы.

Netman
() автор топика
Ответ на: комментарий от Netman

Из стать по вашей ссылке:
Кадр, сгенерированный интерфейсом Ethernet 1 маршрутизатора, имеет аппаратный адрес источника от интерфейса Ethernet 1 и аппаратный адрес назначения для сетевого адаптера хоста В.

Такие советы мне не нужны.

Ну тогда. Хьюстон. У нас проблемы. Это и есть те самые азы про которые ты начал спрашивать.
Я же не говорю выучить наизусть.

hbars ★★★★★
()
Ответ на: комментарий от hbars

Нет, это не азы. Это бред. Интерфейс Ethernet не может генерировать кадр. Интерфейс Ethernet это вообще абстрактное понятие. Кадр формируется микросхемой или частью кристалла, которая называется MAС и этот кадр передаётся на PHY, который формирует электрические уровни и отправляет их через набор электрических компонентов в порт RJ-45.

«аппаратный адрес» - это видимо идиотский синоним MAC-адреса.

Очевидно, это SEO-статья. Стыдно такое рекомендовать.

Netman
() автор топика
Ответ на: комментарий от Netman

Есть мнение, что проблема в тебе

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

  • СДСМ хороший учебник
  • у олиферов хороший учебник, хоть и тяжелый
  • даже по ссылке, которая тебе не понравилось, написано грамотнее, чем у тебя. Хотя и слишком тяжёлым языком
  • сертификация начального уровня у любого вендора - хороший вариант. cisco, juniper. есть на трекерах

В принципе, можешь попробовать почитать LARTC, хотя скорее всего не поймёшь

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от Netman

Сети для самых маленьких написаны очень криво. Не печатным словом, а будто записанный устный разговор. Множество мусорных слов и оборотов. А полезного материала мало. Увы.

Дядь, ну найми репетитора который обладает способностями транслировать всем понятные слова в слова понятные только вашей голове.

anc ★★★★★
()
Ответ на: комментарий от l0stparadise

Про маршрутизацию и файрволы (и в целом очень обширный курс по сетям) - цикл СДСМ

В документации OpenWRT,

ну вы чего? этоже развлекательный контент. Типа «дискавери»

antech
()

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

ум, разум раздают в больнице в психиатрическом отделении. специалистов делают в учебных заведениях. Походи на какие нибудь курсы хотябы, ccna например или чет подобное. Хотя я бы на твоем месте забил и пошел в танки играть.

antech
()
Ответ на: комментарий от antech

Походи на какие нибудь курсы хотябы, ccna например или чет подобное.

Вы о чем? ТС пишет «Сети для самых маленьких написаны очень криво»

Хотя я бы на твоем месте забил и пошел в танки играть.

Не очень годное предложение, вдруг ему танки/игры не по душе. Я бы сократил до:

Хотя я бы на твоем месте забил

anc ★★★★★
()
Ответ на: комментарий от Vidrele

Держал эту книгу лет 15 назад. Даже читал некоторые главы. Насколько я помню, там теория без практики. Всё равно спасибо, надо освежить. Я про них как то забыл. А ведь считается золотой стандарт по сетям в ru-сегменте..

Netman
() автор топика
Ответ на: комментарий от Netman

Держал эту книгу лет 15 назад.
Держал

facepalm.jpg

Даже читал некоторые главы.
главы

С оглавлением не перепутали?

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от Netman

Даже не знаю как и ответить с учетом что для вас ««Сети для самых маленьких написаны очень криво»» Пожалуй примером будет:
У вас какая машина?
Красненькая.

anc ★★★★★
()
Ответ на: комментарий от Netman

Именно. Вам уже дали самый толковый совет, но вам он по какой-то причине не нравится. Мы должны всем форумом вангануть, что именно вам по душе?

anc ★★★★★
()

Всем привет.

Привет!

Уже научился строить SSH тоннели и организовывать VPN на WireGuard и OpenVPN.

это слишком оптимистично, потому что

я не понимаю какие различия между device, port (имеется в виду порт на железе, а не IP-порт), network и zone.

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

IETF RFC. Лучшее.

kindof
()

Хочу чтобы трафик от конкретного IP-адреса, подключённого к OpenWRT шёл только в SSH-туннель

iptables почитай про эту штуку yelp man:iptables, в openwrt просто web интерфейс над ней.

Правило наверное могло бы выгладить так:

-A vpn-firewall -s <source_ip_address> ! -o tun+ -j vpn-firewall-reject

Залосниться по SSH на openwrt и выполни iptables -nvL --line-numbers, увидишь все правила, потом посмотри через web интерфейс настройки файрвола, постепенно догадаешься как они соотносятся.

Но это только filter таблица, есть еще таблица nat: iptables -t nat -nvL --line-numbers, короче смотри результаты, анализируй и читай доку.

У меня есть роутер на OpenWRT с двумя портами Eth0 и Eth1

В доке OpenWRT про это есть. Как я понимаю, типичный чип роутера может работать с двумя Ethernet интерфейсами, один из которых идет во встроенный многопортовый свич который реализован отдельной логикой (или даже микросхемой), его называют LAN, другой напрямую выходит из роутера как отдельный Ethernet порт и его помечают как WAN. Иногда отдельного порта нет, тогда используется один из портов встроенного свича и посредством VLAN его можно логически отделить от прочих портов свича.

Aber ★★★★★
()
Ответ на: комментарий от Aber

Спасибо за ответ.

Залосниться по SSH на openwrt и выполни iptables -nvL --line-numbers, увидишь все правила, потом посмотри через web интерфейс настройки файрвола, постепенно догадаешься как они соотносятся.

А есть разница между командой

 iptables -nvL --line-numbers 
и тем, что написано в /etc/config/firewall ?

Netman
() автор топика
Ответ на: комментарий от Aber

Правило наверное могло бы выгладить так:
-A vpn-firewall -s <source_ip_address> ! -o tun+
! -o tun+

Не перестану повторять: Не надо использовать not без особой нужды, которая бывает очень не часто. На этом уже тысячи копий тем «сломано». Представьте что у вас ещё появились интерфейсы ppp+. Что делать будете?
Сначала accept кому можно, а потом reject || drop всем остальным.
PS Cуществует мнение, что кошерно policy по умолчанию в reject || drop держать, но мне лично после очистки правил на удаленном девайсе как-то не зашло, предпочитаю по старинке.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)

Ищи книжки по CCNA, CCENT (можно и на русском найти в pdf), там базовые знания по сетям и маршрутизации, конечно с упором в cisco, потом CCNP можешь почитать, ну а дальше только практика, можешь лабы в eve-ng делать, можешь на работу куда-нибудь пойти стажером

Kolins ★★★★★
()

Файервол не занимается связностью. Связность достигается за счёт маршрутов. Вот есть у домашнего роутера два интерфейса, есть два directly connected маршрута, есть default маршрут, благодаря им достигается связность между домашней сетью и интернетом.

Файервол занимается двумя задачами: 1) фильтрация, 2) трансляция адресов. Трансляция адресов нужна только для IPv4.

Фильтрация настраивается просто. Сначала разрешаем инициацию нужных нам соединений, затем разрешаем пакеты установленных соединений, затем запрещаем все остальное. Например, на языке iptables, чтобы разрешить соединения из локалки (eth0) в интернет (eth1):

iptables -A FORWARD -i eth0 -o eth1 -m ctstate --ctstate NEW -j ACCEPT
iptables -A FORWARD -m ctstate --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -j REJECT

Разрешить соединения из локалки (eth0) к роутеру:

iptables -A INPUT -i eth0 -m ctstate --ctstate NEW -j ACCEPT
iptables -A INPUT -m ctstate --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT

Трансляция адресов тоже настраивается просто. Например, на языке iptables, чтобы оттранслировать серые адреса в адрес на eth1:

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth1 -j MASQUARADE

Не надо пытаться смешивать трансляцию адресов и фильтрацию. Если ты хочешь заблокировать какие-то соединения, делай это с помощью фильтрации. Если ты хочешь менять адреса в проходящих пакетах, делай это с помощью трансляции адресов.

Касательно «текущей задачи». SSH туннель это на самом деле port forwarding, причём только TCP. Например, если ты пробросил порт удалённого сервера на ssh клиент, запущенный на роутере:

(router)# ssh -L 1234:remote-server:1234 user@debian-server

И хочешь чтобы хост 192.168.12.34 мог подключаться только к проброшенному порту, надо использовать фильтрацию:

iptables -A INPUT -i eth0 -s 192.168.12.34 -p tcp --dport 1234 -m ctstate --ctstate NEW -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.12.34 -p tcp -m ctstate --ctstate NEW -j REJECT
iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Файервол не занимается связностью. Связность достигается за счёт маршрутов.

Файервол занимается двумя задачами: 1) фильтрация, 2) трансляция адресов

Спасибо. Мне стало понятнее. И за примеры спасибо.

Netman
() автор топика
Ответ на: комментарий от iliyap

Вы почитали очень большую кашу. Часть каши хоть и верная, но в ней слишком много «масла» которое было скопипашенно откуда-то без понимания.
Но окончание этой каши (последние правила), только подтверждает что вы «не шпрэх зе дойч». https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

anc ★★★★★
()
Ответ на: комментарий от anc

Не надо использовать not без особой нужды, которая бывает очень не часто. На этом уже тысячи копий тем «сломано».

  1. Я админ локалхоста

  2. Правило «никогда не использовать not» это из SQL, но в iptables мне оно подходит :)

Aber ★★★★★
()
Ответ на: комментарий от Aber

Правило «никогда не использовать not» это из SQL, но в iptables мне оно подходит :)

1. К SQL это не имеет никакого отношения.
2. В SQL это как раз базовое
3. Вы так и не поняли о чем я написал. Добавляем разрешающие правила и потом если нужно завершаем запрещающим. На нагрузку это никак не повлияет, цепочка прервётся на сработавшем правиле.

anc ★★★★★
()
Ответ на: комментарий от Netman

и тем, что написано в /etc/config/firewall ?

В ядре есть подсистема netfilter (или как-то так), iptables в нее записывает правила обработки сетевых пакетов в виде байткода. Команда iptables -nvL прямо из ядра читает инструкции и отображает их в виде правил iptables.

А если говорить про файл /etc/config/firewall то это просто модель данных с которой удобно работать из Unified Configuration Interface (UCI) который используется на OpenWRT. Можно сказать что это промежуточное представление правил фильтрации и форвардинга.

iptables полезно знать, но это низкоуровневая штука, например понаписав кучу правил можно забыть что все эти правила ты создал только для IPv4, дальше похожее нужно проделать для IPv6 с использованием ip6tables, поэтому часто удобно полагаться на какой-нибудь высокородный фронтенд типа UFW или тот же файрвол на OpenWRT.

Aber ★★★★★
()
Ответ на: комментарий от Aber

поэтому часто удобно полагаться на какой-нибудь высокородный фронтенд типа UFW или тот же файрвол на OpenWRT.

И создать 100500 тем на лоре “у меня не работает X”

anc ★★★★★
()
Ответ на: комментарий от iliyap

Файервол не занимается связностью.

Но ломает связность при кривой настройке. И по определению эту самую связность ограничивает. Поэтому его и валят в одну кучу с маршрутами те, кто не знает теории.

Vidrele ★★★
()

«lan» и «br-lan»(кстаи, зачем он?)

У меня сейчас нет доступа к роутеру с OpenWRT, но я предположу что br-lan, это bridge который объединяет WI-FI и Ethernet свитч в одну логическую сетку.

в настройках firewall есть связность между «lan» и «wan»

Следовательно «lan» является отдельной сетью wide area network (WAN), а br-lan является твоей домашней сетью (Ethernet порты + Wi-Fi). Пакеты из одной сети уходят в другую через Gateway и этот Gatway (который твой роутер) еще и делает Network Address Translation (NAT), т.е. когда IP пакеты отправляются в WAN то у исходящих IP пакетов изменяется обратный адрес (src) на IP роутера в WAN, когда приходят ответы gateway/роутер выполняет обратный процесс, меняя адресата (dst) на конкретный IP в локальной сети.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от Netman

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

Примеры консольных команд и их вывода там есть. Дальнейшая практика у всех разная: кому-то бытовой роутер настроить, кому-то VPN поднять, кому-то реализацию сокетов написать. Зная теорию, ты разберешься в любом RFC, настроишь даже Mikrotik без мануала, построишь работающую локалку почти без гугления, а инструкции вида «делай раз, делай два, делай три» будешь выполнять с пониманием. Да, man nmap ты тоже будешь читать и понимать, в отличие от script kiddies.

И нет, мне эта книга не показалась сложной. Учебник как учебник. Без воды, но и без лишнего ухода в частности.

Vidrele ★★★
()
Ответ на: комментарий от Vidrele

Но ломает связность при кривой настройке.

Это вы про вариант когда на поселковой дороге кто-то поставил бетонный блок?

И по определению эту самую связность ограничивает.

Половину блока?

Поэтому его и валят в одну кучу с маршрутами те, кто не знает теории.

Оказалось промахнулись поворотом с трассы и не туда свернули?

anc ★★★★★
()