IPFW + natd

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: IPFW + natd

Непрочитанное сообщение dikens3 » 2008-06-29 21:02:44

$Alchemist писал(а):Делал по переводу хэндбука http://www.lissyara.su/?id=1356, последний скрипт.
Замечательно.
Это правило вставил для того, чтобы меня не отрубало по SSH после применения скрипта с правилами.
При этом последствия никак не побеспокоили?
$Alchemist писал(а):Да и вообще, входящий нат мне по сути и не нужен т.к. пробросом портов на внутренние серваки у меня занимается rinetd
Он нужен не для проброса порта(этим тоже может заниматься),а для преобразования IP-Адреса.

1. При отправке пакета в интернет твой внутренний IP-Адрес (tcp 192.168.0.120) заменяется на внешний. (На тот IP, под которым выходит сам сервер - шлюз).
2. При получении любого пакета необходимо его загнать в nat (divert), и только после этого будет известно куда идёт пакет, в сеть (Адрес назначения преобразуется в 192.168.0.120 и т.п.) или на сервер-шлюз.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Хостинговая компания 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/

Аватара пользователя
$Alchemist
сержант
Сообщения: 173
Зарегистрирован: 2008-06-26 13:38:17
Откуда: SPb
Контактная информация:

Re: IPFW + natd

Непрочитанное сообщение $Alchemist » 2008-06-29 21:08:53

Ок, спасибо! Куда лучше поставить это established правило?
Machines to Work,
People to Think.

paradox_
проходил мимо

Re: IPFW + natd

Непрочитанное сообщение paradox_ » 2008-06-29 22:30:53

раз уж так любите divert
так юзайте полные конструкции
divert ..... via

а конструкции когда нужны разные диверты у вас пока что ненамечаються

Аватара пользователя
$Alchemist
сержант
Сообщения: 173
Зарегистрирован: 2008-06-26 13:38:17
Откуда: SPb
Контактная информация:

Re: IPFW + natd

Непрочитанное сообщение $Alchemist » 2008-06-29 23:44:34

paradox_ писал(а):раз уж так любите divert
так юзайте полные конструкции
divert ..... via

а конструкции когда нужны разные диверты у вас пока что ненамечаються
у меня так:
divert 8668 ip from any to any out via rl0
чем она не полная?
Machines to Work,
People to Think.

Аватара пользователя
$Alchemist
сержант
Сообщения: 173
Зарегистрирован: 2008-06-26 13:38:17
Откуда: SPb
Контактная информация:

Re: IPFW + natd

Непрочитанное сообщение $Alchemist » 2008-06-30 9:08:24

Huh... разобрался!
Убрал вниз established правило, раскомментировал закрытый по запаре check-state )), сделал DNS через keep-state...
Может кому пригодится полностью рабочий конфиг:

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

#!/bin/sh

# при работе по SSH, чтобы перечитать конфиг набирать nohup sh /etc/rules

# Прежде, чем мы начнем, сбросим список
ipfw -q -f flush

# Установим префикс команды для набора правил
cmd="ipfw -q add"
skip="skipto 400"
wanip="111.222.111.222" # внешний IP
lannet="192.168.0.0/24" # внутренняя сеть
eif="rl0" # внешний интерфейс

# Нет запретов внутри интерфейса смотрящего в локальную сеть
$cmd 010 allow all from any to any via re0

# Нет ограничений на Loopback интерфейсе
$cmd 020 allow all from any to any via lo0

# Рубим попытки lo0 куда-то лезть и откуда-то лезть на lo0
$cmd 030 deny ip from any to 127.0.0.0/8
$cmd 040 deny ip from 127.0.0.0/8 to any

# Входящий NAT
$cmd 050 divert natd ip from any to any in via $eif

# Позволяем пакету проходить, если предыдущий был добавлен в
# "динамическую" таблицу правил с разрешением состояния keep-state
$cmd 060 check-state

############## Outgoing ################

# Исходящий ping
$cmd 100 $skip icmp from any to any keep-state

# Разрешаем DNS
$cmd 110 $skip udp from any to any 53 out via $eif keep-state

# Выпускаем юзверей
# Инет на выход у меня закрыт т.к. все идут на прокси, который прописан ручками в браузере 
#$cmd 120 $skip all from $lannet to any 80 out via $eif setup keep-state
#$cmd 130 $skip all from $lannet to any 443 out via $eif setup keep-state
$cmd 150 $skip all from $lannet to any 4899 out via $eif setup keep-state
$cmd 160 $skip all from $lannet to any 3389 out via $eif setup keep-state
$cmd 170 $skip all from $lannet to any 25 out via $eif setup keep-state
$cmd 180 $skip all from $lannet to any 110 out via $eif setup keep-state

# Разрешаем полный выход с сервака
$cmd 190 $skip all from $wanip to any out via $eif setup keep-state

############# Incoming ################

# Запрещаем весь входящий траффик из зарезервированных адресных пространств
$cmd 200 deny all from 192.168.0.0/16  to any in via $eif  #RFC 1918 private IP
$cmd 201 deny all from 172.16.0.0/12   to any in via $eif  #RFC 1918 private IP
$cmd 202 deny all from 10.0.0.0/8      to any in via $eif  #RFC 1918 private IP
$cmd 203 deny all from 127.0.0.0/8     to any in via $eif  #loopback
$cmd 204 deny all from 0.0.0.0/8       to any in via $eif  #loopback
$cmd 205 deny all from 169.254.0.0/16  to any in via $eif  #DHCP auto-config
$cmd 206 deny all from 192.0.2.0/24    to any in via $eif  #reserved for docs
$cmd 207 deny all from 204.152.64.0/23 to any in via $eif  #Sun cluster
$cmd 208 deny all from 224.0.0.0/3     to any in via $eif  #Class D & E multicast

# Запрещаем ident
$cmd 215 deny tcp from any to any 113 in via $eif

# Запрещаем весь сервис Netbios. 137=имя, 138=дейтаграмма, 139=сессия
# Netbios это сервис общего доступа MS/Windows .
# Блокируем MS/Windows hosts2 name server requests 81
$cmd 220 deny tcp from any to any 137 in via $eif
$cmd 221 deny tcp from any to any 138 in via $eif
$cmd 222 deny tcp from any to any 139 in via $eif
$cmd 223 deny tcp from any to any 81  in via $eif

# Запрещаем пакеты прибывшие позже
$cmd 230 deny all from any to any frag in via $eif

# Разрешаем входящий пинг определенных типов
$cmd 300 allow icmp from any to $wanip in via $eif icmptypes 0,8,11 limit src-addr 2

# Разрешаем входящую www функцию
$cmd 310 allow tcp from any to $wanip 80 in via $eif setup limit src-addr 2

# Разрешаем входящие безопасные SSH, порт лучше поменять
$cmd 320 allow tcp from any to $wanip 22 in via $eif setup limit src-addr 2

# Разрешаем входящую почту SMTP
$cmd 330 allow tcp from any to $wanip 25 in via $eif setup limit src-addr 2

# Разрешаем входящую почту POP3
$cmd 340 allow tcp from any to $wanip 110 in via $eif setup limit src-addr 2

# Разрешаем RAdmin, дальше у меня его прокидывает rinetd
$cmd 350 allow tcp from any to $wanip 33333 in via $eif setup limit src-addr 2
$cmd 351 allow tcp from any to $wanip 44444 in via $eif setup limit src-addr 2
$cmd 351 allow tcp from any to $wanip 55555 in via $eif setup limit src-addr 2

# Разрешаем уже установленные соединения
$cmd 360 allow all from any to any established

########### Final ###############

# Режем все, что не пошло в $skip
$cmd 399 deny log all from any to any

# Исходящий NAT
$cmd 400 divert natd ip from any to any out via $eif
# Разрешаем выход транслированых пакетов
$cmd 410 allow all from any to any

