Стоит задача - выпустить свою сеть в инет через два разных интерфейса rl1 и rl2.
Так как адреса в локали серые, то надо поднимать NAT. С учетом того, что динамической маршрутизации
не предвидится, будем поднимать NAT на 2 интерфейса. Для этого нужно:Скомпилировать ядро с параметрами:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=20
options IPFIREWALL_FORWARD
options IPDIVERT
options DUMMYNET
options TCP_DROP_SYNFIN
это необходимый минимум. На все случаи жизни )))))Далее, в rc.local пишем такие строки:
natd -p 8668 -n rl1
natd -p 8669 -n rl2
#natd -p 8671 -n rl3
#natd -p 8672 -n rl4
#natd -p 8673 -n rl5
Последние три строки - если кому надо поднимать NAT на большее количество интерфейсов.Следующее - правила ipfw:
ipfw -f add divert 8668 all from #твоясеть# to any out via rl1
ipfw -f add divert 8668 all from any to #адрес_rl1# in via rl1
ipfw -f add divert 8669 all from #твоясеть# to any out via rl2
ipfw -f add divert 8669 all from any to #адрес_rl2# in via rl2Теперь все, что будет выходить через внешние интерфейсы, будет правильно NATиться через них же.
Остается проверить маршрутизацию. Если маска на rl2 /24. В этом случае все просто.
Стандартный шлюз (default gateway) прописан через rl1, а все, что идет на сеть 999.888.0.0/24 будет
автоматически бежать через rl2. Если же на rl2 выделена подсетка из нескольких адресов, то тогда надо
писать жесткий марщрут на всю сеть 999.888.0.0/24 через rl2 на тот шлюз, который тебе дал провайдер N2.
Его тоже можно прописать в rc.local отдельной строкой типа:
route add 999.888.0.0/24 999.888.0.25У Sergey2005 заработала комбинация:
${fwcmd} add 40 divert 8668 all from #моя сеть# to not #подсеть провайдера "S"# out via rl1
${fwcmd} add 45 divert 8668 all from not #подсеть провайдера "S"# to any in via rl1${fwcmd} add 50 divert 8669 all from #моя сеть# to #подсеть провайдера "S"# out via rl2
${fwcmd} add 55 divert 8669 all from #подсеть провайдера "S"# to any in via rl2natd -p 8668 -m -u -n rl1
natd -p 8669 -m -u -n rl2
URL: http://www.opennet.me/openforum/vsluhforumID1/53437.html#3
Обсуждается: http://www.opennet.me/tips/info/788.shtml
> Его тоже можно прописать в rc.local отдельной строкой типа:
> route add 999.888.0.0/24 999.888.0.25
Вообще это прописывается в rc.conf:
static_routes="s1"
route_s1="999.888.0.0/24 999.888.0.25"
а ежели такая петрушка с натд:
Natd (-reverse -unregistered_only)
194.1.2.2 -----------+--rl0(194.1.2.3)----+
netmask | | |
255.255.255.255 | | FreeBSD 5.3 |
| | stable | external
| | rl1(194.1.2.4)-----Internet
| +-----------------+
|
|
|
192.168.1.2/24
т.е. есть на одном интерфейсе и реальные и приватные адреса.как тогда быть? =\
Ваши два "реальных" адреса (3 и 4) как не крути попадают под одну маску, давайте более реальные схемы.
И где тут policy routing? Вижу пример технологии NAT не более того. А как предложил товарисч, статики прописываются в rc.conf
static_routes="myroute"
route_myroute="-net 10.10.10.0 -netmask 255.255.255.0 -gateway 10.0.0.1"
Кто-нибудь может поделиться опытом использовния новой опции globalports в natd (о её появлении сказано в 5.3-RELEASE Release Notes)? Заранее благодарен ;-)
а почему не ipf ?
ipf под большой нагрузкой плохо себя ведёт
Как раз таки при большой нагрузке лучше использовать ipnat, а не natd. А если у вас много трансляций, то имеет смысл заменить #undef LARGE_NAT на #define LARGE_NAT в файле /sys/contrib/ipfilter/netinet/ip_nat.h
Кто-нибудь с таким сталкивался?
На внешнем интерфейсе 195.1.1.1 есть два альяса
10.0.0.1 и 192.0.0.1. Как ходить в сети 10.0.0.1/24 и 192.0.0.1/24 через альясы. Смотрел tcpdump'ом на внешнем интерфейсе все пакеты идут именно с 195.1.1.1.
не могу воткнуть, помогите:
есть два внешних интерфейса ppp0 с серым адресом и tun0 с реальным. машина натит адреса в адрес ppp0. через ppp0 указан роут по дефолту. не могу ходить через tun0. Например указываю traceroute -s <внешн.адрес> mail.ru. Выдает sendto:denied. Запрещает фаервол, т.к. от этого адреса осуществляется попытка выхода через ppp0. Че делать, как ходить?
>не могу воткнуть, помогите:
>есть два внешних интерфейса ppp0 с серым адресом и tun0 с реальным. машина натит адреса в адрес ppp0. через ppp0 указан роут по дефолту. не могу ходить через tun0. Например указываю traceroute -s <внешн.адрес> mail.ru. Выдает sendto:denied. Запрещает фаервол, т.к. от этого адреса осуществляется попытка выхода через ppp0. Че делать, как ходить?поступило предложение юзать везде нетграф - вот и нат тоже под модулем ng_nat# Create NAT
# Divert traffic into NAT node
ipfw add 300 netgraph 61 all from any to any in via fxp0
ipfw add 400 netgraph 60 all from any to any out via fxp0