The OpenNET Project / Index page

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

Пример настройки NAT для двух сетей в FreeBSD 5.3
Стоит задача - выпустить свою сеть в инет через два разных интерфейса 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 rl2

    natd -p 8668 -m -u -n rl1
    natd -p 8669 -m -u -n rl2 
 
22.02.2005 , Автор: Vov , Источник: http://www.opennet.ru/openforum/vsl...
Ключи: policy, nat, route, FreeBSD / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Policy routing

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Аноним, 14:36, 22/02/2005 [ответить] [смотреть все]
  • +/
    Вообще это прописывается в rc conf static_routes s1 route_s1 999 888 0 0 24 ... весь текст скрыт [показать]
     
  • 1.2, Аноним, 03:12, 23/02/2005 [ответить] [смотреть все]  
  • +/
    а ежели такая петрушка с натд Natd -reverse -unregist... весь текст скрыт [показать]
     
     
  • 2.3, Аноним, 11:39, 24/02/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ваши два реальных адреса 3 и 4 как не крути попадают под одну маску, давайте... весь текст скрыт [показать] [показать ветку]
     
  • 1.4, Stingo, 16:19, 24/02/2005 [ответить] [смотреть все]  
  • +/
    И где тут 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"
     
  • 1.5, Ilyaz, 05:02, 02/03/2005 [ответить] [смотреть все]  
  • +/
    Кто-нибудь может поделиться опытом использовния новой опции globalports в natd (о её появлении сказано в 5.3-RELEASE Release Notes)? Заранее благодарен ;-)
     
  • 1.6, guest, 14:27, 02/03/2005 [ответить] [смотреть все]  
  • +/
    а почему не ipf ?
     
     
  • 2.7, DEC, 11:26, 04/03/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    ipf под большой нагрузкой плохо себя ведёт
     
  • 1.8, citrin, 02:18, 07/03/2005 [ответить] [смотреть все]  
  • +/
    Как раз таки при большой нагрузке лучше использовать ipnat, а не natd. А если у вас много трансляций, то имеет смысл заменить #undef LARGE_NAT на #define LARGE_NAT в файле /sys/contrib/ipfilter/netinet/ip_nat.h
     
  • 1.9, teledata, 15:15, 10/10/2005 [ответить] [смотреть все]  
  • +/
    Кто-нибудь с таким сталкивался?
    На внешнем интерфейсе 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.
     
  • 1.10, napTu, 21:45, 16/03/2006 [ответить] [смотреть все]  
  • +/
    не могу воткнуть, помогите:
    есть два внешних интерфейса ppp0 с серым адресом и tun0 с реальным. машина натит адреса в адрес ppp0. через ppp0 указан роут по дефолту. не могу ходить через tun0. Например указываю traceroute -s <внешн.адрес> mail.ru. Выдает sendto:denied. Запрещает фаервол, т.к. от этого адреса осуществляется попытка выхода через ppp0. Че делать, как ходить?
     
     
  • 2.23, кино, 12:22, 07/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    поступило предложение юзать везде нетграф - вот и нат тоже под модулем ng_nat C... весь текст скрыт [показать] [показать ветку]
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor