Задача:есть фрибсд (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.
маны честно курил, но не торкнуло...
Зачем вот это: "127.0.0.1,3128"?
Правило divert нада ставить первым.
>Зачем вот это: "127.0.0.1,3128"?
>Правило divert нада ставить первым.то есть еще перед чек-стейт?
разве это причина ошибки?
>>Зачем вот это: "127.0.0.1,3128"?
>>Правило divert нада ставить первым.
>
>то есть еще перед чек-стейт?
>разве это причина ошибки?Ядро надо пересобрать с divert и forward
>>>Зачем вот это: "127.0.0.1,3128"?
>>>Правило divert нада ставить первым.
>>
>>то есть еще перед чек-стейт?
>>разве это причина ошибки?
>
>Ядро надо пересобрать с divert и forwardIPDIVERT
IPFIREWALL
IPFIREWALL_FORWARDв ядре есть
>> ${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} 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