Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Firewall *nix: iptables, ipfw, pf etc...

Автор: Alukardd
Дата сообщения: 19.08.2010 22:50
iptables

Linux


настройка iptables (крупные статьи переехали на wikibooks)
настройка iptables (opennet)
Easy Firewall Generator for IPTables Online
l7-filter - дополнения для netfilter, позволяющее создавать правила основываясь на данных прикладного уровня.
ipset - модуль для ядра Linux к фаерволу netfilter для создания и управления наборами адресов, портов, связок ip+mac.

Так же может быть интересным
Перевод руководства по iproute2 и управлению трафиком в Linux (LARTC) -- внимательно читать оглавление - тема содержит уйму всего!!!
Введение в управление трафиком, дисциплины обработки очередей (теория) (opennet) - aka Повесть о Linux и управлении трафиком.
QoS в Linux - iproute2 и u32 селектор (хабр)
QoS в Linux - iproute2, издеваемся над трафиком (хабр)



ipfw

FreeBSD

русский MAN (opennet)
настройка ipfw (opennet)
настройка ipfw (lissyara)

Достаточно частый вопрос
Балансировка и резервирование канала (samag.ru)



pf

OpenBSD

начальная настройка pf (lissyara)
настройка pf как шлюза (lissyara)
Автор: Alukardd
Дата сообщения: 13.01.2011 23:48
b.s. Эх... Ну сам в своей теме не напишешь - ни кто не напишет) Наверное, всем шапки хватает
Ладно к делу...
Меня тут начал раздирать вопрос о так называемом one-to-one. Интересует случай когда Провайдер в качестве настроек и выдает "белый" ip. Как при этом он осуществляет движуху моих пакетов?
Как, например, мне, имея пул внешних адресов, дать один из них внутреннему серваку. Причем, что бы у внутреннего сервака адрес я вбил внешний("белый"), провайдер-то его до моего шлюза как-то довел, и мне хтелось бы дальше его прокинуть.
Вопрос зачем тут не уместен. Тут важен вопрос как???
В наличии Debian Lenny с iptables.

p.s. не проверял, но была глупая мысль просто добавить этот адрес в фовардинг(туды/сюды), не назначая для него NAT,DNAT, собстно трансляцию производить-то и не надо.
Автор: HEKTOPaul
Дата сообщения: 14.01.2011 13:36
Допустим, схема твоей сети:

(Internet)===[шлюз провайдера]---[<eth0>твой роутер<eth1>]---[свич]===(твоя LAN)

и провайдер выдал тебе сеть 7.7.7.0/28: адрес шлюза (провайдера) - 7.7.7.1, адрес на eth0 твоего роутера с Debian - 7.7.7.2 (маску делаешь 255.255.255.252), оставшиеся доступные тебе адреса - 7.7.7.3-14.

Из доступных адресов формируем IP-сети (дополнительно теряя при этом по 3 адреса на каждой - адрес сети + адрес на eth1 + широковещательный адрес). В данном случае на eth1 можно добавить 2 сети с белыми адресами:
1) 7.7.7.4/30 (доступно 2 адреса: первый - на eth1 роутера, второй - на внутренний сервер);
2) 7.7.7.8/29 (доступно 6 адресов: первый - на eth1 роутера, оставшиеся 5 - на внутренние сервера).
Т.о. остается лишь 6 адресов из изначально доступных 12.

Если подключение по Ethernet и провайдер позволяет подключение к свичу, то, наверное, этот вариант проще и позволяет не терять адресов (на eth0 роутера тогда нужна маска 255.255.255.240 и на остальных серверах она же).

Если выдаваемая сеть 7.7.7.0/29, то на eth1 можно повесить лишь одну сеть 7.7.7.4/30 и назначить "белый" адрес лишь одному внутреннему серверу.

Можно попробовать договориться с провайдером о выделении диапазона из 2 частей - отдельно для роутера (например, 7.7.7.0/30) и отдельно для серверов (например, 7.7.7.16/28), правда тут 3 адреса все равно теряешь (адрес сети, адрес на eth1 и широковещательный адрес).
Автор: Alukardd
Дата сообщения: 14.01.2011 14:05
HEKTOPaul
я что-то не совсем вкуриваю. т.е. сейчас в мире куча просраных адресов???
Автор: HEKTOPaul
Дата сообщения: 14.01.2011 16:02
Alukardd
Я предложил вариант (с точки зрения себя как пользователя), который должен заработать при таком раскладе (провайдер выдает один непрерывный пул адресов, все внутренние сервера подключены после роутера). Возможно (да и наверняка) он не самый правильный... Думаю, что многие на сервера в DMZ предпочитают все же вешать "серые" адреса, DNAT'я на нужный сервер в зависимости от адреса получателя IP пакета.
Автор: urodliv
Дата сообщения: 15.01.2011 18:44
Alukardd
Так ваш вопрос лежит в области простой маршрутизации. Тут ничего хитрого нет. Допустим ваш сервер с "белым" адресом посылает куда-нибудь запрос. При этом у него есть некоторый шлюз, через который он их и засылает. Далее пакет приходит на этот маршрутизатор и там, на основании таблицы маршрутизации, ваш пакет пересылается дальше и т.д.

Цитата:
была глупая мысль просто добавить этот адрес в фовардинг(туды/сюды), не назначая для него NAT,DNAT, собстно трансляцию производить-то и не надо

Мысль не глупая. Если сделать именно так, то мы получим банальный маршрутизатор.
Автор: Alukardd
Дата сообщения: 15.01.2011 18:59
urodliv
ну т.е. специальные маршруты надо добавлять (что бы пакеты вернулись, уйти наверное и так уйдут)?
и получается что ip маршрутизатора должен лежать в диапазоне маски клиента?
Автор: urodliv
Дата сообщения: 15.01.2011 19:15

Цитата:
ну т.е. специальные маршруты надо добавлять (что бы пакеты вернулись, уйти наверное и так уйдут)?

Это при статической маршрутизации надо добавлять. При динамической маршрутизации задача составления маршрутов возлагается на протоколы: rip, ospf, bgp и др.
Без маршрутов ни отправить, ни принять.

Цитата:
и получается что ip маршрутизатора должен лежать в диапазоне маски клиента?

Точнее адрес маршрутизатора должен находится в той же подсети, что и адрес клиента.
Автор: vlary
Дата сообщения: 15.01.2011 20:09
Нам один провайдер по оптике дает сетку адресов./28 Х.Х.29.129-Х.Х.29.142, плюс адрес Х.Х.26.114 с нашей стороны и шлюз Х.Х.26.113 с их стороны. Второй провайдер дает сетку по ДСЛ, тоже /28, У.У.140.129-У.У.140.142, где адрес У.У.140.129 - модем.
По идее, адреса 143 использовать нельзя, 128 - тоже нельзя, потому в первом случае получается 14 адресов, во втором - 13 (минус шлюз).
Соответственно, шлюз к первому провайдеру - Х.Х.26.114, ко второму - У.У.140.129
Ну и понятно, что в этом случае простая маршрутизация не катит, приходится строить раут-мапы с полиси роутингом через акцесс-листы.
Автор: Alukardd
Дата сообщения: 16.01.2011 02:54
vlary
эм.. ну в вашем примере, как и уже упомяналось выше, теряются 2 ip с каждой подсети, так же не может быть везде, пулы-то не резиновые.
Цитата:
в этом случае простая маршрутизация не катит, приходится строить раут-мапы с полиси роутингом через акцесс-листы.
это вы о PBR говорили?

urodliv
да у меня провисы с знаниями об этом вопросе. ну допустим ставлю я в свой debian пакет quagga и поднимаю там ospfd и zebra на всех интерфейсах. И он типа сразу заменит мне таблицы маршрутизации? Зависит ли это от использования оного у провайдера?
Я просто не совсем вкуриваю во что это реально выливается... Все те доки и ссылки, что я щас прочитал не отвечают мне на мои вопросы.
Автор: urodliv
Дата сообщения: 16.01.2011 09:19

Цитата:
ну допустим ставлю я в свой debian пакет quagga и поднимаю там ospfd и zebra на всех интерфейсах. И он типа сразу заменит мне таблицы маршрутизации? Зависит ли это от использования оного у провайдера?

Если в вашей сети только один единственный маршрутизатор, то поднятие динамической маршрутизации на нём оправдано только, если провайдер готов предоставить вам такую услугу. В противном случае подобные вещи имеет смысл использовать, если вы сами управляете несколькими сетями или автономной зоной
Автор: Ruza
Дата сообщения: 16.01.2011 09:24
О тема оживилась... Да и каким вопросом! (Самому интересно, но сцуко не на ком проверить )
Я тож внесу свои соображения...
Alukardd

Цитата:
ну допустим ставлю я в свой debian пакет quagga и поднимаю там ospfd и zebra на всех интерфейсах. И он типа сразу заменит мне таблицы маршрутизации? Зависит ли это от использования оного у провайдера?

Не заменит, а дополнит и раздаст анонсы другим (вроде так)
На счёт провайдера - не совсем понятно как это будет выглядеть потому как если пров использует, то он будет анонсировать и твои адреса, да и примут ли другие твой анонс если ты к нему имеешь отношение только как пользователь.

2 ALL
Есть такой target - iptables -j ROUTE (скорее всего понадобится пересборка таблиц и/или ядра)
http://www.iptables.org/projects/patch-o-matic/pom-external.html#pom-external-ROUTE

Цитата:
This option adds a `ROUTE' target, which enables you to setup unusual
routes. For example, the ROUTE lets you route a received packet through
an interface or towards a host, even if the regular destination of the
packet is the router itself. The ROUTE target is also able to change the
incoming interface of a packet.

The target can be or not a final target. It has to be used inside the
mangle table.

ROUTE target options:
--oif ifname Send the packet out using `ifname' network interface.
--iif ifname Change the packet's incoming interface to `ifname'.
--gw ip Route the packet via this gateway.
--continue Route the packet and continue traversing the rules.
--tee Route a copy of the packet, but continue traversing
the rules with the original packet, undisturbed.
Автор: Alukardd
Дата сообщения: 16.01.2011 14:00
Ruza
трололо, шикарное расширение!
Тут как раз в другой теме вопрос стоял. Но тут я прочитал раньше, чем там)

На данный момент у меня в голове следующие мысли скопились, по поводу общей картины.
можно ли будет прописать на сервер1 следующие настройки:
ip: 123.123.123.51
mask: /29
gw 123.123.123.49 или 192.168.0.2

тут получается либо надо маршрут до шлюза писать, либо шлюз формально оказывается не в той подсети что и сервер(будет ругаться и хз будет ли работать). Возможно во 2-м случае придется давать статическую arp запись...

Правильно ли вообще я мыслю?
Автор: Ruza
Дата сообщения: 16.01.2011 15:23

Цитата:
Ruza
трололо, шикарное расширение!

Это ты меня тролем назвал, что ли?
Автор: vlary
Дата сообщения: 16.01.2011 15:52
Alukardd
Цитата:
теряются 2 ip с каждой подсети
Ну а что делать? Пусть это ИАНА заботит. Нам выделенных айпи хватает (все работают через НАТ и сквид), а перестанет хватать - затребуем у провайдера более крупную подсеть.

Цитата:
это вы о PBR говорили?
О нем самом.


Автор: Alukardd
Дата сообщения: 16.01.2011 16:31
Ruza
Цитата:
Это ты меня тролем назвал, что ли?
нет) тебя я назвал
Цитата:
Ruza
трололо - это что типа "вау".
Автор: vlary
Дата сообщения: 16.01.2011 18:38

Цитата:
трололо - это что типа "вау".
Это была в 70-е такая "Песенка без слов", которую пел Эдуард Хиль, она состояла из строчек типа
"трололо ло ло , трололо, трололо, трололо ло ло".
Его еще за нее на Западе прозвали "Мистер Трололо".
Автор: Ruza
Дата сообщения: 16.01.2011 19:20
Я похожую схемку хотел реализовать, но что то астериск не захотел работать за роутером... Поэтому был поставлен свитч в него воткнуты шнурки от роутера и астериска, а также езернет прова.
Автор: Alukardd
Дата сообщения: 16.01.2011 19:28

Цитата:
тут получается либо надо маршрут до шлюза писать, либо шлюз формально оказывается не в той подсети что и сервер(будет ругаться и хз будет ли работать). Возможно во 2-м случае придется давать статическую arp запись...

