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, Аноним (1), 14:36, 22/02/2005 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    > Его тоже можно прописать в 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"
     
  • 1.2, Аноним (1), 03:12, 23/02/2005 [ответить] [показать ветку] [···]     [к модератору]
  • +/
    а ежели такая петрушка с натд Natd -reverse -unregist... весь текст скрыт [показать]
     
     
  • 2.3, Аноним (1), 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 (ok), 02:18, 07/03/2005 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Как раз таки при большой нагрузке лучше использовать ipnat, а не natd. А если у вас много трансляций, то имеет смысл заменить #undef LARGE_NAT на #define LARGE_NAT в файле /sys/contrib/ipfilter/netinet/ip_nat.h
     
  • 1.9, teledata (ok), 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 [^] [ответить]    [к модератору]  
  • +/
    >не могу воткнуть, помогите:
    >есть два внешних интерфейса 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

     

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



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