два kernel nat

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 12:28:12

есть два прова каждый воткнут в свою сетевушку, есть две лан тоже каждая в своей
em1 - сетка 192.168.1.0/24
em0 - сетка 192.168.55.0/24
igb0 -первый пров 84.11.62.10 такой ип и такой шлюз 84.11.62.1
igb1 -второй пров 195.12.142.54 с таким ип и шлюзом 195.12.142.1

Код: Выделить всё

nat config if igb0
nat config if igb1

00010 allow ip from any to any via em1
00020 allow ip from any to any via em0
00030 allow ip from any to any via lo0

00100 nat 123 ip from 192.168.1.0/24 to any out via igb0
00105 nat 123 ip from any to 84.11.62.10 in via igb0
00106 nat 124 ip from 192.168.55.0/24 to any out via igb1
00107 fwd 195.12.142.1 ip from 195.12.142.54 to any via igb1
00108 nat 124 ip from any to 195.12.142.54 in via igb1
00120 allow ip from any to any
С такими правилами ходим из 192.168.1.0/24 в инет через прова igb0
Но из сетки 192.68.55.0 вообще ничего не доходит до диверта 124

подскажите где подправить?
Последний раз редактировалось chillivilli 2009-07-15 17:21:37, всего редактировалось 1 раз.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 13:15:02

пробовал менять правила ната местами - толку нет

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 13:47:38

Никто не поднимал два кернел ната на разных интерфейсах чтоли?

terminus_
проходил мимо

Re: два kernel nat

Непрочитанное сообщение terminus_ » 2009-07-15 14:32:23

sysctl net.inet.fw.one_pass=1

Код: Выделить всё

# em0 - igb1 (192.168.55.0/24 <-> 195.12.142.54->195.12.142.1)
# em1 - igb0 (192.168.1.0/24 <-> 84.11.62.10->84.11.62.1)

ipfw add allow all from any to any via lo0

ipfw nat 1 config log if igb0 same_ports reset deny_in
ipfw nat 2 config log if igb1 same_ports reset deny_in

ipfw setfib 0 ip from any to any in recv em0
ipfw setfib 1 ip from any to any in recv em1

ipfw add nat 2 ip from any to any via igb1
ipfw add nat 1 ip from any to any via igb0 

ipfw add deny ip from any to any

Создать вторую таблицу маршрутизации и в ней создать один default route на 195.12.142.1.
Идея ясна? Я думаю это заведется...

mnz_work
проходил мимо

Re: два kernel nat

Непрочитанное сообщение mnz_work » 2009-07-15 14:34:36

chillivilli писал(а):Никто не поднимал два кернел ната на разных интерфейсах чтоли?

Код: Выделить всё

sysctl net.inet.fw.one_pass=0
...

# NAT wan_local
${FwCmd} nat 10 config if ${wan_local_if} deny_in reset log
${FwCmd} add 7400 nat 10 ip4 from ${int_net},${vpn_net} to ${wan_local_net} via ${wan_local_if} out
${FwCmd} add 7500 nat 10 ip4 from ${wan_local_net} to me via ${wan_local_if} in

# NAT internet
${FwCmd} nat 11 config if ${wan_inet_if} deny_in reset log 
${FwCmd} add 7600 nat 11 ip4 from ${int_net},${vpn_net} to any via ${wan_inet_if} out
${FwCmd} add 7700 nat 11 ip4 from any to me via ${wan_inet_if} in

# NAT on ext LAN
${FwCmd} nat 12 config if ${ext_if} deny_in reset log
${FwCmd} add 7800 nat 12 ip4 from ${int_net},${vpn_net} to ${ext_net} via ${ext_if} out
${FwCmd} add 7900 nat 12 ip4 from ${ext_net} to me via ${ext_if} in

...

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 15:12:01

terminus_ писал(а):sysctl net.inet.fw.one_pass=1

Код: Выделить всё