Правильно ли вообще я мыслю?
Автор: Ruza
Дата сообщения: 16.01.2011 20:02
Alukardd

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


Я завтра проверю - если время будет... Но ядро с таблицами пересобирать не буду...
Автор: Alukardd
Дата сообщения: 16.01.2011 20:07

Цитата:
Но ядро с таблицами пересобирать не буду...
это про -j ROUTE -то, да не надо... он тут вроде как и не в тему...
Автор: HEKTOPaul
Дата сообщения: 17.01.2011 10:56
urodliv

Цитата:
Мысль не глупая. Если сделать именно так, то мы получим банальный маршрутизатор.

Какие сетевые параметры в данном случае указывать на интерфейсе "внутреннего" сервера и на обоих интерфейсах Debian-роутера?
Автор: urodliv
Дата сообщения: 17.01.2011 11:32

Цитата:
можно ли будет прописать на сервер1 следующие настройки:
ip: 123.123.123.51
mask: /29
gw 123.123.123.49 или 192.168.0.2

тут получается либо надо маршрут до шлюза писать, либо шлюз формально оказывается не в той подсети что и сервер(будет ругаться и хз будет ли работать). Возможно во 2-м случае придется давать статическую arp запись...

Правильно ли вообще я мыслю?

Может быть я не знаю каких-то хитрый технологий, или что-то не учёл, но я считаю, что реализовать вашу схему таким образом нельзя. Ибо сервер и внутренний интерфейс в разный подсетях.
Поэтому решение вижу стандартное:
1. Серверам назначаем "серые" адреса. Можно из подсети "локалки", а можно другую придумать. Но тогда либо вторую сетевуху вешаем, либо алиас назначаем.
2. На "внешнем" интерфейсе прописываем алиасы из пула адресов провайдера.
3. Сопоставляем внутренние адреса серверов необходимым "внешним".
4. Ну и по необходимости назначаем "ты туда не ходи, кирпич в голова попадет, совсем мертвый будешь"


Цитата:
Какие сетевые параметры в данном случае указывать на интерфейсе "внутреннего" сервера и на обоих интерфейсах Debian-роутера?

Да любые подходящие. Вы только помните, что с "серыми" внутренними адресами с этой схемой можно баловаться только в пределах своего сегмента. Как только такие пакеты попадут к провайдеру, он их "чик-чик".
А вот если вам провайдер выдал два диапазона (как описывал vlary выше) "белых" адресов, то на "внешний" интерфейс навешиваем адрес из первого диапазона, на внутренний - из второго. Серверам тоже присваиваем адреса из второго диапазона. NAT для такой схемы не нужен, а forward=1 обязателен.
Автор: Alukardd
Дата сообщения: 17.01.2011 13:07
urodliv
Цитата:
А вот если вам провайдер выдал два диапазона (как описывал vlary выше) "белых" адресов, то на "внешний" интерфейс навешиваем адрес из первого диапазона, на внутренний - из второго. Серверам тоже присваиваем адреса из второго диапазона. NAT для такой схемы не нужен, а forward=1 обязателен.
только вот у этих подсетей должен быть шлюз 1, иначе тоже пакеты далеко не уйдут... Ну или тут придется прибегать к силе iptables -j ROUTE для махинации со шлюзом.
Автор: urodliv
Дата сообщения: 17.01.2011 13:43

Цитата:
только вот у этих подсетей должен быть шлюз 1, иначе тоже пакеты далеко не уйдут...

Верно. Для определённости скажем так: если мы одновременно подключены к нескольким провайдерам, то пакеты из обеих этих подсетей должны от нас попадать только к "своему провайдеру". В противном случае их порубашит маршрутизатор другого провайдера.
Автор: vlary
Дата сообщения: 17.01.2011 14:10
Alukardd
urodliv
Цитата:
пакеты из обеих этих подсетей должны от нас попадать только к "своему" провайдеру
Все правильно. Вот этим у меня и занимается PBR.

Автор: HEKTOPaul
Дата сообщения: 17.01.2011 14:22
Alukardd

Цитата:
На данный момент у меня в голове следующие мысли скопились, по поводу общей картины.

Я не силен в PPP, но может он сможет уменьшить кол-во "теряемых" адресов?

В данном случае на уч-ке пров-debian будет сеть 123.123.123.48/30 (49 - шлюз провайдера, 50 - debian, 51 - бродкаст). Предлагаю каждый "внутренний" сервер подключать к твоему роутеру по PPP (PPPoE, PPtP) или OpenVPN и выдавать ему адрес из диапазона 123.123.123.52-62, а на другом конце туннеля (на Debian'е) исп-ть адрес из любой неиспользуемой "серой" сети, например, 192.168.255.1.
Автор: Alukardd
Дата сообщения: 24.01.2011 22:46
Тут прочел о такой штуке как iptables string matches. Кто-нить использовал? Какой потенциал? Кто как применял? На opennet один способ видел... iptables -A FORWARD -p udp -m udp -m string --hex-string "|0000000000380000|" --algo kmp --from 36 --to 43 -limit 1/s
Автор: seosib
Дата сообщения: 06.03.2011 08:57
Нужна помощь. Сам только пол недели знаком с Линуксом, поэтому решить проблему вообще никак не могу. Ситуация такая: Если два компа, ПК и ноут. На моем ПК поставлена Убунта и имеется две сетевых карты. Eth1 - через нее выхожу в интернет, Eth0 - вторая сетевуха через которую хочу передать интернет на ноутбук. На ноуте установлена Win7. Eth0 соед. с ноутом кабелем.
Пока у меня была тоже 7ка, то было все просто. Создал на своем компе домашнюю сеть и с ноута вступил в нее. Все, интернет есть. А тут нифига не выходит.
Вчера после таких действий

Попробуйте так
Через NetworkManager установите на второй сетевой карте следующую конфигурацию:
ip 192.168.0.1
netmask: 255.255.255.0

Далее идем в
Программы - Стандартные - Терминал
Копируем отсюда и нажимаем Enter после каждой строки.
sudo -i
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o [устройство, связанное со вторым ПК eth1, например] -j SNAT --to [мой внешний ip, выданный провайдером]


На ПК с Windows 7 указать:
ip 192.168.0.2
netmask 255.255.255.0
gateway: 192.168.0.1

dns1: 195.189.239.5
dns2: 195.189.238.68


Интернет появился на 10 секунд на ноуте и опять пропал.. Пробовал так http://silverghost.org.ua/2009/08/31/domashnij-shlyuz-na-ubuntu/ и так http://www.cn.ru/forum/showthread.php?t=158424&highlight=%CF%EE%E4%EA%EB%FE%F7%E5%ED%E8%E5+%EA%EE%EC%EF%FC%FE%F2%E5%F0%EE%E2+%EB%E8%ED%E8%E8 и эдак http://cru0gen.livejournal.com/10247.html , но все без результатно, интернета нет на втором компе. Более того, после перезагрузки, все соединения и на моем компе пропадают.

Добавлено:
Вот ещё нашел http://forum.ubuntu.ru/index.php?topic=107492.0 Нужно будет вечерком попробовать.
Автор: Alukardd
Дата сообщения: 06.03.2011 15:39
seosib
нет, все не так...

во первых давайте всё это запишем в скрипт и положим в автозапуск, что бы после ребута машины настройки не пропадали.
1 - создаем скрипт (где угодно, хоть в домашнем каталоге)
2 - заполняем его примерно так:
Код: #!/bin/bash

#
# настройка маршрутизации
#

# объявим переменные
local_if="eth0"
localnet="192.168.0.0/24"
ext_if="eth1"

# разрешаем транзитный траффик
echo 1 > /proc/sys/net/ipv4/ip_forward

# на всякий случай чистим iptables от всех правил и лишних цепочек
iptables -F
iptables -X

# разрешаем фовардинг
iptables -P FORWARD DROP
iptables -A FORWARD -i $local_if -o $ext_if -j ACCEPT
iptables -A FORWARD -i $ext_if -o $local_if -j ACCEPT

# организуем SNAT
iptables -t nat -A POSTROUTING -s $localnet -o $ext_if -j MASQUERADE

Страницы: 123456789101112131415

Предыдущая тема: Как подключиться по RDP к 2000 серверу - к локальной сессии?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.