URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 71806
[ Назад ]

Исходное сообщение
"Помогите пожалуйста настроить маршрутизатор!!!"

Отправлено DEX , 30-Янв-07 18:06 
Чем больше нахожу статей по настройке 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


ГРОМАДНЕЙШАЯ просьба, напишите что, где и как нужно сделать.Огромное Вам спасибо


Содержание

Сообщения в этом обсуждении
"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено Kos , 30-Янв-07 19:33 
А если так?
${ipfw} -f flush
${ipfw} add allow all from any to any

Пингуете как, по имени или по ip?
что выдает ipfw list?


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено DEX , 31-Янв-07 12:58 
>А если так?
>${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


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено yuriy , 30-Янв-07 19:55 
>
>С сервера пингуется только локалка. Вот что выдает netstat -nr -
>
С какого сервера пингуется только локалька, с маршрутизатора что-ли, выражайся точнее.
Сервер провайдера не обязательно может отвечать на echo пакет.
с маршрутизатора попробуй echo пакет на сервер www.freebsd.org, этот сервак
всегда отвечает на эхо пакеты, traceroute тоже работает. Настрой
сначала маршрутизатор, что-бы определялись символьные адреса в числовой адрес,
пинг проходил.
natd демон открывает порт natd (8668) netstat -a проверь.
все станции в локальной сети должны иметь маршрутизатор по умолчанию адрес
твоего маршрутизатора (192.168.10.254).
правила вроде правильно написаны. Раньше у меня тоже был ipfw, только
правила более сложные были, но в целом именно так. (лучшее правило политики защиты это
все запрещено, что не разрешено ИМХО.)

"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено Giro , 31-Янв-07 09:28 

>${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

Вот так попробуй, только сеть свою подставь.


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено DEX , 31-Янв-07 13:19 
>
>>${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 , но перестала пинговаться и локалка


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено DEX , 31-Янв-07 13:27 
>>
>>>${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
Что бы у пользователей был выход в интернет?


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено Giro , 31-Янв-07 14:50 
Это в ядро:

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

покажет статистику по правилам...


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено A Clockwork Orange , 31-Янв-07 14:59 
net.inet.ip.fw.one_pass - если 1, то просмотр правил ipfw прекращается сразу после подпадание под queue или pipe правило. Если 0, то продолжается обработка далее идущих правил;

"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено Giro , 31-Янв-07 15:02 
>net.inet.ip.fw.one_pass - если 1, то просмотр правил ipfw прекращается сразу после подпадание
>под queue или pipe правило. Если 0, то продолжается обработка далее
>идущих правил;

Да точно, у меня очереди же еще... Тогда сорри за неправильную инфу - давно настраивал


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено A Clockwork Orange , 31-Янв-07 15:04 
firewall_type="OPEN"
в данном случае не к чему, это для правил которые в поставке по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN

"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено Giro , 31-Янв-07 15:16 
>firewall_type="OPEN"
>в данном случае не к чему, это для правил которые в поставке
>по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN
Это чтобы у него после перезагрузки не отрубилось все - вдруг сервер в другом городе :-)


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено DEX , 31-Янв-07 15:51 
>>firewall_type="OPEN"
>>в данном случае не к чему, это для правил которые в поставке
>>по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN
>Это чтобы у него после перезагрузки не отрубилось все - вдруг сервер
>в другом городе :-)

А в rc.conf надо добавлять gateway_enable="YES" ?


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено Giro , 31-Янв-07 16:00 
>>>firewall_type="OPEN"
>>>в данном случае не к чему, это для правил которые в поставке
>>>по-умолчанию в /etc/rc.firewall, в них есть раздел OPEN
>>Это чтобы у него после перезагрузки не отрубилось все - вдруг сервер
>>в другом городе :-)
>
>А в rc.conf надо добавлять gateway_enable="YES" ?

Ну у тебя же роутер получается, значит gateway_enable="YES"


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено DEX , 31-Янв-07 17:12 
>>>>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 any

ping 192.168.10.1

.... Permission denied


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено A Clockwork Orange , 31-Янв-07 17:23 
fxp0 - внешний интерфейс
ipfw -f flush
ipfw add divert ip from any to any via fxp0
ipfw add allow from any to any

не работает?


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено A Clockwork Orange , 31-Янв-07 17:29 
пардоню

fxp0 - внешний интерфейс
ipfw -f flush
ipfw add divert natd ip from any to any via fxp0
ipfw add allow from any to any

не работает?


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено DEX , 31-Янв-07 17:52 
>пардоню
>
>fxp0 - внешний интерфейс
>ipfw -f flush
>ipfw add divert natd ip from any to any via fxp0
>ipfw add allow from any to any
>
>не работает?

Расскажите мне "болбесу" все действия по порядку и с самого начала ПОЖАЛУЙСТА.
с указанием полного пути до файла, в котором что-то меняем и какие команды вводим и где.
Вообщем пошаговую инструкцию.IP адреса для настройки смотрите вначале.Заранее ОГРОМНОЕ ВАМ СПАСИБО !!!


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено blackp , 31-Янв-07 22:23 
>>пардоню
>>
>>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
и там вокруг еще посмотри


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено чччч , 01-Фев-07 08:56 
не взрывайте человеку моск
судя по счетчикам, у тебя пакеты в divert сокет не попадают почему-то, соответственно нифига не натится и не работает.
Тщательно проверь все конфиги на предмет тупых ошибок, типа О вместо 0 или там например досовских переносов строк вместо никсовых  и т.д.
Если не найдешь ошибки - ставь в фаерволе первым правилом что-то типа count log logamount 0 ip from any to any и кури логи (токо учти их будет очень много - держи открытую рутовую консоль под руками и пальцы на спусковом крючке шоб убить все это дело, а то легко задосишь машину) - сразу станет ясно, видит у тебя ipfw твои пакеты или нет.


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено iasb , 01-Фев-07 21:56 
http://www.opennet.me/base/net/unix_server_short.txt.html


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено DEX , 02-Фев-07 16:18 
>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         IPDIVERT

3.- cd /usr/src
make kernel KERNCONF=MYKERNEL

4.- 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 пингуется, а шлюз провайдера нет. В интернет выхода нет.
Подскажите , что не так сделал, или что недоделал?


"Помогите пожалуйста настроить маршрутизатор!!!"
Отправлено iasb , 03-Фев-07 18:40 
   Локалка с 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

и проверяй НАТ