Чем больше нахожу статей по настройке FreeBSD как маршрутизатора, тем больльше путаюсь.
Есть сеть - 192.168.10... , есть маршрутизатор FreeBSD с двумя сетевухами fxp0 ( смотрит в интернет ) и fxp1 - 192.168.10.254 ( смотрит в локалку ). Задача - настроить IPFW и разрешить пользователям выход в интернет.Делал вот так : В ядро добавил
options IPFIREWALL
options IPDIVERT , пересобрал.//rc.conf
firewall_enable="YES"
firewall_script="/usr/local/billing/rc.firewall"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="fxp0"
gateway_enable="YES"
ifconfig_fxp0="inet 212.119.109.58 netmask 255.255.255.252"
ifconfig_fxp1="inet 192.168.10.254 netmask 255.255.255.0"
defaultrouter="212.119.109.57" //Шлюз провайдераДалее
cd /usr/local
mkdir billing
cd billing
vi rc.firewallфайл rc.firewall :
ipfw="/sbin/ipfw -q"
${ipfw} -f flush
${ipfw} add divert natd all from any to any via fxp0
${ipfw} add allow all from any to any
Далее :
chmod 0700 rc.firewallВ /etc/resolv.conf пишу -
nameserver 212.119.97.5 //DNS1 провайдера
nameserver 212.119.96.33 //DNS2 провайдераПерегружаю
С сервера пингуется только локалка. Вот что выдает netstat -nr -
Internet
Destination gateway flags Refs Use Netif Expire
Default 212.119.109.57 UGS 0 42 fxp0
127.0.0.1 127.0.0.1 UH 0 0 lo0
192.168.10 link#2 UC 0 0 fxp1
212.119.109.56/30 link#1 UC 0 0 fxp0
212.119.109.57 link#1 UHLW 2 0 fxp0
ГРОМАДНЕЙШАЯ просьба, напишите что, где и как нужно сделать.Огромное Вам спасибо
А если так?
${ipfw} -f flush
${ipfw} add allow all from any to anyПингуете как, по имени или по ip?
что выдает ipfw list?
>А если так?
>${ipfw} -f flush
>${ipfw} add allow all from any to any
>
>Пингуете как, по имени или по ip?
>что выдает ipfw list?Пингуется по IP
ipfw list выдает -
00100 0 0 divert 8668 ip from any to any via fxp0
00200 24 2327 allow ip from any to any
00500 0 0 divert 8668 ip from any to any via fxp0
65535 0 0 deny ip from any to any
>
>С сервера пингуется только локалка. Вот что выдает netstat -nr -
>
С какого сервера пингуется только локалька, с маршрутизатора что-ли, выражайся точнее.
Сервер провайдера не обязательно может отвечать на echo пакет.
с маршрутизатора попробуй echo пакет на сервер www.freebsd.org, этот сервак
всегда отвечает на эхо пакеты, traceroute тоже работает. Настрой
сначала маршрутизатор, что-бы определялись символьные адреса в числовой адрес,
пинг проходил.
natd демон открывает порт natd (8668) netstat -a проверь.
все станции в локальной сети должны иметь маршрутизатор по умолчанию адрес
твоего маршрутизатора (192.168.10.254).
правила вроде правильно написаны. Раньше у меня тоже был ipfw, только
правила более сложные были, но в целом именно так. (лучшее правило политики защиты это
все запрещено, что не разрешено ИМХО.)
>${ipfw} add divert natd all from any to any via fxp0
>${ipfw} add allow all from any to anyadd divert natd all from (local_net) to not {local_net} out via fxp0
add divert natd all from not {local_net} to me in via fxp0Вот так попробуй, только сеть свою подставь.
>
>>${ipfw} add divert natd all from any to any via fxp0
>>${ipfw} add allow all from any to any
>
>add divert natd all from (local_net) to not {local_net} out via fxp0
>
>add divert natd all from not {local_net} to me in via fxp0
>
>
>Вот так попробуй, только сеть свою подставь.
подставил вместо local_net 192.168.10.254 , но перестала пинговаться и локалка
>>
>>>${ipfw} add divert natd all from any to any via fxp0
>>>${ipfw} add allow all from any to any
>>
>>add divert natd all from (local_net) to not {local_net} out via fxp0
>>
>>add divert natd all from not {local_net} to me in via fxp0
>>
>>
>>Вот так попробуй, только сеть свою подставь.
>
>
>подставил вместо local_net 192.168.10.254 , но перестала пинговаться и локалка
Напишите пожалуйста для НОВИЧКА,1. Что добавляем в ядро
2. Что пишем в rc.conf
3. Что пишем в правилах
4. Где и что еще надо сделать на сервере FreeBSD
Что бы у пользователей был выход в интернет?
Это в ядро:options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_FORWARD_EXTENDED
options IPDIVERTЭто в /etc/rc.conf
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="rl0" (Или какой там у тебя?)Обязательно до перегрузки с новым ядром, а то по умолчанию файрвол отрубает все - побежишь к серверу... :-)
В rc.firewall
Там есть раздел посвященный NAT.
У меня вот так примерно:
local_net="192.168.160.0/24" (Локальная сеть)
out_if="rl0" (Внешний интерфейс)${fwcmd} add 10 divert natd all from ${local_net} to any out via ${out_if}
${fwcmd} add 11 divert natd all from any to me in via ${out_if}Если будешь еще вешать правила на пакеты после ната - поставь в sysctl параметр
net.inet.ip.fw.one_pass=0Должно работать...
Дай командуipfw show
покажет статистику по правилам...
net.inet.ip.fw.one_pass - если 1, то просмотр правил ipfw прекращается сразу после подпадание под queue или pipe правило. Если 0, то продолжается обработка далее идущих правил;
>net.inet.ip.fw.one_pass - если 1, то просмотр правил ipfw прекращается сразу после подпадание
>под queue или pipe правило. Если 0, то продолжается обработка далее
>идущих правил;Да точно, у меня очереди же еще... Тогда сорри за неправильную инфу - давно настраивал
firewall_type="OPEN"
в данном случае не к чему, это для правил которые в поставке по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN
>firewall_type="OPEN"
>в данном случае не к чему, это для правил которые в поставке
>по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN
Это чтобы у него после перезагрузки не отрубилось все - вдруг сервер в другом городе :-)
>>firewall_type="OPEN"
>>в данном случае не к чему, это для правил которые в поставке
>>по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN
>Это чтобы у него после перезагрузки не отрубилось все - вдруг сервер
>в другом городе :-)А в rc.conf надо добавлять gateway_enable="YES" ?
>>>firewall_type="OPEN"
>>>в данном случае не к чему, это для правил которые в поставке
>>>по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN
>>Это чтобы у него после перезагрузки не отрубилось все - вдруг сервер
>>в другом городе :-)
>
>А в rc.conf надо добавлять gateway_enable="YES" ?Ну у тебя же роутер получается, значит gateway_enable="YES"
>>>>firewall_type="OPEN"
>>>>в данном случае не к чему, это для правил которые в поставке
>>>>по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN
>>>Это чтобы у него после перезагрузки не отрубилось все - вдруг сервер
>>>в другом городе :-)
>>
>>А в rc.conf надо добавлять gateway_enable="YES" ?
>
>Ну у тебя же роутер получается, значит gateway_enable="YES"Фигня какая-то получается.Совсем я запарился.
/usr/local/billing/rc.firewall -
fwcmd="sbin/ipfw -q"
local_net="192.168.10.0/24"
out_if="fxp0"
${fwcmd} -f flush
${fwcmd} add 10 divert natd all from ${local_net} to any out via ${out_if}
${fwcmd} add 10 divert natd all from any to any fo me in via ${out_if}
ipfw show -00010 0 0 divert 8668 ip from 192.168.10.0/24 to any out via fxp0
0001 0 0 divert 8668 ip from any to me in via fxp0
00500 0 0 divert 8668 ip from any to any via fxp0
65535 107 9596 deny ip from any to anyping 192.168.10.1
.... Permission denied
fxp0 - внешний интерфейс
ipfw -f flush
ipfw add divert ip from any to any via fxp0
ipfw add allow from any to anyне работает?
пардонюfxp0 - внешний интерфейс
ipfw -f flush
ipfw add divert natd ip from any to any via fxp0
ipfw add allow from any to anyне работает?
>пардоню
>
>fxp0 - внешний интерфейс
>ipfw -f flush
>ipfw add divert natd ip from any to any via fxp0
>ipfw add allow from any to any
>
>не работает?Расскажите мне "болбесу" все действия по порядку и с самого начала ПОЖАЛУЙСТА.
с указанием полного пути до файла, в котором что-то меняем и какие команды вводим и где.
Вообщем пошаговую инструкцию.IP адреса для настройки смотрите вначале.Заранее ОГРОМНОЕ ВАМ СПАСИБО !!!
>>пардоню
>>
>>fxp0 - внешний интерфейс
>>ipfw -f flush
>>ipfw add divert natd ip from any to any via fxp0
>>ipfw add allow from any to any
>>
>>не работает?
>
>Расскажите мне "болбесу" все действия по порядку и с самого начала ПОЖАЛУЙСТА.
>
>с указанием полного пути до файла, в котором что-то меняем и какие
>команды вводим и где.
>Вообщем пошаговую инструкцию.IP адреса для настройки смотрите вначале.Заранее ОГРОМНОЕ ВАМ СПАСИБО !!!
>
http://www.lissyara.su/?id=1127
http://www.lissyara.su/?id=1071
и там вокруг еще посмотри
не взрывайте человеку моск
судя по счетчикам, у тебя пакеты в divert сокет не попадают почему-то, соответственно нифига не натится и не работает.
Тщательно проверь все конфиги на предмет тупых ошибок, типа О вместо 0 или там например досовских переносов строк вместо никсовых и т.д.
Если не найдешь ошибки - ставь в фаерволе первым правилом что-то типа count log logamount 0 ip from any to any и кури логи (токо учти их будет очень много - держи открытую рутовую консоль под руками и пальцы на спусковом крючке шоб убить все это дело, а то легко задосишь машину) - сразу станет ясно, видит у тебя ipfw твои пакеты или нет.
http://www.opennet.me/base/net/unix_server_short.txt.html
>http://www.opennet.me/base/net/unix_server_short.txt.html
Сделал следующее ...1.- Переустановил FreeBSD
2.- cd /sys/i386/conf
cp GENERIC MYKERNEL
vi MYKERNEL
Добавил туда...
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_FORWARD_EXTENDED
options IPDIVERT3.- cd /usr/src
make kernel KERNCONF=MYKERNEL4.- shutdown -r now
5.- vi /etc/rc.conf ...
gateway_enable="YES"
sendmail_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.conf"
natd_enable="YES"
natd_interface="fxp0"
natd_flags="-m -u"
ifconfig_fxp0="inet 212.119.109.58 netmask 255.255.255.252" - смотрит наружу
ifconfig_fxp1="inet 192.168.10.254 netmask 255.255.255.0" - смотрит в локалку
defaultrouter="212.119.109.57" - шлюз провайдера6. - vi /etc/resolv.conf ...
nameserver 212.119.97.5 - DNS1 провайдера
nameserver 212.119.96.33 - DNS2 провайдера7.- vi /etc/ipfw.conf .....
FwCMD="/sbin/ipfw -u" # собственно где лежит бинарник ipfw
LanOut="fxp0" # внешний интерфейс
LanIn="fxp1" # внутренний интерфейс
IpOut="212.119.109.58" # внешний IP адрес машины
IpIn="192.168.10.254" # внутренний IP машины
NetMask="24" # маска сети (если она разная для внешней
# и внутренней сети - придётся вводить ещё
# одну переменную, но самое забавное, что
# можно и забить - оставить 24 - всё будет
# работать, по крайней мере я пробовал -
# работаало на 4-х машинах, в разных сетях,
# с разными масками - настоящими разными! но -
# это неправильно.)
NetIn="192.168.10.0" # Внутренняя сеть${FwCMD} -f flush
${FwCMD} add check-state
${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 127.0.0.0/8
${FwCMD} add deny ip from 127.0.0.0/8 to any
${FwCMD} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 0.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 169.254.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
${FwCMD} add deny icmp from any to any frag
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from any to ${IpOut} in via ${LanOut}
${FwCMD} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
${FwCMD} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 0.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 169.254.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 224.0.0.0/4 to any out via ${LanOut}
${FwCMD} add deny ip from 240.0.0.0/4 to any out via ${LanOut}
${FwCMD} add allow tcp from any to any established
${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}
${FwCMD} add allow udp from any 53 to any via ${LanOut}
${FwCMD} add allow udp from any to any 53 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpOut} 49152-65535 via ${LanOut}
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
${FwCMD} add allow ip from any to any via ${LanIn}
Вот собственно и всё, но наружу сервер FreeBSD не пускает .ipfw show ...
Во всех правилах нули, кроме этих :
00500 119 6392 0 divert 8668 ip from any to any via fxp0
00700 495 4334 6 deny ip from any to 192.168.0.0/16 in via fxp0
01000 40 2006 4 deny ip from any to 240.0.0.0/4 in via fxp0
01600 7 58 8 deny ip from any to 192.168.0.0/16 to any out via fxp0
02700 390 3553 2 allow ip from any to any via fxp1Локалка с FreeBSD пингуется, а шлюз провайдера нет. В интернет выхода нет.
Подскажите , что не так сделал, или что недоделал?
Локалка с FreeBSD пингуется, а шлюз провайдера нет. В интернет выхода нет.${FwCMD} add deny icmp from any to any frag - убери
полный ipfw show давай
меняй местами правила, твоя система - пиши интерфейсы в их именах а не в подстановках
${FwCMD} -f flush${FwCMD} add allow ip from any to any via lo0
${FwCMD} add deny ip from any to 10.0.0.0/8 via fxp0
${FwCMD} add deny ip from any to 172.16.0.0/12 via fxp0
${FwCMD} add deny ip from any to 192.168.0.0/16 via fxp0
${FwCMD} add deny ip from any to 0.0.0.0/8 via fxp0
${FwCMD} add deny ip from any to 169.254.0.0/16 via fxp0
${FwCMD} add deny ip from any to 240.0.0.0/4 via fxp0
${FwCMD} add deny ip from 10.0.0.0/8 to any via fxp0
${FwCMD} add deny ip from 172.16.0.0/12 to any via fxp0
${FwCMD} add deny ip from 192.168.0.0/16 to any via fxp0
${FwCMD} add deny ip from 0.0.0.0/8 to any via fxp0
${FwCMD} add deny ip from 169.254.0.0/16 to any via fxp0
${FwCMD} add deny ip from 224.0.0.0/4 to any via fxp0
${FwCMD} add deny ip from 240.0.0.0/4 to any via fxp0
${FwCMD} add allow udp from any 53 to any via fxp0
${FwCMD} add allow udp from any to any 53 via fxp0${FwCMD} add divert natd ip from any to any in recv fxp0
${FwCMD} add divert natd ip from any to any out xmit fxp0${FwCMD} add allow ip from any to any
${FwCMD} add allow icmp from any to any
в реальности правило диверта будет отображаться для внешнего интерфейса04850 257988190 175972668051 divert 8668 ip from any to any in recv ed0
04852 254897665 146976215204 divert 8668 ip from any to any out xmit ed0
пока не добился пингов на провайдера - нечего защищатьсяпоставь для начала правило - уже в загруженной системе
ipfw add 10 allow ip from any to any via fxp0
ipfw add 11 allow icmp from any to any via fxp0проверь пинги
ipfww delete 10
ipfw delete 11и проверяй НАТ