URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 81309
[ Назад ]

Исходное сообщение
"2 ната, две подсети. помогите с маршрутизацией"

Отправлено vano , 24-Июл-08 00:54 
Есть два интерфейса: re0 и gif0, есть две внутренних подсети: 192.168.66/24, 192.168.11/24. Надо отправить 66 в ре0, а 11 в гиф0. Пробовал делать это через ipfw forward, пробовал natd'ом. Получается либо кольцо с ttl-exc, либо просто ничего не проходит. Вот части скриптов ipfw:

00090 divert 8666 ip from any to 192.168.3.1 via gif0 in
00091 divert 8666 ip from 192.168.11.0/24 to any via gif0 out
00100 divert 8668 ip from any to 89.222.133.76 via re0 in
00120 divert 8668 ip from 192.168.66.0/24 to any via re0 out

это через natd соответственно. Сами natd запускались так:

natd -i re0 -p 8668
natd -i gif0 -p 8666

Пробовал писать следующую конструкцию:
fwd 192.168.2.1 (другой конец туннеля gif0) ip from 192.168.11.0/24 to any via ng* in

С ней просто никаких пакетов не проходит.

Но если прописать маршрут до другой стороны туннеля, а сам туннель поставить маршрутом по умолчанию, то все работает, за исключением того, что 66 подсеть тоже уходит в него, что нежелательно. Подскажите, куда копать =)


Содержание

Сообщения в этом обсуждении
"2 ната, две подсети. помогите с маршрутизацией"
Отправлено Sava , 24-Июл-08 07:58 
Таки на разные порты натд вешайте, колега :)

Пример при трех провайдерах.
16010 divert 8888 ip from 192.168.1.0/24 to 192.168.240.0/20 out via rl1
16020 divert 8668 ip from 192.168.1.100 to not 192.168.240.0/20 out
16030 divert 8778 ip from 192.168.1.0/24 to not 192.168.240.0/20 out via rl1
16040 divert 8998 ip from 192.168.1.0/24,192.168.247.100 to 10.10.0.0/16 out via rl2
16050 fwd 192.168.241.1 ip from 192.168.242.200 to not 192.168.240.0/20
16060 divert 8668 ip from not 192.168.240.0/20 to 192.168.242.200 in via ng0
16070 divert 8778 ip from not 192.168.240.0/20 to 195.243.144.12 in via rl1
16080 divert 8888 ip from 192.168.240.0/20 to 192.168.247.133 in via rl1
16090 divert 8998 ip from 10.10.0.0/16 to 10.10.17.32 in via rl2

195.243.144.12 - А -> (def GW) rl1
192.168.247.133 - A -> 192.168.247.1 - internal_privider_resources rl1
192.168.242.200 --> 192.168.241.1 А1 VPN ng0
10.10.17.32 - C - 10.10/16 --> 10.10.17.1 - backup prov. 10.10/16 - internal resources

192.168.1.0/24 - ходят через пров А
один 192.168.1.100 - ходит через А1 (еще одно подключение к прову А)
ВСЕ ходят на внутренние ресурсы провов А и С


Вот такие наты у меня

76911  ??  Is     0:00.01 /sbin/natd -a 194.242.102.123 -p 8778
76913  ??  Is     0:00.00 /sbin/natd -a 192.168.242.200 -p 8668
76915  ??  Ss     0:00.02 /sbin/natd -a 192.168.247.133 -p 8888
76917  ??  Is     0:00.00 /sbin/natd -a 10.10.17.32 -p 8998


"2 ната, две подсети. помогите с маршрутизацией"
Отправлено PavelR , 24-Июл-08 08:18 
https://www.opennet.ru/tips/info/158.shtml
смотрите первый комментарий, он суть статья.

Единственное что я бы сделал уточнение правил в виде указания исходящего интерфейса.
Это нужно чтобы не ломалась (шла без трансляции адресов) маршрутизация между внутренними подсетями. Собственно вариантов тут два - либо уточнять внешние,  либо уточнять внутренние  интерфейсы.


для двух внешних интерфейсов:

#ext0 1.1.1.1/24 шлюз 1.1.1.254
natd -a 1.1.1.1 -p 8668
#ext1  2.2.2.1/24 шлюз 2.2.2.254
natd -a 2.2.2.2 -p 8778

Создадим набор правил для ipfw:
ipfw 10 add divert 8668 ip from 3.3.3.0/24 to any out ext0
ipfw 11 add divert 8668 ip from 3.3.3.0/24 to any out ext1

ipfw 20 add divert 8778 ip from 4.4.4.0/24 to any out ext0
ipfw 21 add divert 8778 ip from 4.4.4.0/24 to any out ext1


## Внимание! Один из шлюзов (1.245 или 2.254) должен быть указан шлюзом по умолчанию,
## иначе пакеты не пойдут ни в ext0 ни в ext1

# по вкусу (при необходимости) можно еще добавить 28, 29 правила:
ipfw 28 add allow ip from 1.1.1.1 to 1.1.1.0/24 out via ext0
ipfw 29 add allow ip from 2.2.2.1 to 2.2.2.0/24 out via ext1

ipfw 30 add fwd 1.1.1.254 ip from 1.1.1.1 to any out via ext0
ipfw 31 add fwd 1.1.1.254 ip from 1.1.1.1 to any out via ext1

ipfw 40 add fwd 2.2.2.254 ip from 2.2.2.2 to any out via ext0
ipfw 41 add fwd 2.2.2.254 ip from 2.2.2.2 to any out via ext1

# тут уточняем, что пакет действительно пришел снаружи, а не наша локалка стучится на сервисы маршрутизатора по внешнему адресу (так бывает, например WWW-сервер :-) )

ipfw 50 add divert 8668 ip from any to 1.1.1.1 in via ext0
ipfw 60 add divert 8778 ip from any to 2.2.2.2 in via ext1


Разрешающие правила для исходящих пакетов нужно делать до дивертов, т.е. до 10 правила в вышеописанном примере, в виде skipto, для входящих снаружи - после 60 правила.