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

Исходное сообщение
"ipfw - troubles: что не так?"

Отправлено Валентин , 21-Апр-08 22:30 
Задача:

есть фрибсд (70) сервер - em0 смотрит в мир, rl0 - смотрит в домашнюю локалку
надо разрешить пользователям из домашней (все виндовсы) сети выход "в люди".

0. пересобрал ядрышко

1. честно слизал пример
-----------------------------------------------------------
#!/bin/sh
   ipfw='/sbin/ipfw -q'
   ournet='192.168.0.1/24'
   uprefix='192.168.0'
   ifout='em0'
   ifuser='rl0'
   ${ipfw} flush
   ${ipfw} add 100 check-state
   ${ipfw} add 200 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
   ${ipfw} add 210 reject ip from ${ournet} to any in via ${ifout}
   ${ipfw} add 300 allow ip from any to any via lo
   ${ipfw} add 310 allow tcp from me to any keep-state via ${ifout}
   ${ipfw} add 320 allow icmp from any to any
   ${ipfw} add 330 allow udp from me to any domain keep-state
   ${ipfw} add 340 allow udp from any to me domain
   ${ipfw} add 350 allow ip from me to any
   ${ipfw} add 400 allow tcp from any to me http,https,ssh
   ${ipfw} add 410 allow tcp from not ${ournet} to me smtp
   ${ipfw} add 500 fwd 127.0.0.1,3128 tcp from ${ournet} to any http out via ${ifout}
   ${ipfw} add 510 divert natd ip from ${ournet} to any out via ${ifout}

   ${ipfw} add 1002 allow ip from ${uprefix}.2 to any via ${ifuser}
   ${ipfw} add 1002 allow ip from any to ${uprefix}.2 via ${ifuser}
-----------------------------------------------------------

2. на виндовой машинке сделал ип 192.168.0.2 маску 255.255.255.0 гв 192.168.0.1 днс 192.168.0.1

---не заработало :(
запустил это скрипт сам по себе и получил:

ipwf: getsockopt(IP_FW_ADD): invalid argument

в правилах 500 и 510.

маны честно курил, но не торкнуло...


Содержание

Сообщения в этом обсуждении
"ipfw - troubles: что не так?"
Отправлено LOL , 21-Апр-08 22:55 
Зачем вот это: "127.0.0.1,3128"?
Правило divert  нада ставить первым.

"ipfw - troubles: что не так?"
Отправлено Валентин , 21-Апр-08 23:26 
>Зачем вот это: "127.0.0.1,3128"?
>Правило divert  нада ставить первым.

то есть еще перед чек-стейт?
разве это причина ошибки?


"ipfw - troubles: что не так?"
Отправлено pavel , 22-Апр-08 03:57 
>>Зачем вот это: "127.0.0.1,3128"?
>>Правило divert  нада ставить первым.
>
>то есть еще перед чек-стейт?
>разве это причина ошибки?

Ядро надо пересобрать с divert и forward


"ipfw - troubles: что не так?"
Отправлено Валентин , 22-Апр-08 11:52 
>>>Зачем вот это: "127.0.0.1,3128"?
>>>Правило divert  нада ставить первым.
>>
>>то есть еще перед чек-стейт?
>>разве это причина ошибки?
>
>Ядро надо пересобрать с divert и forward

IPDIVERT
IPFIREWALL
IPFIREWALL_FORWARD

в ядре есть



"ipfw - troubles: что не так?"
Отправлено Proximo , 22-Апр-08 14:12 
>>   ${ipfw} add 1002 allow ip from ${uprefix}.2 to any via ${ifuser}
>>   ${ipfw} add 1002 allow ip from any to ${uprefix}.2 via ${ifuser}

Вполне возможно что тут не работает конкатенация. у меня почему-то она тоже не работала.

после выполнения скрипта сделай ipfw show и посмотри как реально отработал твой скрипт. мой ipfw в таком случае забивал "${uprefix}.2" и прописывал только "${uprefix}" что было ошибкой.

в причинах не разбирался - переписал по-другому


"ipfw - troubles: что не так?"
Отправлено Justice , 22-Апр-08 15:14 
>[оверквотинг удален]
>>>   ${ipfw} add 1002 allow ip from any to ${uprefix}.2 via ${ifuser}
>
>Вполне возможно что тут не работает конкатенация. у меня почему-то она тоже
>не работала.
>
>после выполнения скрипта сделай ipfw show и посмотри как реально отработал твой
>скрипт. мой ipfw в таком случае забивал "${uprefix}.2" и прописывал только
>"${uprefix}" что было ошибкой.
>
>в причинах не разбирался - переписал по-другому

[root@freedom /]# ipfw show
00100      0         0 check-state
00200      0         0 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17
00210      0         0 reject ip from 192.168.0.0/24 to any in via em0
00300      0         0 allow ip from any to any via lo
00310 154528 105538954 allow tcp from me to any via em0 keep-state
00320    475     26992 allow icmp from any to any
00330    158     17160 allow udp from me to any dst-port 53 keep-state
00340      0         0 allow udp from me to any dst-port 53
00350      0         0 allow ip from me to any
00400    479     30116 allow tcp from any to me dst-port 80,443,22
00410      1        40 allow tcp from not 192.168.0.0/24 to me dst-port 25
01002    778     59140 allow ip from 192.168.0.2 to any via rl0
01002      0         0 allow ip from any to 192.168.0.2 via rl0
65535  14219   4942201 deny ip from any to any