Страница 1 из 1
Как окрыть портики на IPFW
Добавлено: 2011-02-20 15:02:06
klaster
Как открыть портики без проброса. Не подскажите как это сделать.
Допустим :
Код: Выделить всё
nat 1 config log ip xx.xx.xx.101 reset same_ports deny_in redirect_port tcp 1.2.3.4:6881 6881
add 10100 nat 1 ip from any to any via nfe0
add 10200 allow all from any to any
Я хочу не пробрасывать с одного на другой, а просто открывать локальный Ip 192.168.1.10 :443
Что то ввиде такого : // Но так не работает
Код: Выделить всё
add 10300 allow tcp from any 80,443 to 192.168.1.10
add 10301 allow from 192.168.1.10 to any 80,443
Помогите разобраться ???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 15:53:39
rmn
если у тебя один белый ip, то так сделать нельзя
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 16:07:57
klaster
Статический у меня, один. Может можно как то маскировать, а потом демаскировать обратно divertom???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 19:30:36
rmn
klaster писал(а):Может можно как то маскировать, а потом демаскировать обратно divertom???
именно это и делает:
Код: Выделить всё
nat 1 config log ip xx.xx.xx.101 reset same_ports deny_in redirect_port tcp 1.2.3.4:6881 6881
add 10100 nat 1 ip from any to any via nfe0
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 20:13:48
klaster
rmn писал(а):klaster писал(а):Может можно как то маскировать, а потом демаскировать обратно divertom???
именно это и делает:
Код: Выделить всё
nat 1 config log ip xx.xx.xx.101 reset same_ports deny_in redirect_port tcp 1.2.3.4:6881 6881
add 10100 nat 1 ip from any to any via nfe0
Ну это же больше к пробросу относиться, а я имею ввиду чтото такое :
Код: Выделить всё
add 10200 pass all from xx.xx.227.101 to any 443 out via nfe0
add 10210 pass all from any 443 to 192.168.1.0/24 in via nfe0
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 20:29:26
rmn
rmn писал(а):если у тебя один белый ip, то так сделать нельзя
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 20:44:54
klaster
rmn писал(а):rmn писал(а):если у тебя один белый ip, то так сделать нельзя
Ну а если у меня допустим в сети стоит mail server, web server, monitoring и все на разных локальных машин с разнами Ip.
Разве нельзя сделать чтоб divert маскировал
Пример :
Mail server - 192.168.1.6 и необходимо открыть только 25 порт.
Я так понемаю открыт будет 25 для всей локальной сети. Точно нельзя, чтоб мне голову не ломать ???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 21:14:46
rmn
точно нельзя. Если ты открываешь, к примеру, порт 25, он будет открыт только для шлюза. Чтобы разрешить юзерам подключаться снаружи на определенный порт машины внутри твоей сети, делается проброс порта.
divert, по сути - тот же nat
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 21:23:38
klaster
rmn писал(а):точно нельзя. Если ты открываешь, к примеру, порт 25, он будет открыт только для шлюза. Чтобы разрешить юзерам подключаться снаружи на определенный порт машины внутри твоей сети, делается проброс порта.
divert, по сути - тот же nat
За это спасибо, понял.
У меня такой вопрос, вот мне ненравиться что надо писать после nat в версии 8.1 :
Код: Выделить всё
nat 1 config log ip xx.xx.xx.101 reset same_ports deny_in
add 10100 nat 1 ip from any to any via nfe0
add 10200 allow all from any to any
Это же не безопасно allow all from any .... есть какие инварианты ???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 21:35:37
rmn
klaster писал(а):
У меня такой вопрос, вот мне ненравиться что надо писать после nat в версии 8.1 :
Код: Выделить всё
nat 1 config log ip xx.xx.xx.101 reset same_ports deny_in
add 10100 nat 1 ip from any to any via nfe0
add 10200 allow all from any to any
Это же не безопасно allow all from any .... есть какие инварианты ???
канешн
в файле
/usr/src/sys/netinet/ipfw/ip_fw_pfil.c изменить:
Код: Выделить всё
case IP_FW_NAT:
case IP_FW_REASS:
goto again; /* continue with packet */
на:
Код: Выделить всё
case IP_FW_NAT:
if (V_fw_one_pass)
break;
goto again;
case IP_FW_REASS:
goto again; /* continue with packet */
затем пересобрать ядро:
Код: Выделить всё
cd /usr/src
make buildkernel && make installkernel
и ребутнуться
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 22:37:07
klaster
Спасибо компилем.
Ну есть вопросик, а чем отличаеться :
/etc/sysctl.conf
от
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-20 22:43:24
rmn
klaster писал(а):
Ну есть вопросик, а чем отличаеться :
/etc/sysctl.conf
от
тем, что первое - это опция (переменная) ядра, которая будет влиять на работу фаервола (конкретнее - порядок прохождения правил), а второе - правило фаервола
ipfw разрешающее пакеты по любому протоколу с любого хоста на любой
не нужно сравнивать теплое с мягким

Re: Как окрыть портики на IPFW
Добавлено: 2011-02-21 14:18:57
klaster
Спасибо с компилел, как написали все зароботала.
Единственное что хотел узнать, можно открывать порты таким способом ?
Код: Выделить всё
add 10200 pass all from xx.xx.xxx.101 to any 110 out via nfe0
add 10210 pass all from any 110 to 192.168.1.0/24 in via nfe0
а
то когда пробрасываешь в одну строчку неудобно потом искать какой порт, открыт :
Код: Выделить всё
nat 1 config log ip 94.101.227.101 reset same_ports deny_in redirect_port tcp 192.168.1.1:53 53 redirect_port udp 192.168.1.1:53 53 . итд.
Пример :
Но хотелось чтоб был проброс привиденный вверху для порта redirect_port tcp 192.168.1.1:143 10943.
А такие портики допустим как 22 я бы не хотел пробрасывать, а просто чтоб он был открыт на 22.
Как это реализовать ???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-21 14:28:48
rmn
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-21 15:35:47
klaster
я по эти примерам и делал у себя, только там показаны пробросы, для небольшого количества портов, а если надо открыть 30-40 портов (в одну строчку) запутаешься в поиски, когда искать будешь, вот я хотел узнать более гибкий вариант ???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-21 20:52:02
klaster
Люди добрые объясните пожалуйста, как в ядерном нате просто портики открывать, а то я уже совсем запутался.
У меня только такой вариант :
Код: Выделить всё
nat 1 config log ip xx.xx.xx.101 reset same_ports deny_in redirect_port tcp 192.168.1.1:53 53 redirect_port udp 192.168.1.1:53 53 redirect_port tcp 192.168.1.1:110 110 redirect_port tcp 192.168.1.1 143 143
add 10100 nat 1 ip from any to any via nfe0
Попробывал так не прокатило :
Код: Выделить всё
nat 1 config log ip xx.xx.xx.101 reset same_ports deny_in redirect_port tcp 192.168.1.1:53 53 redirect_port udp 192.168.1.1:53 53
add 10100 nat 1 ip from any to any via nfe0
nat 2 config log ip xx.xx.xx.101 reset same_ports deny_in redirect_port tcp 192.168.1.1:110 110 redirect_port tcp 192.168.1.1:80 80
add 10110 nat 2 ip from any to any via nfe0
Правило 10110 не пременилось по отношению к портам.
Поэтому очень тяжело когда много портов необходимо открыть, таким методом.
Предложите более эффективное решение ???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-22 23:26:04
klaster
Помогите запутался с правилами, вообщем хочу открыть порт для веб сервера с Ip 192.168.1.2:80.
Я не хочу открывать для всей сети 192.168.1.0/24, только для одной машины.
Пример :
Код: Выделить всё
add 1012 pass tcp from 192.168.1.2 to xx.xx.xx.101 80
add 1013 pass tcp from xx.xx.xx.101 to 192.168.1.2 80
Подправьте пожалуйста ???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-23 20:26:16
klaster
Кому интересно, что было что не работало правило, для открытия портов.
Ошибка в том что я после этого правила вставлял допустим :
Код: Выделить всё
nat 1 config log ip $pif reset same_ports deny_in redirect_port tcp $loc:53 53 redirect_port udp $loc:53 53
$cmd 10100 nat 1 ip from any to any via $pif
вот это
$cmd 10101 pass tcp from any to $pif 80
$cmd 10102 pass tcp from $pif to any 80
Так мне никто и не подскозал пока сам не поставил правило по выше, перед тем как пробрасывать порты, и все заработало. Портики стали доступными.
Вот так надо было :
Код: Выделить всё
$cmd 1091 pass tcp from any to $pif 80
$cmd 1092 pass tcp from $pif to any 80
nat 1 config log ip $pif reset same_ports deny_in redirect_port tcp $loc:53 53 redirect_port udp $loc:53 53 redirect_port tcp
$cmd 10100 nat 1 ip from any to any via $pif
$cmd 65534 deny log all from any to any
Все работает.
Но к уважаемым формульчанинам, хочу обратиться и покозать лог который мне не очень нравиться, приведу небольшое написание ipfw
Код: Выделить всё
$cmd 1020 deny ip from any to 192.168.0.0/16 in recv $pif
$cmd 1030 deny ip from 192.168.0.0/16 to any in recv $pif
$cmd 1040 deny ip from any to 172.16.0.0/12 in recv $pif
$cmd 1050 deny ip from 172.16.0.0/12 to any in recv $pif
$cmd 1060 deny ip from any to 10.0.0.0/8 in recv $pif
$cmd 1070 deny ip from 10.0.0.0/8 to any in recv $pif
$cmd 1080 deny ip from any to 169.254.0.0/16 in recv $pif
$cmd 1090 deny ip from 169.254.0.0/16 to any in recv $pif
$cmd 1091 pass tcp from any to $pif 80
$cmd 1092 pass tcp from $pif to any 80
nat 1 config log ip $pif reset same_ports deny_in redirect_port tcp $loc:53 53 redirect_port udp $loc:53 53 redirect_port tcp
$cmd 10100 nat 1 ip from any to any via $pif
Проблема в том что когда я делаю /etc/netstart выдаёт ошибку(лог) :
Ругаясь на строчку
Код: Выделить всё
nat 1 config log ip $pif reset same_ports deny_in redirect_port tcp $loc:53 53 redirect_port udp $loc:53 53 redirect_port tcp
Если добавляю к этому правилу (cmd="ipfw -q add")
Код: Выделить всё
$cmd 1093 nat 1 config log ip $pif reset same_ports deny_in redirect_port tcp $loc:53 53 redirect_port udp $loc:53 53 redirect_port tcp
ошибка
Как быть ???
Re: Как окрыть портики на IPFW
Добавлено: 2011-02-23 20:51:42
klaster
Добовил переменную :
Код: Выделить всё
ipfw="ipfw -q"
$ipfw nat 1 config log ip $pif reset same_ports deny_in redirect_port tcp $loc:53 53 redirect_port udp $loc:53 53 redirect_port tcp
Ошибка ушла но правильно делать так ???