- NAT работает в одну сторону, DN, 15:54 , 30-Мрт-07 (1)
>поставил FReeBSD 6.2. >скомпилировал ядро с опциями >options IPDIVERT >в RC.conf добавил >ppp_enable="YES" >ppp_mode="ddial" >ppp_profile="ISP" У ppp свой NAT, он точно выключен? >в ppp.conf >default: > set log phase tun command > set mru 1492 > set mtu 1492 > >ISP: > set device PPPoE:ed0 > set authname MYNAME > set authkey MYPASS >в rc_ppp.firewall >#!/bin/sh ># >fwcmd="/sbin/ipfw -q" >Lan_0_IP="192.168.20.4" >Lan_0="192.168.20.0" >MASK="24" >Lan_0="ed2" ^^^^^^^^^^^^^ Тут не ошибка? echo $Lan_0 Посмотри ipfw show . >${fwcmd} -f flush > >${fwcmd} add 1 divert natd ip from ${Lan_0}/${MASK} to any out via >tun0 >${fwcmd} add 2 divert natd ip from any to me in via >tun0 >${fwcmd} add 3 allow all from any to any > >Соединение с провайдером PPPoE IP - динамический >соединение поднимается - TCPDUMP говорит что с tun0 пакеты уходят с назначенного >IP (НАТ работает) и возвращаются ответы. НО больше ИХ НИГДЕ НЕ >ВИДНО - ни на внутреннем интерфейсе - нигде, не работает >с сервера ни пинг ни ДНС. Если убрать правило 2 в >rc_ppp.firewall (${fwcmd} add 2 divert natd ip from any to me >in via tun0), тогда ping, днс, сквид, начинают работать, но НАТ >соответсвенно работать без него не будет. >ЧТО ПОДСКАЖУТ ГУРУ? Зачем два правила divert? ${fwcmd} add 100 pass all from any to any via lo0 ${fwcmd} add 200 deny all from any to 127.0.0.0/8 ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any ... ${fwcmd} add divert natd ip from any to any via tun0 ... Что посылать через tun0, определяешь таблицей роутинга. Включи лог на divert правила и посмотри , что туда попадает.
- NAT работает в одну сторону, Sergetv, 21:26 , 30-Мрт-07 (2)
> >У ppp свой NAT, он точно выключен? > на всякий пожарный ppp_nat="NO">Тут не ошибка? >echo $Lan_0 >Посмотри ipfw show . Да - это я в в сообщении ошибся - там Net_0 > >>${fwcmd} -f flush >> >>${fwcmd} add 1 divert natd ip from ${Net_0}/${MASK} to any out via >>tun0 >>${fwcmd} add 2 divert natd ip from any to me in via >>tun0 >>${fwcmd} add 3 allow all from any to any >> >>Соединение с провайдером PPPoE IP - динамический >>соединение поднимается - TCPDUMP говорит что с tun0 пакеты уходят с назначенного >>IP (НАТ работает) и возвращаются ответы. НО больше ИХ НИГДЕ НЕ >>ВИДНО - ни на внутреннем интерфейсе - нигде, не работает >>с сервера ни пинг ни ДНС. Если убрать правило 2 в >>rc_ppp.firewall (${fwcmd} add 2 divert natd ip from any to me >>in via tun0), тогда ping, днс, сквид, начинают работать, но НАТ >>соответсвенно работать без него не будет. > >>ЧТО ПОДСКАЖУТ ГУРУ? > >Зачем два правила divert? > ${fwcmd} add divert natd ip from any to any via tun0 В таком случае не проходит ни почта ни нттр "напрямую" Пробовал так ${fwcmd} add 1 divert natd ip from ${Net_0}/${MASK} to any out via tun0 ${fwcmd} add 2 divert natd ip from any 25,110 to me in via via tun0 Почта заработала, попробовал завернуть и НТТР: ${fwcmd} add 2 divert natd ip from any 25,110,80 to me in via tun0 Перестал работать сквид - т.е. нат перехватывает все пакеты -и свои и чужие, но потом чужие не пропускает... :-( не знаю где искать логи NATD...
- NAT работает в одну сторону, Sergetv, 15:50 , 31-Мрт-07 (3)
лог нашел \var\log\seсurityв правила файрволла включил такую конструкцию: #NAT ${fwcmd} add divert natd ip from ${Net_0}/${Mask_0} to any 25,110 out xmit ${LanOut_0} ${fwcmd} add divert natd ip from any 25,110 to me in via ${LanOut_0} ${fwcmd} add divert natd tcp from 192.168.20.1 to any 80 out xmit ${LanOut_0} ${fwcmd} add divert natd log tcp from any 80 to me in via ${LanOut_0} ${fwcmd} add allow all from any to any 192.168.20.1 - адрес моей машины за файрволлом Почта работает, НТТР напрямую(80) тоже, СКВИД не хочет, смотрю логи - в них пакеты, переданные в ответ на НТТР напрямую (80 порт). То, что идет в ответ на СКВИД в лог не попадает. tcpdump -ni tun0 port 80 показывает, что все пакеты (и на СКВИД, и на НАТ) приходят. Что посоветуете?
- NAT работает в одну сторону, DN, 14:00 , 02-Апр-07 (4)
>в правила файрволла включил такую конструкцию: > >#NAT >${fwcmd} add divert natd ip from ${Net_0}/${Mask_0} to any 25,110 out xmit >${LanOut_0} >${fwcmd} add divert natd ip from any 25,110 to me in via >${LanOut_0} >${fwcmd} add divert natd tcp from 192.168.20.1 to any 80 out xmit >${LanOut_0} >${fwcmd} add divert natd log tcp from any 80 to me in >via ${LanOut_0} >${fwcmd} add allow all from any to any > >192.168.20.1 - адрес моей машины за файрволлом > >Почта работает, НТТР напрямую(80) тоже, СКВИД не хочет, >смотрю логи - в них пакеты, переданные в ответ на НТТР напрямую >(80 порт). >То, что идет в ответ на СКВИД в лог не попадает. tcpdump >-ni tun0 port 80 показывает, что все пакеты (и на СКВИД, >и на НАТ) приходят. > >Что посоветуете? Продолжить разбираться с правилами forward ( ipfw ) для СКВИД , как Вы это успешно делали в предыдущем сообщении. Приходят ли запросы на СКВИД , отправляется ли СКВИД свои запросы во внешний мир через nat и tun0 , как все это вовращается обратно. Больше половины работы Вы уже сделали. Удачи!
- NAT работает в одну сторону, Sergetv, 18:25 , 02-Апр-07 (5)
>Продолжить разбираться с правилами forward ( ipfw ) для СКВИД , как >Вы >это успешно делали в предыдущем сообщении. >Приходят ли запросы на СКВИД , отправляется ли СКВИД свои запросы во > >внешний мир через nat и tun0 , как все это вовращается обратно. > >Больше половины работы Вы уже сделали. >Удачи! > Больше половины сделал - это приятно, но еще чуть меньше половины осталось... пока не включаю второе правило нат на прием пакетов- сквид работает, как включу - отключается. где еще посмотреть - не представляю. Сквид слушает адрес сетевой карты типа 192.168.20.4:3128 tcpdump на внешнем tun0 интерфейсе показывает что все нормально - все уходит, все приходит, tcpdump внутри на ed2 только в одну сторону от меня на 192.168.20.4 три правила в файрволе - запутаться же не где...
- NAT работает в одну сторону, DN, 12:41 , 03-Апр-07 (6)
>>Продолжить разбираться с правилами forward ( ipfw ) для СКВИД , как >>Вы >>это успешно делали в предыдущем сообщении. >>Приходят ли запросы на СКВИД , отправляется ли СКВИД свои запросы во >> >>внешний мир через nat и tun0 , как все это вовращается обратно. >> >>Больше половины работы Вы уже сделали. >>Удачи! >> >Больше половины сделал - это приятно, но еще чуть меньше половины осталось... > >пока не включаю второе правило нат на прием пакетов- сквид работает, как >включу - отключается. где еще посмотреть - не представляю. >Сквид слушает адрес сетевой карты типа 192.168.20.4:3128 >tcpdump на внешнем tun0 интерфейсе показывает что все нормально - все уходит, >все приходит, >tcpdump внутри на ed2 только в одну сторону от меня на 192.168.20.4 > >три правила в файрволе - запутаться же не где...Уверяю Вас, можно запутаться и в одном правиле ipfw. Советую, внимательно почитать, как работают правила ipfw в man ipfw или в переводе на этом сайте. Обратите внимание, что любой пакет проверяется в правилах ipfw, когда приходит на интерфейс, и когда уходит с интерфейса. Вы написали много правил divert. В вашем случае, это совершенно лишнее. У вас только один tun0 интерфейс, чьи пакеты надо divert'ить на natd, при чем, как входящие, так и исходящие с tun0. ... ${fwcmd} add divert natd ip from any to any via tun0 ... Зачем Вам divert'ить пакеты to me ? me matches any IP address configured on an interface in the system. The address list is evaluated at the time the packet is analysed. Пакет обработаный natd снова попадает в ipfw, как исходящий с какого либо интерфейса. Посмотрите таблицу роутинга netstat -rn для tun0 . default должен указывать на IP PPPoE для tun0. СКВИД с какого IP адреса делает запросы во внешний мир?
- NAT работает в одну сторону, Sergetv, 13:55 , 03-Апр-07 (7)
>${fwcmd} add divert natd ip from any to any via tun0 >Зачем Вам divert'ить пакеты to me ? >me matches any IP address configured on >an interface in the system. > The address list is >evaluated at the time the packet is analysed. > >Пакет обработаный natd снова попадает в ipfw, как исходящий с какого >либо интерфейса. > >Посмотрите таблицу роутинга netstat -rn для tun0 . >default должен указывать на IP PPPoE для tun0. > >СКВИД с какого IP адреса делает запросы во внешний мир? Полностью с Вами согласен. 5 лет у меня машина работала с похожими правилами, только вместо ME был IP - тогда подключение было с реальным IP. Сейчас ситуация другая - IP динамический. Провайдер (или АТС) рвет линию где-то раз в 3 часа. Мой скрипт автоматом проверяет состояние канала и "передергивает" соединение. Практически каждый раз после этого IP на tun0 меняется. Можно, конечно, написать еще один скрипт и менять строчку правил IPFW с дивертом, но, на мой взгляд, это не совсем правильно. Неужели natd нельзя привязать к динамичемкому интерфейсу? (ключ dynamic в natd.conf включен - не помогает)
- NAT работает в одну сторону, Sergetv, 15:36 , 03-Апр-07 (8)
>>СКВИД с какого IP адреса делает запросы во внешний мир? > Забыл добавить - СКВИД дает запросы во внешний мир с того IP, который на tun0 (по-моему так и должно быть). Это не зависит от того включен ДИВЕРТ или нет. правил с ФОРВАРДОМ нет - в настройках сквида указано слушать на адресе сетевухи локальной сети. В дополнение - поднял рядом с IPFW еще и PF. Отключил в rc.conf и в правилах файлвола NATD вообще. сделал NAT средствами PF nat on $ext_if0 from $int_if:network to any -> ($ext_if0) все завязалось сразу "на ура". Думаю постепенно мигрировать с IPFW на PF. только вот у меня стояла связка (IPFW правила count + MRTG) для подсчета трафика. Не знаю пока как это реализовать на PF.
- NAT работает в одну сторону, Sergetv, 21:39 , 03-Апр-07 (9)
Кстати, вопрос: для компиляции ядра под PF нужны опции:options IPFIREWALL options IPFIREWALL_FORWARD options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPDIVERT Или их можно убрать, достаточно будет и options ALTQ device pf device pflog device pfsync ?
- NAT работает в одну сторону, DN, 12:49 , 04-Апр-07 (11)
>>>СКВИД с какого IP адреса делает запросы во внешний мир? >> >Забыл добавить - СКВИД дает запросы во внешний мир с того IP, >который на tun0 (по-моему так и должно быть). Это не зависит >от того включен ДИВЕРТ или нет. правил с ФОРВАРДОМ нет - >в настройках сквида указано слушать на адресе сетевухи локальной сети.СКВИД слушает 3128 на 192.169.20.4 , нормально. ФОРВАРД для принудительноего http(s) проксирования сети 192.168.20.0 используют. СКВИД делает запросы во внешний мир с адреса 192.168.20.4 . Все это натится и уходить с адресом tun0 во внешний мир. В обратном порядке возвращается. >В дополнение - поднял рядом с IPFW еще и PF. Отключил в >rc.conf и в правилах файлвола NATD вообще. >сделал NAT средствами PF nat on $ext_if0 from $int_if:network to any -> ($ext_if0) >все завязалось сразу "на ура". Думаю постепенно мигрировать с IPFW на PF. >только вот у меня стояла связка (IPFW правила count + MRTG) >для подсчета трафика. Не знаю пока как это реализовать на PF. Вольному - воля. Если меньше ошибок наделаете с PF, валяйте.
- NAT работает в одну сторону, DN, 12:33 , 04-Апр-07 (10)
>>${fwcmd} add divert natd ip from any to any via tun0 >>Зачем Вам divert'ить пакеты to me ? >>me matches any IP address configured on >>an interface in the system. >> The address list is >>evaluated at the time the packet is analysed. >Полностью с Вами согласен. 5 лет у меня машина работала с похожими >правилами, только вместо ME был IP - тогда подключение было с >реальным IP. Сейчас ситуация другая - IP динамический. Провайдер (или АТС) ME - любые IP , которые сконфигурены на интерфейсах , в том числе и 192.168.20.4 . А Вы ${fwcmd} add divert natd log from any 80 to me in via ${LanOut_0} , где логика? ME - это целый список адресов. И разницы ни какой нет, динамические это адреса или статические , публичные или приватные. >рвет линию где-то раз в 3 часа. Мой скрипт автоматом проверяет >состояние канала и "передергивает" соединение. Практически каждый раз после этого IP >на tun0 меняется. Можно, конечно, написать еще один скрипт и менять >строчку правил IPFW с дивертом, но, на мой взгляд, это не >совсем правильно. Неужели natd нельзя привязать к динамичемкому интерфейсу? (ключ dynamic >в natd.conf включен - не помогает) Пусть меняется IP на tun0 . Запустите с опциями "natd -dynamic -n tun0" и все . СКВИД отбиндьте на адрес 192.168.20.4 (ed2) . Пусть он там слушает порт 3128 и делает свои запросы во внешний мир. Не надо менять правила IPFW с divert для ${fwcmd} add divert natd from any to any via tun0 , если меняется IP на tun0.
- NAT работает в одну сторону, DN, 12:59 , 04-Апр-07 (12)
> >Не надо менять правила IPFW с divert для >${fwcmd} add divert natd from any to any via tun0 >, если меняется IP на tun0. Вдогонку. Последним правилом в IPFW напишите : ${fwcmd} deny log ip from any to any и посмотрите куда пакеты деваются.
- NAT работает в одну сторону, Sergetv, 13:04 , 04-Апр-07 (13)
>ME - любые IP , которые сконфигурены на интерфейсах , в том >числе и 192.168.20.4 . >А Вы ${fwcmd} add divert natd log from any 80 to me >in via ${LanOut_0} , где >логика? >ME - это целый список адресов. > >И разницы ни какой нет, динамические это адреса или статические , >публичные или приватные. ME поставил, потому что на знал, что поставить взамен реального.>Пусть меняется IP на tun0 . >Запустите с опциями "natd -dynamic -n tun0" и все . > >СКВИД отбиндьте на адрес 192.168.20.4 (ed2) . Пусть он там слушает порт >3128 и делает свои запросы во внешний мир. Да, он так и стоит по жизни, так и работает >Не надо менять правила IPFW с divert для >${fwcmd} add divert natd from any to any via tun0 >, если меняется IP на tun0. По логике правило ${fwcmd} add divert natd from any to any via tun0 содержит в себе ${fwcmd} add divert natd from any to me via tun0. неужели адреса ME не попадут в ANY ?
- NAT работает в одну сторону, DN, 14:29 , 04-Апр-07 (14)
>ME поставил, потому что на знал, что поставить взамен реального. "Не знал", батенька, тут не катит. >>Пусть меняется IP на tun0 . >>Запустите с опциями "natd -dynamic -n tun0" и все . ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Это запустили ? >>СКВИД отбиндьте на адрес 192.168.20.4 (ed2) . Пусть он там слушает порт >>3128 и делает свои запросы во внешний мир. >Да, он так и стоит по жизни, так и работает Очень хорошо. Посмотрите для проверки netstat -an , порт 3128. >>Не надо менять правила IPFW с divert для >>${fwcmd} add divert natd from any to any via tun0 >>, если меняется IP на tun0. >По логике правило ${fwcmd} add divert natd from any to any via >tun0 >содержит в себе ${fwcmd} add divert natd from any to >me via tun0. >неужели адреса ME не попадут в ANY ? Попадут адреса ME в ANY, но Вы плохо не прочитали man ipfw . ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Смотрите, любой пакет из сети 192.168.0.0 , который направляется из роутера через tun0 во внешний мир, должен попасть в правило ${fwcmd} add divert natd from any to any via tun0 . Ваше ${fwcmd} add divert natd from any to me via tun0 , здесь не подойдет. Пронатиться natd, если надо ( это устанавливается в natd.conf ). natd натит пакеты, которые ему поставляет ipfw через divert. После этого пакет отправляется во внешний мир через tun0 с публичным src адресом. Обратно из внешнего мира на вход tun0 приходит пакет с любым src адресом и dst IP адресом для tun0. Он снова должен попасть в это же правило, как входящий пакет. ${fwcmd} add divert natd from any to any via tun0 . Пронатиться natd ( изменитьcя dst IP) и следовать на выход ed2 , например. Перед тем как покинуть ed2, пакет еще раз должен пройти все правила IPFW, как исходящий, но уже не попасть в ${fwcmd} add divert natd from any to any via tun0 . Еще раз прочитайте man ipfw в переводе на этом сайте на предмет идеологии работы IPFW. В конце поставьте deny log ip from any to any
- NAT работает в одну сторону, Sergetv, 12:11 , 05-Апр-07 (15)
>${fwcmd} add divert natd from any to any via tun0 . Да, спасибо большое. поставил, проверил - работает так как надо. Но я уже "ощутил вкус" PF - правила пишутся изящнее, хотя в принципе чего-то, чего нельзя реализовать на IPFW я пока не встретил. Как по надежности и скорости работы не знаю - погоняю, посмотрю. Может есть отзывы? В IPFW оставлю пока только правила count сбора статистики и связки с MRTG. Конечно, гонять пакеты через 2 файрвола не есть "гуд" по скорости, я думаю, но пока не найду как MRTG статистику к PF останется так, тем более машин в сети до 50, тормозить сильно не будет. Еще раз спасибо за помощь
|