Подробное руководство по ipfw nat

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mlevel
мл. сержант
Сообщения: 105
Зарегистрирован: 2009-09-28 15:31:39

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение mlevel » 2011-03-01 0:38:28

Кто юзает round-robin(через prob & keep-state) в ipfw? Насколько правильно работает? Нет ли проблем с FTP passive? Стоит ли спрыгивать с PF nat?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

BiJey
рядовой
Сообщения: 19
Зарегистрирован: 2009-01-23 22:00:06

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение BiJey » 2011-03-09 12:40:21

ADRE писал(а):
pom писал(а):Почему может не работать redirect_port ?
Все работает, ipfw nat работает, ipfw nat 1 show выводит адекватный результат, а порты не перебрасываются, ответа на них нет.
В какую сторону копать?
И кстати, в статье нет примера для ограничения доступа к перебрасываемым портам, при установке ограничений как для natd на порты вообще никого не пускает.
Поставьте на крайний случай логирование всех правил и посмотрите где режится... бывает что запихивает в lo0
все написал проще некуда, никаких ограничений, firewall_type=open
проброс порта не работает, но вот в статистике ipfw show видно что какието пакеты попадают под правило lo0.
как поченить проброску портов?

BiJey
рядовой
Сообщения: 19
Зарегистрирован: 2009-01-23 22:00:06

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение BiJey » 2011-03-09 13:01:59

Извеняюсь, оказалось каспер на локальном компе блочил 55500 порт

Аватара пользователя
ADRE
майор
Сообщения: 2641
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение ADRE » 2011-03-10 18:00:36

BiJey писал(а):
ADRE писал(а):
pom писал(а):Почему может не работать redirect_port ?
Все работает, ipfw nat работает, ipfw nat 1 show выводит адекватный результат, а порты не перебрасываются, ответа на них нет.
В какую сторону копать?
И кстати, в статье нет примера для ограничения доступа к перебрасываемым портам, при установке ограничений как для natd на порты вообще никого не пускает.
Поставьте на крайний случай логирование всех правил и посмотрите где режится... бывает что запихивает в lo0
все написал проще некуда, никаких ограничений, firewall_type=open
проброс порта не работает, но вот в статистике ipfw show видно что какието пакеты попадают под правило lo0.
как поченить проброску портов?
natd после изменений в нем правил рестартовали?
//del

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-14 4:57:39

Запутался в трёх соснах. Дано: машинка на FreeBSD питает интернетом локалку. IP динамический, DHCP.
rc.conf

Код: Выделить всё

defaultrouter="10.213.8.1"
hostname="server1"
inetd_enable="YES"
ifconfig_fxp0="dhcp"
ifconfig_nfe0="inet 192.168.1.1 netmask 255.255.255.0"
sshd_enable="YES"

firewall_enable="YES"	
firewall_nat_enable="YES"
firewall_script="/etc/firewall.script"	
gateway_enable="YES"	
firewall_nat_interface="fxp0"
firewall.script

Код: Выделить всё

#!/bin/sh

fwcmd="ipfw -q" 	#command ipfw 
LanIf="nfe0"		#Interface LAN
LanNet="192.168.0.0/16"		#LAN IP
LanIp=`ifconfig nfe0 | grep inet | awk '{print $2}'`
WanIf="fxp0"	#Interface WAN
WanIp=`ifconfig fxp0 | grep inet | awk '{print $2}'`

ipfw -q -f flush		

${fwcmd} add 200 check-state	
${fwcmd} add 300 allow all from any to me via ${LanIf} keep-state
${fwcmd} add 400  allow tcp from ${LanNet} to me 22 in via ${LanIf} keep-state

#NAT
${fwcmd} nat 1 config log if ${WanIf} reset same_ports
${fwcmd} add 500 nat 1 ip from ${LanNet} to any
${fwcmd} add 600 nat 1 ip from any to any via ${WanIf}  

${fwcmd} add 700 allow all from any to any

${fwcmd} add deny ip from any to any
1 проблема. После загрузки не срабатывает defaultrouter="10.213.8.1", нужно давать route add default 10.213.8.1 вручную.

2 проблема. В связи непонятно с чем NAT не работает даже после назначения маршрута по умолчанию, приходится перезапускать скрипт фаервола. Хотя, достаточно сделать ipfw nat 1 config log if fxp0 reset same_ports

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-14 13:51:27

Обе проблемы замечательно решены добавлением в rc.conf

Код: Выделить всё

synchronous_dhclient="YES" 
Google чудная штука, по обрывочным сообщениям допёр.
Вообще, где можно получить полную актуальную информацию о IPFW во FreeBSD 8.2? В Хэндбуке про kernel nat вообще ничего нет, а другие источники древнючие.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-03-14 14:08:29

man
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35266
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Alex Keda » 2011-03-14 15:07:33

vadim64 писал(а):man
плохой ответ
принято отвечать

Код: Выделить всё

man чего-то-там
иначе ответ будет бесполезен
Убей их всех! Бог потом рассортирует...

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-03-14 15:52:25

man ipfw
там неебово инфы по кернел нату, терминус и Со неплохо перевели это в своей статье "Подробное руководство ipfw nat"
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-16 16:50:40

Проясните ситуацию.
1. Вот говорят, что во FreeBSD 8.x надо после правила NAT ставить

Код: Выделить всё

allow ip from any to any
и это так, если убрать правило, трафика нету. Но получается, что при наличии данной строки по дефолту всё на машине-роутере открыто. Что делать, как защитить машину?

2. Опция deny_in, как я понял, запрещает входить извне. Но у меня получается, что и так я не могу зайти. Для того, чтобы был доступен сервер, находящийся в локалке, надо делать портфорвардинг. Или..?

терминус_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение терминус_ » 2011-03-16 17:06:04

В 8.2 уже не надо - там починили

deny_in влияет на трафик постуапющий через проход IN (входящий) - если нет дырки через redirect_port или от ранее установленно исходящей сессии, то не пропустит.

показывайте все ваши правила, а то непонятно что у вас куда непускает.

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-16 17:06:54

Сейчас вот так:

Код: Выделить всё

00200 check-state
00300 allow ip from any to me via nfe0 keep-state
00400 allow tcp from 192.168.0.0/16 to me dst-port 22 in via nfe0 keep-state
00600 nat 2 ip from any to any via ng0
00700 allow ip from any to any
65535 deny ip from any to any
nfe0 локальный интерфейс, ng0 VPN-овский.

Меня больше защита роутера интересует.

терминус_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение терминус_ » 2011-03-16 17:18:36

Для того, чтобы был доступен сервер, находящийся в локалке, надо делать портфорвардинг. Или..?
То есть что надо то - надо из интернета иметь доступ к какому-то серверу в 192.168.1.x?
Тогда в настройках ната должен быть порт-форвардинг redirect_port.

Как я понял этот сервер имеет доступ ко всем в локальной сети и к нему есть доступ у всех?

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-16 17:42:17

Да, про redirect_port я уже понял. Сервер (роутер) доступен всем из локалки.
FreeBSD 8.2
В sysctl.conf net.inet.ip.fw.one_pass=1
Нужно закрыть доступ в локалку извне. deny_in нужен?
Нужно закрыть доступ к серверу из WAN. Сейчас при таком наборе правил всё отлично "простукивается". WTP, FTP, SSH не пробовал. Надо открыть только то, что надо, а получается, что всё нараспашку. ipfw по дефолту собран закрытым.

терминус_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение терминус_ » 2011-03-16 18:11:21

Код: Выделить всё

${fwcmd} add 500 check-state
${fwcmd} add 600 allow all from me to any out via ${LanIf} keep-state
${fwcmd} add 700 allow tcp from ${LanNet} to me 22 in via ${LanIf}

${fwcmd} add 800 deny all from ${LanNet} to me in via ${LanIf}
${fwcmd} add 900 allow all from ${LanNet} to any in via ${LanIf}

${fwcmd} nat 1 config log if ${WanIf} reset same_ports deny_in
${fwcmd} add 1000 nat 1 ip from any to any via ${WanIf} 

${fwcmd} add 2000 deny ip from any to any

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-16 18:45:10

Правило 2000 закрывает всё.

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-16 19:27:52

Код: Выделить всё

${fwcmd} add 2000 deny ip from any to any
закрывает всё, а

Код: Выделить всё

${fwcmd} add 2000 allow ip from any to any
разрешает всё. Любые попытки играться обрывают связь.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-03-17 9:02:55

uname -a
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-17 10:46:31

Код: Выделить всё

FreeBSD server1 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Sun Mar  6 11:44:03 UTC 2011     root@server1:/usr/obj/usr/src/sys/SERVERKERN  i386

терминус_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение терминус_ » 2011-03-17 10:59:03

Интереснааа... Что же это получается - они что не починили one_pass в 8.2? :st:

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-17 12:16:17

Кусочек ip_fw_pfil.c

Код: Выделить всё

	case IP_FW_NGTEE:
	case IP_FW_NETGRAPH:
		if (ng_ipfw_input_p == NULL) {
			ret = EACCES;
			break; /* i.e. drop */
		}
		ret = ng_ipfw_input_p(m0, dir, &args,
			(ipfw == IP_FW_NGTEE) ? 1 : 0);
		if (ipfw == IP_FW_NGTEE) /* ignore errors for NGTEE */
			goto again;	/* continue with packet */
		break;

	case IP_FW_NAT:
		/* honor one-pass in case of successful nat */
		if (V_fw_one_pass)
			break; /* ret is already 0 */
		goto again;

	case IP_FW_REASS:
		goto again;		/* continue with packet */
	
	default:
		KASSERT(0, ("%s: unknown retval", __func__));
	}

	if (ret != 0) {
		if (*m0)
			FREE_PKT(*m0);
		*m0 = NULL;
	}
	if (*m0 && mtod(*m0, struct ip *)->ip_v == 4)
		SET_HOST_IPLEN(mtod(*m0, struct ip *));
	return ret;
}
Вроде патч на месте :unknown:

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-17 12:48:53

Даже если так, что можно предпринять? Кроме запрещающих правил до NAT как ещё можно регулировать входящий трафик?

Вопрос помимо данной проблемы. Возможно ли сделать "инклюды" для шелл-скрипта фаервола? Хотелось бы завести отдельный файл, к примеру, для импорта базы спамеров, какеров, агрессивных пауков и прочих.

Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-17 13:32:00

Попробовал по-всякому, доступ к серверу из вне ограничивается только до NAT. После всё попадает под Allow. Выходит, фаер работает в режиме Allow from all, как последнее рукописное правило.


Bayerische
капитан
Сообщения: 1820
Зарегистрирован: 2010-12-25 20:41:50
Откуда: Хлебная столица

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение Bayerische » 2011-03-17 14:00:29

dgh, не знаю, вроде работает, проверить не могу. У меня пошли входящие подключения на порты роутера после поднятия NAT.