# Режем все лишнее
$cmd 999 deny log all from any to any
Всем спасибо за участие! :"":
Machines to Work,
People to Think.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: IPFW + natd

Непрочитанное сообщение dikens3 » 2008-06-30 11:36:04

лучше вывод ipfw show.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

paradox_
проходил мимо

Re: IPFW + natd

Непрочитанное сообщение paradox_ » 2008-06-30 11:40:05

у меня так:
divert 8668 ip from any to any out via rl0
чем она не полная?
divert 8668 ip from any to any via rl0
эть еще такие конструкции
но учитывая что вы всетаки неразобрались как работает divert+natd
это не для вас

Rita
сержант
Сообщения: 157
Зарегистрирован: 2007-12-01 23:41:45

Re: IPFW + natd

Непрочитанное сообщение Rita » 2008-07-04 0:56:24

Не согласна что диверт - нечто страшное непосягаемое. У нас многое работает на штатном ipfw+natd и ничего. И помоему с натд как раз все проще.
А топикстатретру посоветовала бы сначала напсиать фаер в 2-3 правила и посмотреть как они будут работать, а потом лепить конфиг какой нужно, а не наоборот.

з.с.
нормальная пркатика когда в ядре ставим фаер закрытым а оптом в конфиге открываем только то что нужно imho

Аватара пользователя
$Alchemist
сержант
Сообщения: 173
Зарегистрирован: 2008-06-26 13:38:17
Откуда: SPb
Контактная информация:

Re: IPFW + natd

Непрочитанное сообщение $Alchemist » 2008-07-04 10:21:35

Rita писал(а):Не согласна что диверт - нечто страшное непосягаемое. У нас многое работает на штатном ipfw+natd и ничего. И помоему с натд как раз все проще.
А топикстатретру посоветовала бы сначала напсиать фаер в 2-3 правила и посмотреть как они будут работать, а потом лепить конфиг какой нужно, а не наоборот.
Топикстартер так изначально и делал ;)
з.с.
нормальная пркатика когда в ядре ставим фаер закрытым а оптом в конфиге открываем только то что нужно imho
это нормальная практика в случае, если вы не работаете в момент установки нового ядра по ssh ;)
Что мешает перед дефолтным разрешающим правилом поставить запрещающее?
Machines to Work,
People to Think.

Rita
сержант
Сообщения: 157
Зарегистрирован: 2007-12-01 23:41:45

Re: IPFW + natd

Непрочитанное сообщение Rita » 2008-07-04 10:36:22

$Alchemist писал(а): это нормальная практика в случае, если вы не работаете в момент установки нового ядра по ssh ;)
Что мешает перед дефолтным разрешающим правилом поставить запрещающее?
А что ssh? По дефолту для ipfw используется конфиг rc.firewall вот в него сразу вносим необходимое правило на доступ а потом собираем ядро и перегружаем, все сразу работет и доступ никуда не пропадает. Проверено временем. Но как правило пересборка ядра - редкость для рабочего сервера, даже если делается то локально, удаленно в крайних случаях только. :roll:

Аватара пользователя
Fioktist
мл. сержант
Сообщения: 84
Зарегистрирован: 2007-04-06 4:06:28
Откуда: Россия

Re: IPFW + natd

Непрочитанное сообщение Fioktist » 2008-08-07 10:00:49

помогите пожалуйста перевести синтаксис правил под 7 FreeBSD
чтобы ipfw самостоятельно выполнял NAT-трансляцию, не требуя запуска демона natd из rc.conf
как прописано в статье http://www.lissyara.su/?id=1726
ipfw.ko пересобран с CFLAGS+= -DIPFIREWALL_NAT
вот мои старые правила

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

${ipfw} add 900 divert 8667 all from ${LADNet} to any out via ${ethSM}
${ipfw} add 910 divert 8668 all from ${LDUNet} to any out via ${ethDU}
${ipfw} add 930 divert 8669 all from ${LALNet} to any out via ${ethMA}
${ipfw} add 940 divert 8667 all from any to ${ipSM} in via ${ethSM}
${ipfw} add 950 divert 8668 all from any to ${ipDU} in via ${ethDU}
${ipfw} add 960 divert 8669 all from any to ${ipMA} in via ${ethMA}
Самое возмутительное в аргументах оппонента - это изобилие правды.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: IPFW + natd

Непрочитанное сообщение hizel » 2008-08-07 11:05:44

как то так

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

${ipfw} nat 7 config ip ${ipSM}
${ipfw} nat 8 config ip ${ipDU}
${ipfw} nat 9 config ip ${ipMA}

${ipfw} add 900 nat 7 all from ${LADNet} to any out via ${ethSM}
${ipfw} add 910 nat 8 all from ${LDUNet} to any out via ${ethDU}
${ipfw} add 930 nat 9 all from ${LALNet} to any out via ${ethMA}
${ipfw} add 940 nat 7 all from any to ${ipSM} in via ${ethSM}
${ipfw} add 950 nat 8 all from any to ${ipDU} in via ${ethDU}
${ipfw} add 960 nat 9 all from any to ${ipMA} in via ${ethMA}
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Fioktist
мл. сержант
Сообщения: 84
Зарегистрирован: 2007-04-06 4:06:28
Откуда: Россия

Re: IPFW + natd

Непрочитанное сообщение Fioktist » 2008-08-07 19:25:58

hizel писал(а):как то так

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

${ipfw} nat 7 config ip ${ipSM}
${ipfw} nat 8 config ip ${ipDU}
${ipfw} nat 9 config ip ${ipMA}

${ipfw} add 900 nat 7 all from ${LADNet} to any out via ${ethSM}
${ipfw} add 910 nat 8 all from ${LDUNet} to any out via ${ethDU}
${ipfw} add 930 nat 9 all from ${LALNet} to any out via ${ethMA}
${ipfw} add 940 nat 7 all from any to ${ipSM} in via ${ethSM}
${ipfw} add 950 nat 8 all from any to ${ipDU} in via ${ethDU}
${ipfw} add 960 nat 9 all from any to ${ipMA} in via ${ethMA}
так неработает
Самое возмутительное в аргументах оппонента - это изобилие правды.

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

Re: IPFW + natd

Непрочитанное сообщение Alex Keda » 2008-08-07 20:17:51

поиск по форуму.
минимум дважды клали рабочие конфиги
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Fioktist
мл. сержант
Сообщения: 84
Зарегистрирован: 2007-04-06 4:06:28
Откуда: Россия

Re: IPFW + natd

Непрочитанное сообщение Fioktist » 2008-08-09 21:06:16

