The OpenNET Project / Index page

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



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

Исходное сообщение
"Разделение входящего/исходящего трафика по двум каналам+natd"
Отправлено PavelR, 23-Янв-07 21:22 
>Запутался совсем :)
>Ситуация: есть два внешних интерфейса (оба дуплексные) ste0 и ste3.
>Есть роутер с натом. Сейчас он работает на интерфейсе ste0 и все
>в порядке. Требуется пустить весь исходящий  в инет трафик по
>каналу ste3 а весь входящий (за некоторыми исключениями) по интерфейсу ste0.
>Исключения -- определенные порты, за которые не берут деньки, те кто
>предоставляет ste3 (irc, icq)
>Проблема в том, что не представляю как правильно настроить ipfw. Вешать два
>ната? Или можно на одном?


Вешать два ната, + делать два форварда

------ cut here ----

#
# PROVIDE: ipfw-my
# REQUIRE: NETWORKING ipfw
# KEYWORD: shutdown
#
#

NET1_IP = ?
NET1_IF = ?
NET2_IP = unknown, not used here but declared as template and you can use it
NET2_IF = ?


natd -p 8667 -m -s -a $NET1_IP
natd -p 8669 -m -s -interface $NET2_IF -dynamic

ipfw -q flush

ipfw add 00100 pass all from any to any via lo0
ipfw add 00110 deny log all from any to 127.0.0.0/8
ipfw add 00120 deny log all from 127.0.0.0/8 to any

#ВНЕШНИЙ ВХОДЯЩИЙ

#общий счетчик по интерфейсу
ipfw add 04000 count ip from any to any in via $NET1_IF
ipfw add 04005 count all from not table\(1\) to any in via $NET1_IF

ipfw add 04010 skipto 05000 all from any to any in via $NET2_IF


## Allow tunnel base layer
ipfw add 04050 allow gre from xxxxxx.server.here to me in via $NET1_IF

#закроем доступ извне во внутренние сетки RFC1918
ipfw add 04200 deny all from any to 10.0.0.0/8     in via $NET1_IF
ipfw add 04205 deny all from any to 172.16.0.0/12  in via $NET1_IF
ipfw add 04210 deny all from any to 192.168.0.0/16 in via $NET1_IF

ipfw add 04215 deny all from any to 0.0.0.0/8     in via $NET1_IF
ipfw add 04220 deny all from any to 169.254.0.0/16 in via $NET1_IF
ipfw add 04225 deny all from any to 192.0.2.0/24   in via $NET1_IF
ipfw add 04230 deny all from any to 224.0.0.0/4    in via $NET1_IF
ipfw add 04235 deny all from any to 240.0.0.0/4    in via $NET1_IF

ipfw add 04250 deny all from 10.0.0.0/8     to any in via $NET1_IF
ipfw add 04255 deny all from 172.16.0.0/12  to any in via $NET1_IF
ipfw add 04260 deny all from 192.168.0.0/16 to any in via $NET1_IF

ipfw add 04365 deny all from 0.0.0.0/8      to any in via $NET1_IF
ipfw add 04370 deny all from 169.254.0.0/16 to any in via $NET1_IF
ipfw add 04375 deny all from 192.0.2.0/24   to any in via $NET1_IF
ipfw add 04380 deny all from 224.0.0.0/4    to any in via $NET1_IF
ipfw add 04385 deny all from 240.0.0.0/4    to any in via $NET1_IF


##
ipfw add 04400 divert 8667 all from any to $NET1_IP in via $NET1_IF

## 4450 - заворачиваем траффик на учет, входящий траффик. Правило вставляется скриптом netams-netgraph.sh
#ipfw add 04450 netgraph 60 ip from any to any in via $NET1_IF

## Allow established
ipfw add 04500 allow tcp  from any to any in via $NET1_IF established
ipfw add 04510 allow all  from any to any in via $NET1_IF frag
ipfw add 04520 allow icmp from any to me  in via $NET1_IF

#Our services
ipfw add 04600 pass tcp from any to me 25  in via $NET1_IF setup
ipfw add 04605 pass tcp from any to me 53  in via $NET1_IF setup
ipfw add 04610 allow udp from any to me 53 in via $NET1_IF
ipfw add 04615 pass tcp from any to me 587 in via $NET1_IF setup
ipfw add 04620 pass tcp from any to me 80  in via $NET1_IF setup
ipfw add 04625 pass tcp from any to me 22  in via $NET1_IF setup
ipfw add 04630 pass tcp from any to me 21  in via $NET1_IF setup

#DNS,NTP

ipfw add 04631 allow udp from me to any 53  keep-state via $NET1_IF
ipfw add 04635 allow udp from me to any 123 keep-state via $NET1_IF
ipfw add 04640 allow udp from any 53 to me  keep-state via $NET1_IF

## some other services

ipfw add 04650 allow tcp from any to me 1460 in via nve0 setup

# Траффик из интернет к машинам

ipfw add 04800 allow all from any to 192.168.1.1 in via $NET1_IF
ipfw add 04805 allow all from any to 192.168.1.2 in via $NET1_IF
ipfw add 04810 allow all from any to 192.168.1.3 in via $NET1_IF
ipfw add 04815 allow all from any to 192.168.1.4 in via $NET1_IF
ipfw add 04820 allow all from any to 192.168.1.5 in via $NET1_IF
ipfw add 04825 allow all from any to 192.168.1.6 in via $NET1_IF
ipfw add 04830 allow all from any to 192.168.1.7 in via $NET1_IF
ipfw add 04835 allow all from any to 192.168.1.8 in via $NET1_IF
ipfw add 04840 allow all from any to 192.168.1.9 in via $NET1_IF
ipfw add 04845 allow all from any to 192.168.1.10 in via $NET1_IF

ipfw add 04998 deny log  ip from any to any in via $NET1_IF

#
#   ВТОРОЙ КАНАЛ, ДОПОЛНИТЕЛЬНЫЙ ИНТЕРФЕЙС
#

#общий счетчик по интерфейсу
ipfw add 05001 count ip from any to any in via $NET2_IF
ipfw add 05006 count all from not table\(1\) to any in via $NET2_IF

#закроем доступ извне во внутренние сетки RFC1918
ipfw add 05200 deny all from any to 10.0.0.0/8     in via $NET2_IF
ipfw add 05205 deny all from any to 172.16.0.0/12  in via $NET2_IF
ipfw add 05210 deny all from any to 192.168.0.0/16 in via $NET2_IF

ipfw add 05215 deny all from any to 0.0.0.0/8     in via $NET2_IF
ipfw add 05220 deny all from any to 169.254.0.0/16 in via $NET2_IF
ipfw add 05225 deny all from any to 192.0.2.0/24   in via $NET2_IF
ipfw add 05230 deny all from any to 224.0.0.0/4    in via $NET2_IF
ipfw add 05235 deny all from any to 240.0.0.0/4    in via $NET2_IF

ipfw add 05250 deny all from 10.0.0.0/8     to any in via $NET2_IF
ipfw add 05255 deny all from 172.16.0.0/12  to any in via $NET2_IF
ipfw add 05260 deny all from 192.168.0.0/16 to any in via $NET2_IF

ipfw add 05365 deny all from 0.0.0.0/8      to any in via $NET2_IF
ipfw add 05370 deny all from 169.254.0.0/16 to any in via $NET2_IF
ipfw add 05375 deny all from 192.0.2.0/24   to any in via $NET2_IF
ipfw add 05380 deny all from 224.0.0.0/4    to any in via $NET2_IF
ipfw add 05385 deny all from 240.0.0.0/4    to any in via $NET2_IF


ipfw add 05400 divert 8669 all from any to any in via $NET2_IF

## 5450 - заворачиваем траффик на учет, входящий траффик. Правило вставляется ск
риптом netams-netgraph.sh
#ipfw add 05450 netgraph 60 ip from any to any in via $NET2_IF


## Allow established
ipfw add 05500 allow tcp  from any to any in via $NET2_IF established
ipfw add 05510 allow all  from any to any in via $NET2_IF frag
ipfw add 05520 allow icmp from any to me  in via $NET2_IF


# Траффик из интернет к машинам

ipfw add 05900 allow all from any to 192.168.1.1 in via $NET2_IF
ipfw add 05905 allow all from any to 192.168.1.2 in via $NET2_IF
ipfw add 05910 allow all from any to 192.168.1.3 in via $NET2_IF
ipfw add 05915 allow all from any to 192.168.1.4 in via $NET2_IF
ipfw add 05920 allow all from any to 192.168.1.5 in via $NET2_IF
ipfw add 05925 allow all from any to 192.168.1.6 in via $NET2_IF
ipfw add 05930 allow all from any to 192.168.1.7 in via $NET2_IF
ipfw add 05935 allow all from any to 192.168.1.8 in via $NET2_IF
ipfw add 05940 allow all from any to 192.168.1.9 in via $NET2_IF
ipfw add 05945 allow all from any to 192.168.1.10 in via $NET2_IF

ipfw add 05999 deny log ip from any to any in via $NET2_IF

##     #######

## Внешние интерфейсы, исходящий траффик

##     #######

## 6000 - заворачиваем траффик на учет, входящий траффик. Правило вставляется ск
риптом netams-netgraph.sh
#ipfw add 06000 netgraph 61 ip from any to any out via $NET1_IF
#ipfw add 06001 netgraph 61 ip from any to any out via $NET2_IF

#
#  A1  M2  Заворачиваем на нат и делаем форвард траффика все что идет _с_ адреса
первого канала по маршруту второго
#
ipfw add 06030 divert 8667 all from $NET1_IP to any out via $NET2_IF
ipfw add 06035 fwd $NET1_GW all from $NET1_IP to any out via $NET2_IF

#
# (A2) M2  Заворачиваем в диверт все что будет уходить по второму каналу (с адре
са первого уже ушли выше)
#
ipfw add 06050 divert 8669 all from any to any out via $NET2_IF
#ipfw  add 06060 allow all from $NET2_IP to any out via $NET2_IF

#  A2  M1

## Rules 6060 6080 6090 will be added by MPD     (заворачиваем в диверт и отправ
ляем все что шло с адреса второго по машруту первого)
#
#ipfw add 06080 divert 8669 all from $NET2_IP to any out via $NET1_IF
#ipfw add 06090 fwd $NET2_GW all from $NET2_IP to any out via $NET1_IF

#
#  A1  M1 Заворачиваем на нат все что уходит через первый канал по маршрутам
#
ipfw add 06100 divert 8667 all from any to any out via $NET1_IF
ipfw add 06110 allow all from $NET1_IP to any out via $NET1_IF


ipfw add 06999 deny log all from any to any out via $NET1_IF

 

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



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

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