Название: ping: sendto: Permission denied Отправлено: evp от 08 Июля 2010, 04:45:02 Сразу после загрузки системы (FreeBSD 8.0-RELEASE-p3) при попытке пинга внешнего ресурса имеем вот такое:
# ipfw show 00050 53 4725 allow tcp from any to me dst-port 22 00051 43 7068 allow tcp from me 22 to any 00100 0 0 allow ip from any to any via lo0 00105 690 214283 allow ip from any to any via rl0 00110 65 4896 nat 1 ip from any to any via nfe0 00120 0 0 deny ip from any to any 65535 0 0 deny ip from any to any # ping 217.69.128.43 PING 217.69.128.43 (217.69.128.43): 56 data bytes ping: sendto: Permission denied ping: sendto: Permission denied ping: sendto: Permission denied ^C --- 217.69.128.43 ping statistics --- 3 packets transmitted, 0 packets received, 100.0% packet loss Однако после рестарта ipfw все нормализуется: # /etc/rc.d/ipfw restart net.inet.ip.fw.enable: 1 -> 0 Flushed all rules. 00050 allow tcp from any to me dst-port 22 00051 allow tcp from me 22 to any 00100 allow ip from any to any via lo0 00105 allow ip from any to any via rl0 ipfw nat 1 config if nfe0 same_ports reset 00110 nat 1 ip from any to any via nfe0 00120 deny ip from any to any Firewall rules loaded. # ipfw show 00050 8 528 allow tcp from any to me dst-port 22 00051 5 556 allow tcp from me 22 to any 00100 0 0 allow ip from any to any via lo0 00105 240 76918 allow ip from any to any via rl0 00110 23 1316 nat 1 ip from any to any via nfe0 00120 0 0 deny ip from any to any 65535 0 0 deny ip from any to any # ping 217.69.128.43 PING 217.69.128.43 (217.69.128.43): 56 data bytes 64 bytes from 217.69.128.43: icmp_seq=0 ttl=116 time=63.717 ms 64 bytes from 217.69.128.43: icmp_seq=1 ttl=116 time=63.448 ms 64 bytes from 217.69.128.43: icmp_seq=2 ttl=116 time=63.548 ms 64 bytes from 217.69.128.43: icmp_seq=3 ttl=116 time=63.570 ms ^C --- 217.69.128.43 ping statistics --- 4 packets transmitted, 4 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 63.448/63.571/63.717/0.096 ms # В чем может быть проблема? Как я понимаю, сообщение ping: sendto: Permission denied генерирует фаерволл. Но после его рестарта, как я вижу, набор правил не меняется, а тем не менее трафик уже не блокируется. Ядро скомпилировано с опциями: options IPFIREWALL options IPDIVERT options IPFIREWALL_FORWARD options DUMMYNET options ROUTETABLES=16 options IPFIREWALL_NAT options LIBALIAS File:rc.firewall Код: #!/bin/sh - File:rc.conf Код: mousechar_start="3" Название: Re: ping: sendto: Permission denied Отправлено: stix от 08 Июля 2010, 06:36:20 Код: ${f} nat 1 config if ${ifWAN} reset same_ports Название: Re: ping: sendto: Permission denied Отправлено: evp от 08 Июля 2010, 07:08:46 Все, что проходит через внешний интерфейс заворачиваем в NAT. А что тут такого? Правила то рабочие. Непонятно только почему они начинают работать только после перезапуска ipfw.
Название: Re: ping: sendto: Permission denied Отправлено: evp от 08 Июля 2010, 07:30:21 Вот, что еще удалось выяснить:
# ipfw show 00050 53 4725 allow tcp from any to me dst-port 22 00051 44 7032 allow tcp from me 22 to any 00100 0 0 allow ip from any to any via lo0 00105 1814 452908 allow ip from any to any via rl0 00110 64 8019 nat 1 ip from any to any via nfe0 00120 0 0 deny ip from any to any 65535 0 0 deny ip from any to any # ping 217.69.128.43 PING 217.69.128.43 (217.69.128.43): 56 data bytes ping: sendto: Permission denied ping: sendto: Permission denied ^C --- 217.69.128.43 ping statistics --- 2 packets transmitted, 0 packets received, 100.0% packet loss # ipfw nat 1 show config Тут, по идее, мы должны увидеть конфигурацию nat 1, но ее почему-то нет. # /etc/rc.d/ipfw restart net.inet.ip.fw.enable: 1 -> 0 Flushed all rules. 00050 allow tcp from any to me dst-port 22 00051 allow tcp from me 22 to any 00100 allow ip from any to any via lo0 00105 allow ip from any to any via rl0 ipfw nat 1 config if nfe0 same_ports reset 00110 nat 1 ip from any to any via nfe0 00120 deny ip from any to any Firewall rules loaded. # ipfw nat 1 show config ipfw nat 1 config if nfe0 same_ports reset # А после перезагрузки ipfw появилась конфигурация nat 1. И, конечно: # ping 217.69.128.43 PING 217.69.128.43 (217.69.128.43): 56 data bytes 64 bytes from 217.69.128.43: icmp_seq=2 ttl=116 time=63.537 ms 64 bytes from 217.69.128.43: icmp_seq=3 ttl=116 time=63.639 ms 64 bytes from 217.69.128.43: icmp_seq=4 ttl=116 time=63.667 ms ^C --- 217.69.128.43 ping statistics --- 5 packets transmitted, 3 packets received, 40.0% packet loss round-trip min/avg/max/stddev = 63.537/63.614/63.667/0.056 ms # Получается, что при первоначальной загрузке не читается конфигурация ната? Почему так? Название: Re: ping: sendto: Permission denied Отправлено: ser970 от 08 Июля 2010, 09:17:05 firewall_nat_enable="YES" > /etc/rc.conf
Название: Re: ping: sendto: Permission denied Отправлено: Aivanzipper от 08 Июля 2010, 09:21:15 allow icmp from any to any
Название: Re: ping: sendto: Permission denied Отправлено: evp от 08 Июля 2010, 16:51:50 firewall_nat_enable="YES" > /etc/rc.conf К сожалению, не сработало. ipfw nat 1 show config - по-прежнему пуст.allow icmp from any to any :) Можно и так, конечно. Но задача вроде как в другом - заставить работать nat при старте системы, а не только после перезагрузки правил ipfw.Есть еще идеи? Название: Re: ping: sendto: Permission denied Отправлено: Maks от 08 Июля 2010, 17:11:49 Прописать в Фаэрволе
00001 allow any to any в общем открыть все. И пересобрать ядро. У самого такое было, на фре 7.2 Название: Re: ping: sendto: Permission denied Отправлено: evp от 08 Июля 2010, 17:23:39 Что значит "пересобрать"? С теми же опциями, или что-то изменить надо? Дело в том, что оно было пересобрано за несколько часов до моего поста.
Название: Re: ping: sendto: Permission denied Отправлено: ser970 от 08 Июля 2010, 17:24:48 Прописать в Фаэрволе бред00001 allow any to any в общем открыть все. И пересобрать ядро. У самого такое было, на фре 7.2 сказано же нат не стратует. поковырял чуть исходники днсп используй скрипт после поднятия апи Название: Re: ping: sendto: Permission denied Отправлено: evp от 08 Июля 2010, 17:35:39 Пересобрал ядро, все по-прежнему.
Использовать скрипт для рестарта ipfw как-то некошерно, хотелось бы, чтобы работало штатно. А что там такого в исходниках, что вы советуете рестартовать скриптом? Название: Re: ping: sendto: Permission denied Отправлено: stix от 08 Июля 2010, 18:11:11 а может попробовать юзать другой нат? не через ipfw ?
сделай еще rxcsum ifconfig rl0 -rxcsum -tso Название: Re: ping: sendto: Permission denied Отправлено: ser970 от 08 Июля 2010, 18:30:00 Использовать скрипт для рестарта ipfw как-то некошерно, хотелось бы, чтобы работало штатно. А что там такого в исходниках, что вы советуете рестартовать скриптом? да не надо рестартовать фаер всего то ipfw nat 1 config if nfe0 same_ports reset но тут есть маленький нюанс католько передернится апи надо перезапускать ipfw nat 1 config if nfe0 same_ports reset Название: Re: ping: sendto: Permission denied Отправлено: evp от 08 Июля 2010, 23:25:17 а может попробовать юзать другой нат? не через ipfw ? Я понимаю это. Вот тут http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/#extra_info (http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/#extra_info) написано:сделай еще rxcsum ifconfig rl0 -rxcsum -tso Цитировать - Библиотека libalias, на которой основан ipfw nat, плохо дружит с функциями аппаратного ускорения расчета контрольных сумм и управления потоками, которые доступны на некотроых сетевых адаптерах. Рекомендуется выключать tcp segmentation offloading (TSO), а так же rxcsum на том сетевом адаптере где работает нат (ifconfig em0 -rxcsum -tso). Но у меня nat как бы работает... В любом случае, отключение этих опций не помогло, а за попытку помочь - спасибо.Название: Re: ping: sendto: Permission denied Отправлено: evp от 08 Июля 2010, 23:30:06 да не надо рестартовать фаер Это, конечно, помогает. Спасибо. Но, хотелось бы понять почему при старте системы эта команда не отрабатывается в rc.firewall, хотя другие правила добавляются. Вроде бы так не предусмотрено создателями :) Буду дальше искать косяк. Если будут у кого идеи, заранее благодарен.всего то ipfw nat 1 config if nfe0 same_ports reset Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 01:50:58 Появилась мысль, что в момент старта системы, когда обрабатываются правила rc.firewall, внешний интерфейс еще не успевает сконфигурироваться по DHCP. Проверил так: задал ему статический адрес, перезагрузил систему. Вуаля, все работает, NAT свой конфиг прочитал. :)
В связи с этим мой вопрос переформулируется: как можно приостановить загрузку правил rc.firewall до того момента когда внешний интерфейс будет полностью сконфигурирован? Название: Re: ping: sendto: Permission denied Отправлено: goletsa от 09 Июля 2010, 07:45:01 Не проще запустить r.firewall еще раз например при запуке локальных пакетов или из rc.local?
Название: Re: ping: sendto: Permission denied Отправлено: stix от 09 Июля 2010, 07:58:30 попробуй dhcp клиент запускать в самом начале списка rc.conf
а firewall в самом конце они же в алфавитном порядке очереди выполняются. Цитировать скрипты в новой интерпретации ОБЯЗАНЫ иметь ключевые слова в заголовках: ``PROVIDE'', ``BEFORE'',``KEYWORD'', ``REQUIRE'' примерно так: # PROVIDE: что_обеспечивает # REQUIRE: для_чего_требуется # BEFORE: перед_кем_стартует # KEYWORD: ключевое_слово из верхних: PROVIDE - обязаловка, остальные ОПРЕДЕЛЯЮТ порядок старта, это видно по REQUIRE, BEFORE и KEYWORD Порядок выполнения НОВЫХ скриптов, с указанными заголовками, обеспечивает утилита rcorder - она как бы сортирует список файлов по верхним заголовкам, в этом порядке они и выполняются 2) если же у нас ОПРЕДЕЛЕНА переменная: local_startup , тогда будут выполняться старт-стоп скрипты не только в /etc/rc.d, но и в тех директориях которые заданы в $local_startup - вот тут НЬЮАНС: - скрипты в этих директориях могут быть в НОВОЙ нотации с заголовком PROVIDE, они будут стартовать ПЕРВЫМИ - и кроме них могут быть скрипты в СТАРОЙ нотации (без PROVIDE), они стартуют в лескикографическом порядке Прим: REQUIRE и BEFORE можно использовать для задания своего порядка, ДАЖЕ если наш скрипт НИЧЕГО не REQUIRE и тд и тп, ну просто rcorder сортирует файлы в rc по такому принципу Соответственно решение: либо в /usr/local/etc/rc.d - все СТАРЫЕ скрипты поправить на НОВЫЙ лад (в этом случае вовсе можно в /etc/rc.d перенести), либо наоборот на СТАРЫЙ лад. Название: Re: ping: sendto: Permission denied Отправлено: ser970 от 09 Июля 2010, 08:37:41 смотри в исходниках - там есть все обяснения.
можно конечно и поправть - но ... 1 дорого будет 2 при обновлениии? должны быть патчи ищи или пиши разработчикам. как временый вариант ( кстати чем он тебе не нравится ) используй скрипт - но не забывай как только передернится апи надо перезапускать . Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 10:21:05 А что есть "передернится апи"?
Название: Re: ping: sendto: Permission denied Отправлено: ser970 от 09 Июля 2010, 10:49:12 А что есть "передернится апи"? изменитсяон же выдается по днсп у тебя. кстати какая uname ? Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 18:49:20 кстати какая uname ? Дык. Вроде бы в первом посте указал. Не проблема - счас повторю.Код: # uname А вообще-то : FreeBSD 8.0-RELEASE-p3 Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 18:59:01 Цитировать он же выдается по днсп у тебя если я правильно понял, то при изменении внешнего ip придется заного рестартовать ipfw? Вот засада! Хоть по контракту этот IP статический, прописывание его на if дает эффект ненадолго, максимум минут на 40-45. Видимо, пров не получая DHCP request в определенное время (1/2 лизинга) считает меня отсутствующим в сети и рвет сессию. Соответственно, по истечении этого некоторого времени пропадают пинги даже на шлюз.Следовательно, я не могу использовать статический адрес на интерфейсе. И, следовательно вам, вынужден использовать костыли в виде скриптов. Жаль, что так. Но, все равно, спасибо! Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 19:01:42 Кстаи, как определить программно, что "передернулся апи"? То бишь изменился внешний IP?
Название: Re: ping: sendto: Permission denied Отправлено: stix от 09 Июля 2010, 19:04:09 Кстаи, как определить программно, что "передернулся апи"? То бишь изменился внешний IP? тот который выдается по dhcp ?или тот который натит Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 19:09:27 А в моем случае это один и тот же интерфейс - натить надо на dhcp-интерфейсе. Собственно из-за этого и вся проблема. За то время, что получаются настройки dhcp, успевают отработать правила rc.firewall. Соответственно nat не читает свой конфиг.
Название: Re: ping: sendto: Permission denied Отправлено: stix от 09 Июля 2010, 19:14:47 пни провайдера, что это за хрень такая.
Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 19:27:30 Мне кажется, что пинать за это надо не прова, а авторов ipfw_nat (или юзеров типа меня, которые могут не заметить некоторые очевидные из man-а настройки), ибо на винде таких проблем не было замечено (правда пару лет назад и в несколько других условиях, но основные кондиции те же самые - нат на динамически конфигурируемом интерфейсе). Да и не очень-то запинаешь национального оператора связи :( Мы взяли этот канал как резервный, но, разумеется, возникло желание его утилизировать и пустить часть трафика через него. Теперь вижу, что даже в качестве резервного его проблематично пользовать.
Название: Re: ping: sendto: Permission denied Отправлено: elite от 09 Июля 2010, 19:31:20 используй pf
Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 19:52:42 используй pf Спасибо за совет. Работая с виндой я привык, что программы идущие в комплекте с операционной системой и даже программы не входящие в таковой комплект, но подписанные корпорацией microsoft, работают с пол-пинка. Если они не работают, то это означает только одно - мое неумение читать и понимать хелп. Я полагал, что эта философия распространяется и на FreeBSD и выбрал наиболее подходящее для меня решение NAT. Среди его преимуществ - один конфиг и для фаерволла и для NAT, что кому-то может показаться несущественным, но для меня, не привыкшего рыться в конфигах, это существенное преимущество. Кроме того реализация в одном модуле ipfw+nat само собой есть преимущество, ну и многочисленные тесты в нете о превосходстве ipfw_nat над natd и pf не оставляют выбора.Я немного упрям и буду пытаться разрешить эту траблу, хотя наиболее легкий выход из всего этого - установка Win2008Server, тем более что никакого другого функционала кроме маршрутизации (статической) и ната от этого сервера не требуется (не требуется установка сателлитов NoDeny, нет никаких особых условий для маршрутизации). Название: Re: ping: sendto: Permission denied Отправлено: evp от 09 Июля 2010, 19:58:46 попробуй dhcp клиент запускать в самом начале списка rc.conf Огромное спасибо, в плане общеобразовательном, погуглив на эту тему после вашего поста, я узнал очень много полезного и интересного. Спасибо вам, что натолкнули на интересную в практическом плане тему. К сожалению, не вынес из всех статей способа запустить ipfw гарантированно после получения настроек на dhcp-интерфейсе. Возможно я не все до конца понял - там почти все на английском, а я на нем могу только читать (на троечку).а firewall в самом конце они же в алфавитном порядке очереди выполняются. Но все равно спасибо - тема очень оказалась интересна :) Название: Re: ping: sendto: Permission denied Отправлено: VitalVas от 09 Июля 2010, 20:52:21 Огромное спасибо, в плане общеобразовательном, погуглив на эту тему после вашего поста, я узнал очень много полезного и интересного. Спасибо вам, что натолкнули на интересную в практическом плане тему. К сожалению, не вынес из всех статей способа запустить ipfw гарантированно после получения настроек на dhcp-интерфейсе. Возможно я не все до конца понял - там почти все на английском, а я на нем могу только читать (на троечку). а ссилочкой подельшся?Но все равно спасибо - тема очень оказалась интересна :) Название: Re: ping: sendto: Permission denied Отправлено: evp от 10 Июля 2010, 02:00:20 Ссылочкой на что? На Гугль?
Не жалко :) Лови (http://www.google.ru/search?num=50&hl=ru&lr=&newwindow=1&rlz=1I7SKPB_ru&q=%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA+%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0+freebsd&aq=f&aqi=&aql=&oq=&gs_rfai=) Название: Re: ping: sendto: Permission denied Отправлено: Efendy от 10 Июля 2010, 03:02:23 в dhclient.conf есть параметр script "script-name", если я не ошибаюсь, то запускает скрипт после обновления данных
Название: Re: ping: sendto: Permission denied Отправлено: ser970 от 10 Июля 2010, 13:04:59 Мне кажется, что пинать за это надо не прова, а авторов ipfw_nat (или юзеров типа меня, которые могут не заметить некоторые очевидные из man-а настройки), ибо на винде таких проблем не было замечено (правда пару лет назад и в несколько других условиях, но основные кондиции те же самые - нат на динамически конфигурируемом интерфейсе). Да и не очень-то запинаешь национального оператора связи :( Мы взяли этот канал как резервный, но, разумеется, возникло желание его утилизировать и пустить часть трафика через него. Теперь вижу, что даже в качестве резервного его проблематично пользовать. принать надо себя в первую очередь - за не умением думать и пользоватся маном по сути гдето так ( сори пробовать не начем) в dhclient.conf строку script "/etc/dhclient-script"; touch /etc/dhclient-script chmod +x /etc/dhclient-script там простенький скрипт можно испольщовать эти переменые $interface $new_ip_address $old_ip_address $new_subnet_mask $old_subnet_mask да и порытся можно еще найти кучу всего питать далее ? сам уже дальше осилишь? Название: Re: ping: sendto: Permission denied Отправлено: stix от 10 Июля 2010, 13:14:05 все ж тебе надо статикой прописать и понять почему отваливается по статике.
врядли там какието проверки лиз итд Название: Re: ping: sendto: Permission denied Отправлено: ser970 от 10 Июля 2010, 13:36:30 все ж тебе надо статикой прописать и понять почему отваливается по статике. как раз и стоит проверка. что вполне нормально.врядли там какието проверки лиз итд Название: Re: ping: sendto: Permission denied Отправлено: evp от 10 Июля 2010, 15:35:52 да и порытся можно еще найти кучу всего питать далее ? сам уже дальше осилишь? Спасибо, рылся я на эту тему в гугле, видел подобные скрипты, но подумал подойти к решению с другой стороны. Типа так: задать внешнему фейсу статический фейковый адрес, после загрузки ipfw скрипт выполняет "dhclient nfe0" и "ifconfig -alias фейковый_адрес". Вот как-то так. Буду пробовать. Интересно, сработает или нет? Название: Re: ping: sendto: Permission denied Отправлено: evp от 11 Июля 2010, 02:16:31 Сделал как описал в предыдущем посте. Все работает. Всем спасибо за помощь.
|