>Запутался совсем :)
>Ситуация: есть два внешних интерфейса (оба дуплексные) 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