The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Мета-информация пакета при прохождении через ipfw nat"
Отправлено Amator, 08-Фев-10 12:20 
Доброго дня!

Был бы очень признателен, если бы кто-то прояснил ситуацию с прохождением
пакетов через сетевой стёк - добавление мета-информации о recv, xmit интерфейсах
и со сменой направления in/out. Особенно после выхода из ipfw nat и pipe/queue.

На каком-то примере думаю будет проще.

Может такой случай:

Шлюз с двумя сетевыми картами int_if и ext_if.
Задача шлюза - выпускать локальную сеть localnet в мир и разграничивать скорость -
каждому по потребностям.

Будем использовать для этих целей:
FreeBSD 7.2
ipfw
ipfw nat
dummynet
net.inet.ip.fw.one_pass=0

То есть, имеем:

## /etc/sysctl.conf
## net.inet.ip.fw.one_pass=0

ipfw_cmd="/sbin/ipfw -q"

## Внешний интерфейс
ext_if="vr0"
## ip адрес сервера на внешнем интерфейсе
ext_ip="1.2.3.4"

## Внутренний интерфейс
int_if="vr1"

## Внутренняя сеть
localnet="10.10.10.0/24"

## NAT
${ipfw_cmd} nat 1 config log if ${ext_if} reset same_ports deny_in

## Входящий канал -> pipe 1
${ipfw_cmd} pipe 1 config bw 3950Kbit/s

## Исходящий канал -> pipe 2
${ipfw_cmd} pipe 2 config bw 950Kbit/s

## Очереди на входящий канал (pipe 1) -> 1x
# Важный трафик: TCP RST, TCP PSH, TCP SYN, TCP FIN
${ipfw_cmd} queue 10 config pipe 1 weight 100
# Сотрудники
${ipfw_cmd} queue 11 config pipe 1 weight 30 mask dst-ip 0xffffffff

## Очереди на исходящий канал (pipe 2) -> 2x
# Важный трафик: TCP RST, TCP PSH, TCP SYN, TCP FIN
${ipfw_cmd} queue 20 config pipe 2 weight 100
# Сотрудники
${ipfw_cmd} queue 21 config pipe 2 weight 30 mask src-ip 0xffffffff


Шейпить трафик будем до входа в ipfw nat, и после выхода из него.

Дальше, чтобы продолжить составление правил, нужно понимание процесса :)

Возьмём компьютер любого сотрудника. Сотрудник пытается зайти на сайт yandex.ru.
Пакет попадает в проход in через сетевую int_if, то есть языком ipfw

in recv ${int_if}

Значит пишем следующее:

${ipfw_cmd} add 100 skipto 1000 ip from ${localnet} to any in recv ${int_if}

## in recv ${int_if}
${ipfw_cmd} add 1010 queue 20 ip from ${localnet} to any { tcpflags syn or tcpflags fin or tcpflags rst or tcpflags psh } in recv ${int_if}
${ipfw_cmd} add 1020 queue 21 ip from ${localnet} to any in recv ${int_if}

Дальше после выхода из очереди пакет, если верить документации :), проверяется напротив следующего правила, а не
с самого начала ruleset-а и, я так понимаю, мета-информация пакета осталась прежней, то есть
in recv ${int_if}

Поэтому пишем правило для NAT-а:

${ipfw_cmd} add 1030 nat 1 ip from ${localnet} to any in recv ${int_if}

NAT подменил ip сотрудника из localnet на ip интерфейса ext_if и, снова-таки если верить документации :), пакет идёт
в следующее правило, а не в начало ruleset-а, но мета-информация теперь какая???

ip from ext_ip to any in recv ${int_if} теперь как-то неправильно,
так как у пакета теперь ip интерфейса ext_if :)

ip from 1.2.3.4 to any in recv ${int_if}

???

Как оно на самом деле? После ipfw nat какая мета-информация в пакета? Как она меняется?


Заранее всем спасибо!

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру