Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » FreeBSD - NATD не подменяет адрес

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

BattleTank

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, подскажите, а то я уже фигею...
 
Есть multihomed тачка с FreeBSD (5.4) на которой крутится ipfw. Пытаюсь прикрутить еще и нат.
 
В результате пришел к тому, что пакеты, приходящие из локалки, дивертятся на natd, а он, зараза, выдает (если сказать ему -verbose):
 
# natd -n xl1 -p 8669 -s -m -verbose
natd[78529]: Aliasing to a.b.c.d, mtu 1500 bytes
In  {default} 00000000[ICMP] [ICMP] 172.20.1.2 -> q.w.e.r 8(0) aliased to
           [ICMP] 172.20.1.2 -> q.w.e.r 8(0)
In  {default} 0000ffff[ICMP] [ICMP] 172.20.1.2 -> q.w.e.r 8(0) aliased to
           [ICMP] 172.20.1.2 -> q.w.e.r 8(0)
In  {default} 0000ffff[ICMP] [ICMP] 172.20.1.2 -> q.w.e.r 8(0) aliased to
           [ICMP] 172.20.1.2 -> q.w.e.r 8(0)
In  {default} 0000ffff[ICMP] [ICMP] 172.20.1.2 -> q.w.e.r 8(0) aliased to
           [ICMP] 172.20.1.2 -> q.w.e.r 8(0)
 
здесь:
a.b.c.d - адрес внешнего интерфейса
q.w.e.r - то, что я пытаюсь пингануть из локалки
 
Т.е. насколько я вижу, подмены адреса не происходит, внутренний адрес 172.20.1.2 не меняется на a.b.c.d!!!
 
 
 
В ядре опции IPDIVERT и IPFIREWALL включены
 
Кто на аналогичные грабли наступал?

Всего записей: 37 | Зарегистр. 09-10-2003 | Отправлено: 11:33 26-08-2005
guess



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Natd считает что это входяшие пакеты с наружи, возможно перепутаны входящий и исходяший интерфейсы или неправильные правила ipfw

Всего записей: 73 | Зарегистр. 07-12-2003 | Отправлено: 16:23 26-08-2005
BattleTank

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 Natd считает что это входяшие пакеты с наружи, возможно перепутаны входящий и исходяший интерфейсы или неправильные правила ipfw

 
xl0 - имя исходящего интерфейса. a.b.c.d - его адрес. natd пишет aliasing to a.b.c.d - т.е. знает, какой интерфейс внешний.
 
в ipfw на этот счет - такие правила:
 
03400 divert 8669 log ip from 172.20.0.0/16 to not table(0)
03500 fwd <gateway> log ip from a.b.c.d to any
03600 divert 8669 log ip from any to a.b.c.d
 
 

Всего записей: 37 | Зарегистр. 09-10-2003 | Отправлено: 17:26 26-08-2005
BattleTank

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема решена
 
Тем, кому интересно - затычка была в том, что во всех примерах, на которые я натыкался в Инете, на каждую внутреннюю сетку была своя сетевуха, а у меня - куча алиасов на одной карточке.
 
Очевидно, бедолага natd от этого вставал в ракообразное состояние, и не мог правильно прорюхать, какие пакеты натить, а какие - нет.
 
Доходило до смешного. Когда я пинговался с самой фрюхи:
 
ping -S 172.20.1.1 www.google.com
 
- все работало.
 
Когда я пинговался из внутренней сетки, с машины 172.20.1.2 - присходила петрушка, описанная выше.
 
Проблема разрешилась указанием natd раздельных incoming и outgoing-портов:
 
natd -n xl1 -o 8670 -i 8671
 
и в правилах ipfw:
 
03400 divert 8670 ip from 172.20.0.0/16 to not table(0)  
03500 fwd <gateway> ip from a.b.c.d to not table(0)
03600 divert 8671 ip from not table(0) to a.b.c.d  
03700 enable ip from not table(0) to 172.20.0.0/16
 
Последнее правило, хотя и сильно смахивает на дырку в защите - для того, чтобы пакеты типа <inet_IP> -> 172.20.0.0/16, попавшие в IPFW после НАТа, не рубились...
Ничего умнее я пока не придумал...
 
"Война окончена, всем спасибо, все свободны!.."
(СС'овец в концлагере, 9 мая 1945)

Всего записей: 37 | Зарегистр. 09-10-2003 | Отправлено: 12:18 30-08-2005
zenia



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня следующая проблема:
 
Стоит freebsd5.4
ipfw natd
2 сетевые карты, одно во внутреннюю смотрит, другая во внешнюю
 
inetall=192.168.0.0/16
oif=xl0 (сетевая карта смотрящая в инет)
ее ip *.*.255.43
 
 
значит в ipfw написано:
$ipfw add 200 divert natd log logamount 300 all from ${inetall} to any out via ${oif}
$ipfw add 210 divert natd log logamount 300 all from any to ${inetall} in via ${oif}
 
Пробую подключиться с машины находящийся в локальной сети (192.168.10.15)
к машине в инете *.*.166.74 на ssh
 
Так вот она как она коннектиться:
 
ns2 kernel: ipfw: 610 Accept TCP 192.168.10.15:3169 *.*.166.74:22 out via xl0
ns2 kernel: ipfw: 200 Divert 8668 TCP 192.168.10.15:3169 *.*.166.74:22 out via xl0
ns2 kernel: ipfw: 310 Accept TCP *.*.255.43:3169 *.*.166.74:22 out via xl0
ns2 kernel: ipfw: 310 Accept TCP *.*.166.74:22 *.*.255.43:3169 in via xl0
ns2 kernel: ipfw: 310 Accept TCP *.*.255.43:3169 *.*.166.74:22  out via xl0
 
получается что адрес дивертится, получает ответ на адрес инетовский, а дальше он к машине в локальной сети не идет.
 
как же его завернуть в локальную сеть?

Всего записей: 151 | Зарегистр. 17-01-2003 | Отправлено: 17:35 24-11-2005
wInuX

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Когда пакты приходят из внешней сети, то они направленны на адрес внешней сетевой карты а не на внутреннюю сеть.
и только NAT заменяет адрес назначения  
 
тоесть, надо поравить правила так:
 
# до этого правила пакеты направлены из внутренней сети
$ipfw add 200 divert natd log logamount 300 all from ${inetall} to any out via ${oif}
# после этого пакеты направлены от me
 
# до этого правила пакеты направлены на me
$ipfw add 210 divert natd log logamount 300 all from any to me in via ${oif}
# после этого во внутреннюю сети

Всего записей: 155 | Зарегистр. 19-05-2005 | Отправлено: 18:36 24-11-2005
zenia



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
тоесть, надо поравить правила так:  

 
 
А можно для особо одаренных подробнее(какие правила где поставить), вот мой конфиг фаил фаирвола:
 
$ipfw -f flush
 
# set these to your outside interface network and netmask and ip
oif="xl0"
onet="*.*.255.32"  (это подсеть)
omask="255.255.255.240"
oip="*.*.255.43" (это внешний ip)
 
# set these to your inside interface network and netmask and ip
iif="fxl0"
inet="192.168.0.0"
imask="255.255.0.0"
iip="192.168.10.20"
inetall="192.168.0.0/16"
myip="192.168.10.90/32"
 
 
${ipfw} add 100 check-state
${ipfw} add 120 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${ipfw} add 130 reject ip from ${inetall} to any in via ${oif}
 
$ipfw add 200 divert natd log logamount 300 all from ${inetall} to any out via ${oif}
$ipfw add 210 divert natd log logamount 300 all from any to me in via ${oif}
 
${ipfw} add 300 allow ip from any to any via lo
${ipfw} add 310 allow log logamount 300 tcp from me to any keep-state via ${oif}
${ipfw} add 320 allow icmp from any to any
${ipfw} add 330 allow log logamount 300 udp from me to any domain keep-state
${ipfw} add 340 allow log logamount 300 udp from any to me domain
${ipfw} add 350 allow log logamount 300 ip from me to any
 
 
${ipfw} add 400 allow log logamount 300 tcp from any to me http,https,ssh
${ipfw} add 500 fwd 127.0.0.1,3128 log logamount 300 tcp from ${inetall} to any http out via ${iif}
 
 
${ipfw} add 600 allow log logamount 300 tcp from ${myip} to me ssh,http,https,20,21
${ipfw} add 610 allow log logamount 300 tcp from ${myip} to any ssh,http
 
# Allow TCP through if setup succeeded                                          
${ipfw} add 800 pass log logamount 300 tcp from any to any established
 
${ipfw} add 65000 deny log logamount 600 ip from any to any

Всего записей: 151 | Зарегистр. 17-01-2003 | Отправлено: 10:28 25-11-2005
wInuX

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
гм... многовато правил. поробуй отлаживать постепенно.
 
$ipfw add 100 allow all via ${iif}
$ipfw add 200 allow tcp from {inetall} to any dst-port http, https out via ${oif}
$ipfw add 300 divert natd log logamount 300 all from ${inetall} to any out via ${oif}
$ipfw add 400 divert natd log logamount 300 all from any to me in via ${oif}
$ipfw add 500 allow tcp from any to {inetall} src-port http, https in via ${oif}
 
после этого должен работать NAT.
 
 
потом добавь squid:
$ipfw add 50 fwd 127.0.0.1,3128 log logamount 300 tcp from ${inetall} to any dst-port http in via ${iif}  
 
потом открой внешнии порты сервера:
$ipfw add 600 pass tcp from any to me established  
$ipfw add 700 pass log tcp from any to me http,https,ssh  setup
 
ну и так далее. все сразу отладить тяжело.  
 
 

Всего записей: 155 | Зарегистр. 19-05-2005 | Отправлено: 11:00 25-11-2005
zenia



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-то все равно не получается.
Может кто поделиться рабочим конфигом.
Условия такие
 
freebsd5.4  
две сетевые
xl0 - внешняя (23.23.23.23)
fx0 - внутренняя (192.168.10.11).
 
natd + ipfw
 
Нужно чтоб компы из локальной сети ходили на ssh на компы в инете
 
Например:
 
192.168.10.34(локальная машина) чтоб коннектилась к 111.111.111.111 на 22 порт через  
23.23.23.23

Всего записей: 151 | Зарегистр. 17-01-2003 | Отправлено: 14:23 25-11-2005
Ptrovich



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кажись копать надо в сторону ретрансляции портов SSH натом. Это как осел пускают из локали в мир, чтоб иметь хай - айди.  
 
natd.conf  
_________________
redirect_port tcp 192.168.10.34:22 23.23.23.23:22
_________________
 
Тогда якобы при ссш с 192.168.10.34 будет так  что 23.23.23.23 будет пытаться соединиться с 111.111.111.111 .   Вообщем типа тунеля что ли.  Вот где то тут, как я думаю, правильное решение.

Всего записей: 125 | Зарегистр. 26-01-2003 | Отправлено: 14:43 25-11-2005
zenia



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а в  natd.conf можно писать типа
 
 redirect_port tcp 192.168.0.0/16:22 any:22
 
В смысле, чтоб такая-то группа компов ходила к любому внешнему по 22?

Всего записей: 151 | Зарегистр. 17-01-2003 | Отправлено: 15:22 25-11-2005
wInuX

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
zenia
для это вообще достаточно двух правил
 
ipfw add divert natd all from any to any via xl0
ipfw add allow all from any to any
 
кроме того в /etc/rc.conf:
 
natd_enabled = yes
natd_interface="xl0"

Всего записей: 155 | Зарегистр. 19-05-2005 | Отправлено: 15:53 25-11-2005
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.
Подскажите пожалуйста.
Игрался с divert - нашёл проблему была в том что natd стартовал криво.
Т.е. он не стартует с параметром интерфейса
[b]rc.conf[b]:
natd_enable=YES
natd_interface="ed0"
natd_program="/sbin/natd"
natd_flags="-f /etc/natd.conf"
Нифига не работает, когда ручками запускаю  
natd -n ed0 - то начинает работать.
Где грабли.
Как заставить при старте поднимать настройки ?

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 18:14 04-12-2006
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вроди стали подниматься

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 18:57 05-12-2006
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » FreeBSD - NATD не подменяет адрес


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru