The OpenNET Project / Index page

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

Пример настройки 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.me/openforum/vsl...
Ключи: policy, nat, route, FreeBSD
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / 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 -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


    т.е. есть на одном интерфейсе и реальные и приватные адреса.как тогда быть? =\

     
     
  • 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:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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