# em0 - igb1 (192.168.55.0/24 <-> 195.12.142.54->195.12.142.1)
# em1 - igb0 (192.168.1.0/24 <-> 84.11.62.10->84.11.62.1)

ipfw add allow all from any to any via lo0

ipfw nat 1 config log if igb0 same_ports reset deny_in
ipfw nat 2 config log if igb1 same_ports reset deny_in

ipfw setfib 0 ip from any to any in recv em0
ipfw setfib 1 ip from any to any in recv em1

ipfw add nat 2 ip from any to any via igb1
ipfw add nat 1 ip from any to any via igb0 

ipfw add deny ip from any to any

Создать вторую таблицу маршрутизации и в ней создать один default route на 195.12.142.1.
Идея ясна? Я думаю это заведется...
Т.е нужно пересобирать ядро с опцией options ROUTETABLES=2 ? Не пойму почему fwd не работает.. setfib 0 в примере это я так понимаю 0 таблица т.е та которая по умолчанию?

terminus_
проходил мимо

Re: два kernel nat

Непрочитанное сообщение terminus_ » 2009-07-15 15:31:52

Да - пересобрать с опцией.

setfib 0 таблица по умолчанию (просто для наглядности - можно было не указывать).

fwd модет не работать из-за того что в ядре нет опции options IPFIREWALL_FORWARD.

Если так и так ядро пересобирать то красивее сделать через setfib. ИМХО...

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 15:58:59

[Wed 16:58 root@zlon]/usr/home/west#ipfw setfib
ipfw: bad command `setfib'

как так?

причем
[Wed 16:59 root@zlon]/usr/home/west#setfib
usage: setfib [-[F]]value command

terminus_
проходил мимо

Re: два kernel nat

Непрочитанное сообщение terminus_ » 2009-07-15 16:09:36

ядро уже пересобрали? версия FreeBSD какая?

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 16:18:38

Код: Выделить всё

00030     0       0 allow ip from any to any via lo0
00040  6027  519095 setfib 0 ip from any to any in recv em1
00041    10     715 setfib 1 ip from any to any in recv em0
00100  1464  164551 nat 123 ip from 192.168.1.0/24 to any out via igb0
00105  1519  967325 nat 123 ip from any to 84.11.62.10 in via igb0
00106     6     288 nat 124 ip from 192.168.55.0/24 to any out via igb1
00108     0       0 nat 124 ip from any to 195.12.142.54 in via igb1
00120 10297 1777308 allow ip from any to any
65535     3     384 allow ip from any to any

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 16:20:27

Да ядро пересобрал, теперь видно что из разных сетей поподают в разные таблицы и дальше на нат, но обатно нат не приходит

версия

Код: Выделить всё

[Wed 17:16 root@zlon]/usr/home/west#uname -a
FreeBSD zlon 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Wed Jul 15 16:22:48 MSD 2009     west@zlon:/usr/obj/usr/src/sys/WESTGATE3  amd64
IPFIREWALL_FORWARD в ядре тоже есть

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 16:22:27

chillivilli писал(а):[Wed 16:58 root@zlon]/usr/home/west#ipfw setfib
ipfw: bad command `setfib'

как так?

причем
[Wed 16:59 root@zlon]/usr/home/west#setfib
usage: setfib [-[F]]value command
а с этим разобрался, необходимо добавлять как и вдругие правила ipfw add setfib номер. и все ок

terminus_
проходил мимо

Re: два kernel nat

Непрочитанное сообщение terminus_ » 2009-07-15 16:30:13

забавно =) надо бы tcpdump подебажить - посмотреть как хлдят пакеты наружу и внутрь...
вторую fib таблицу корректно настроили?

надобно подумать по дорогу домой... вечером че-нить напишу еще... :smile:

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 16:46:20

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

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-15 18:08:28

