Fatal
написал 26 февраля 2005 года в 14:35 (832 просмотра)
Ведет себя
как мужчина; открыл 123 темы в форуме, оставил 484 комментария на сайте.
подскажите, пожалуйста, что за хрень происходит.
прописываю я строку в /etc/rc.firewall
cmd=«/sbin/ipfw»
${cmd} add pass all from any to any
весь трафик пропускается.
затем комментирую эту строку и прописываю, что бы любые пакеты пересылались толь
ко на определйнный локальный адрес:
#${cmd} add pass all from any to any
${cmd} add pass all from 169.254.0.1 to any
${cmd} add pass all from any to 169.254.0.1
но на этот локальный адрес ничеого не пересылается.
что здесь не так? я ведь вместо всех указываю только один адрес, ведь должно пер
есылаться!
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
а с чего бы это оно должно пересылать-то?
что ты хочешь сделать?
видишь ли, помсотрим на то, что ты написал глазами ipfw.
пропускать пакеты от 169.254.0.1 до всех
пропускать пакеты от всех до 169.254.0.1
что он честно и делает.
а наружи компьютерные народности тихо недоумевают, а куда ж им отсылать эти пакеты, точнее ответы на эти пакеты? приходится тихо дропать.
так что этих правил явно недостаточно, чтобы заработало.
так что, давай-ка, расписывай, что ты хочешь сделать, что прочитал, какой конкретно пункт прочитанного пытался применить?
извините, я забыл привести файл /etc/rc.firewall полностю
#!/bin/sh
#
/usr/bin/ipfw -q flush
# внутренний и внешний интерфейсы
inint=«vr0»
outint=«vr1»
cmd=«/usr/bin/ipfw»
${cmd} add divert natd all from any to any ${outint}
# разрешаю трафик в пределах локальной сети
${cmd} add pass all from any to any via ${inint}
# ICMP пакеты
${cmd} add pass ICMP from any to any
# DNS сервера
${cmd} add pass udp from any to any 53
${cmd} add pass udp from any 53 to any
# здесь я пытаюсь, что бы машина 169.254.0.1
# имела доступ ко всему: к интернету, различным портам (smtp, pop)
# через шлюз FreeBSD, но почему-то пакеты не пропускаются
# подскажите, чего нехватает
${cmd} add pass all from 169.254.0.1 to any
${cmd} add pass all from any to 169.254.0.1
правила на pass проверяются до того, как происходит трансляция пакетов в natd.
поэтому по правилу «${cmd} add pass all from 169.254.0.1 to any» пакеты наружу выйдут, но вот обратно под правило «${cmd} add pass all from any to 169.254.0.1» они не попадут
если так, то почему если поставить правило
${cmd} add pass all from any to any
то всё будет работатать, это же тоже правило на pass?
Посмотри tcpdump-ом, что происходит. Через некоторого количества попыток посмотри, какой из счетчиков трафика увеличился.
Вообще , рекомендую писать свои скрипты, а rc.firewall оставить в покое — пусть не мозолит глаза :-)
И еще : сделай `whereis ipfw` :-) Сдается мне, что ipfw лежит в /sbin , а не где-то еще
да, это тоже правило на pass, да вот только не то же.
потому как оно у тебя отвечает за абсолютно весь трафик.
вот если бы ты его разбил по направлениям с интерфейса на другой…
тогда бы ещё можно было что-то сравнивать.
а так… весовые категории не те у правил. совершенно.
скажите, пожалуйста, как два правила запредить всё и разрешить всё уживаются вместе? в ядре по умалчанию стоит запретить всё, а в конфиге — разрешить. и почему у меня разреашется, короче, почему у разрешения приоритет выше чем у запрещения, индек у разрешить всё меньше.
Это реализация политики безопасности «заперщать всё, что не разрешено».
Правила выполняются сверху вниз, т.е. сначала идёт твоё разрешающее правило, поэтому оно выполняется раньше, чем следом идущее запрещающее.
Прочитай man ipfw и не морочь людям голову.