я ненашел, :(
тут тоже был http://sysadmins.ru/topic206710.html
короче в поиске...
Самое возмутительное в аргументах оппонента - это изобилие правды.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: IPFW + natd

Непрочитанное сообщение paradox » 2008-08-09 21:12:30

тобы ipfw самостоятельно выполнял NAT-трансляцию, не требуя запуска демона natd из rc.conf
никто не мешает сделать нат в ipnat
там одна строчка

а остальное режте итд в Ipfw

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: IPFW + natd

Непрочитанное сообщение hizel » 2008-08-10 8:59:16

эм, у мя все верно, это не обсуждается :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Fioktist
мл. сержант
Сообщения: 84
Зарегистрирован: 2007-04-06 4:06:28
Откуда: Россия

Re: IPFW + natd

Непрочитанное сообщение Fioktist » 2008-08-10 13:30:35

Спасибо за помощь, пойду поищу там где это обсуждаетс...

ядро собрано с
ident GATE_NAT
#### main rule
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=150
options IPFIREWALL_NAT
options LIBALIAS

options IPFIREWALL_FORWARD
options IPDIVERT
options DUMMYNET
options HZ=1000

rc.conf
defaultrouter="10.10.10.1"
gateway_enable="YES"
ifconfig_bge0="inet 192.168.2.34 netmask 255.255.255.0"
#ifconfig_bge1="inet 192.168.2.35 netmask 255.255.255.0"
ifconfig_em0="inet 10.10.10.2 netmask 255.255.255.252"
ifconfig_em1="inet 10.100.1.1 netmask 255.255.255.248"
ifconfig_em2="inet 192.168.11.1 netmask 255.255.255.0"
#ifconfig_em3="inet 192.168.255.254 netmask 255.255.255.0"
#natd_enable="YES"
#natd -a 10.10.10.2 -p 8667 -n em0
#natd -a 10.100.1.1 -p 8668 -n em1
#natd -a 192.168.11.1 -p 8669 -n em2
firewall_enable="YES"
firewall_script="/root/ipfw.sh"

sysctl.conf
# Много проходные правила для ipfw чтобы совместить NAT и маршрутизацию
net.inet.ip.fw.one_pass=0

где еще что либо забыл?
Самое возмутительное в аргументах оппонента - это изобилие правды.

Аватара пользователя
Fioktist
мл. сержант
Сообщения: 84
Зарегистрирован: 2007-04-06 4:06:28
Откуда: Россия

Re: IPFW + natd

Непрочитанное сообщение Fioktist » 2008-08-11 7:28:44

:oops:

поставил очередность доступа по ssh раньше чем правила NAT, перестало отваливаться и вроде как работает...

сори за недопанимание
Самое возмутительное в аргументах оппонента - это изобилие правды.

Аватара пользователя
Da1VER
рядовой
Сообщения: 43
Зарегистрирован: 2006-09-30 23:04:19
Контактная информация:

Re: IPFW + natd

Непрочитанное сообщение Da1VER » 2008-08-12 14:08:35

paradox писал(а): а новичкам нат я бы рекомендовал поднимать на ipnat вместо natd
Сори что не совсем в тему... но есть одно но, ipnat - это действительно то, что называется настоящий нат (ака нат который действительно секюрный нат) в нем организованы все самые нужные функции без всяких наворотов, а вот natd как раз рай для тех, кто хочет наковырять кучу всяких плюшок, но при этом полностью светит топологию внутренней сети (при составлении пакета в его заголовки вносится ip сервака и внутрений ip клиента + изменяется ттл пакета - что тоже есть признаком количества проходимых точек) Недаром ipnat разработка OpenBSD.... но ето всеголиш ИМПХО..
Еще раз сори что не совсем по теме...

Аватара пользователя
freeman
лейтенант
Сообщения: 734
Зарегистрирован: 2007-03-18 5:13:25

Re: IPFW + natd

Непрочитанное сообщение freeman » 2008-08-12 14:22:34

Da1VER писал(а):а вот natd как раз рай для тех, кто хочет наковырять кучу всяких плюшок, но при этом полностью светит топологию внутренней сети (при составлении пакета в его заголовки вносится ip сервака и внутрений ip клиента + изменяется ттл пакета - что тоже есть признаком количества проходимых точек)
Эм, я что то не понимаю, или действительно бывают реализации NAT в которых наружу светится внутрений ip клиента и т.д. (ttl то ясно дело стандартно обязан менятся) ? :shock:
Остатся должен только один ...

Аватара пользователя
Da1VER
рядовой
Сообщения: 43
Зарегистрирован: 2006-09-30 23:04:19
Контактная информация:

Re: IPFW + natd

Непрочитанное сообщение Da1VER » 2008-08-12 14:50:43

freeman писал(а): (ttl то ясно дело стандартно обязан менятся) ? :shock:
Все зависит от того что у тебя нат делает - если он просто берет пакет дописывает в его заголовок доп айпишник (ака локали) и изменяет ттл для того чтобы знать что есть доп запись ип.... тобиш нат полностью прозрачный...
Это собственно делает натд, да и работает он как модуль ядра системы, а вот айпинат наоборот он работает от самого ядра ( привилегия на исполнение у него выше ) + он у себя строит таблицу пакетов и их маршрута (только не путать с маршрутизацией) + поддерживает тотже белый нат ака используя битмапы, но при этом всем его функциональность очень низкая, ака дубовый он... да и медленнее намного собственно...