Все еще на работе, в общем чего удалось достичь:
Есть две локалки отлично ходят в инет в 1.0 на внутренний сервер 1.185 пробрасываются порты, в 55.0 на 55.2 прописан и работает redirect_addr

Есть следующий этап, в боевой эксплуатации в сети 55.0 будет некий сервер 55.2 доступ к которому будет через шлюз 55.17
соотвественно необходимо реализовать схему # em0 - igb1 (192.168.55.2/24 <-> 192.168.55.17 <-> 195.12.142.54->195.12.142.1)

Я представляю себе это так - прописываем redirect_addr 195.12.142.54 192.168.55.2
добавляем в нужную таблицу маршрутов статический маршрут к 192.168.55.2 через 192.168.55.17

Вопрос будет ли таким образом обеспечен прозрачный обмен сервера 192.168.55.2 с тырнетом?

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: два kernel nat

Непрочитанное сообщение terminus » 2009-07-15 18:40:42

оставьте свой контакт в личном сообщении, т.к в дальнейшем на этой схеме нужно будет реализовать более усложненный вариант
Пишите или тут или просто на форуме (так полезнее будет). У меня icq нет, а сам я практически все время тут сижу. :smile: я сейчас тем занят, что составляю статью про настройку ipfw nat - поэтому немного в теме. Кстати, выложите потом, если не затруднит, детальные конфиги ipfw и fib - я их использую в статье как образец конфигурации :smile:
соотвественно необходимо реализовать схему # em0 - igb1 (192.168.55.2/24 <-> 192.168.55.17 <-> 195.12.142.54->195.12.142.1)
Я так понимаю, что подробная схема будет такой:

Код: Выделить всё

[192.168.55.2] <-> [192.168.55.17] <-> [192.168.55.1 (NAT машина) 195.12.142.54] ->[195.12.142.1]
Тут есть проблема с 192.168.55.17 - если 55.2 и 55.1 в одной области широковещания/подсети с ним то он может отказаться маршрутизировать трафик между хостами из одной подсети (вообще по RFC так должно быть).
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-16 11:20:28

Перезагрузил сервер, дефаулт роутер из второй таблицы слетел, как его прописать грамотно тчоб не слетал?

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: два kernel nat

Непрочитанное сообщение terminus » 2009-07-16 11:42:19

Через rc.conf наверное пока никак(кажется еще не прикрутили такой штуки туда)...
Создайте отдельный rc скрипт для установки маршрута и закиньте в /usr/local/etc/rc.c/
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-16 12:19:06

в rc.conf пишем
setfib_enable="YES"

создаем файл setfib делаем его исполняемым chmod +X setfib кладем в /usr/local/etc/rc.d

#!/bin/sh
setfib -1 add default router x.x.x.x

Все верно?

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-16 12:45:19

Заметил интересную особенность - делаю так ifconfig igb0 down
соотвественно на первом канале все умирает, по логике вторая локалка должна же продолжать работать через второй канал?
А оказывается, что это не так.. Во второй локалке через первый канал продолжают работать только те соединения которые были подняты до отключения первого канала.. при этом с маршрутами все ок, т.к например вот как продолжает ходить с нее пинг до мейлру
13:20:12.521033 IP cl54-142-12-195.cl.metrocom.ru > mail.ru: ICMP echo request, id 512, seq 7177, length 40
13:20:12.539760 IP mail.ru > cl54-142-12-195.cl.metrocom.ru: ICMP echo reply, id 512, seq 7177, length 40

но если попробовать открыть ту же страничку mail.ru - ничего не открвается

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: два kernel nat

Непрочитанное сообщение terminus » 2009-07-16 12:55:53

Попробуйте вот это.

/etc/rc.conf

Код: Выделить всё

setfib1_enable="YES"
setfib1_defaultroute="1.2.3.4"
/usr/local/etc/rc.d/setfib1

Код: Выделить всё

#!/bin/sh
# PROVIDE: SETFIB1
# REQUIRE: NETWORKING
# BEFORE: DAEMON
# 
# Add the following lines to /etc/rc.conf to enable setfib -1 at startup
# setfib1 (bool): Set to "NO" by default.
#                Set it to "YES" to enable setfib1
# setfib1_defaultroute (str): Set to "" by default
#		 Set it to ip address of default gateway for use in fib 1

. /etc/rc.subr

name="setfib1"
rcvar=`set_rcvar`

load_rc_config $name

[ -z "$setfib1_enable" ] && setfib1_enable="NO"
[ -z "$setfib1_defaultroute" ] && setfib1_defaultroute=""

start_cmd="${name}_start"
stop_cmd="${name}_stop"

setfib1_start()
{
        if [ ${setfib1_defaultroute} ]
        then
          setfib 1 route add -net default ${setfib1_defaultroute}
        else
          echo "Can not set default route for fib 1 - setfib1_defaultroute is not assigned in rc.conf!"
        fi
}

setfib1_stop()
{
	  setfib 1 route del -net default
}
run_rc_command "$1"
---

18.07.2009
нашел ошибку в скрипте - исправил. теперь работает.
Последний раз редактировалось terminus 2009-07-18 17:19:17, всего редактировалось 1 раз.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: два kernel nat

Непрочитанное сообщение terminus » 2009-07-16 13:07:39

chillivilli писал(а):Заметил интересную особенность - делаю так ifconfig igb0 down
Прикольно :pardon:
А что будет, если сделать ifconfig igb1 down - тоже все у всех остановиться?

---

DNS у этих двух локалок прописан один и тот же или у каждой свой (доступный через ее интренет-подключение)?
Если пинговать только по IP эффект тот же?
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-16 14:34:43

Нет, если кладу ifconfig igb1 down , то основной канал с дефолтным маршрутом прописанным в rc.conf работает нормально.


Накатал тут схему боевого варианта, оказывается там будут не два разных инет прова, а пул из одной подсети с одним гейтом
Как лучше этот вариант разрулить, тут уже таблицы видимо не нужны вовсе.

Код: Выделить всё

             inet       /\               inet   /\
           		|                       |
			|			|	
			|			|			
			\/                      \/
----------------------------------------------------------------------------------
                  igb0             ||            igb1
               84.52.60.241        ||           84.52.60.41
               255.255.255.192     ||           255.255.255.192 
               84.52.60.1          ||            84.52.60.1
                        /\         ||              /\
                        |          ||              |
FreeBSD router 7.2      |          ||              |
amd64 KERNEL NAT        |          ||              |
                        |          ||              | 
                        |          ||              | 
                        |          ||              |
                        \/         ||              \/ 
                   em0             ||            em1                              em2
                 192.168.88.1      ||           192.168.1.20
                 255.255.255.0     ||           255.255.255.240
                                   ||           192.168.1.17
------------------------------------------------------------------------------------
                        /\                         /\
                        |                           |
                        |                           |
                        \/                         \/   
                     сервер                        шлюз 
                    192.168.88.2                 192.168.1.17
                    192.168.88.1                    /\
                    255.255.255.0                    |
                                                     |
                                                    \/
                                                   сервер
                                                  192.168.1.2

chillivilli
мл. сержант
Сообщения: 92
Зарегистрирован: 2009-06-19 12:31:04
Откуда: Санкт-Петербург

Re: два kernel nat

Непрочитанное сообщение chillivilli » 2009-07-16 14:36:31

За скрипт спасибо, сейчас попробую его

скрипт в том виде которы есть не работает, пока не разбирался с ним
Последний раз редактировалось chillivilli 2009-07-16 16:15:21, всего редактировалось 1 раз.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: два kernel nat

Непрочитанное сообщение terminus » 2009-07-16 14:38:28

а все таки - как там на счет днсов и пингов/крннекций по IP?
Мне очень интересно - это проблема ipfw nat или нет...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.