freeBSD 7.2
Пытаюсь настроить IPFW nat. Ядро пересобрал с:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_NAT
options IPFIREWALL_FORWARD
options IPFIREWALL_DEFAULT_TO_ACCEPT #как разберусь с правилами - уберу ;)
options IPDIVERT
options DUMMYNET
options LIBALIAS
options HZ="1000"
В общем ситуация очень похожая на http://www.lissyara.su/?id=1967#example_1 (т.е. все очень просто). 2 интерфейса (внутренний sk0 (192.168.1.1/24) и внешний rl0 (10.1.28.192/20)). Вот только проблема в том, что на внешнем интерфейсе нужно поднимать PPPoE чтоб появился интернет. Айпи присваивается динамически dhcp сервером провайдера (можно конечного попробовать договориться на постоянный, но, предполагаю, что это будет стоить дополнительных денег). Доступ снаружи к серверу не нужен (я бы даже сказал нужно чтобы не было к нему доступа никакого кроме ssh... ну и ping может быть).
При дефолтовых настройках (без правил файервола, точнее с одним правилом - разрешить все) все отлично работает. PPPoE устанавливаешь, ipfw nat все подхватывает, и клиенты ходят как к себе домой) Но, надо ж как-то защититься =)
Вышеупомянутый пример изучил (мозг конечно завернулся от всех заворотов трафика), немного изменил правила, точнее подогнал под ситуацию (как мне показалось), сделал исполнительный. В rc.conf добавил firewall_script. Вот что получилось
#! /bin/sh
################### rc.firewall ###################
fwcmd="ipfw"
echo -n "Starting firewall..."
${fwcmd} -f flush
####################################################
# внешний сетевой интерфейс rl0
# только интернет приходит через pppoe tun0 cоединение на нем
# и в этом весь затык
oif="rl0"
# нач. адрес - 10.1.28.128, маска - 255.255.240.0
onet="10.1.28.128/20"
# IP-адрес внешнего интерфейса
oip="10.1.28.192"
# внутренний сетевой интерфейс
iif="sk0"
# локальная сеть: 192.168.1.1, маска - 255.255.255.0
inet="192.168.1.0/24"
# IP-адрес внутреннего интерфейса
iip="192.168.1.1"
####################################################
# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any
# разрешаем все через интерфейс локальной сети
${fwcmd} add 1040 allow ip from any to any via ${iif}
# боимся непонятного
${fwcmd} add 1050 deny ip from any to 192.168.0.0/16 in recv ${oif}
${fwcmd} add 1060 deny ip from 192.168.0.0/16 to any in recv ${oif}
${fwcmd} add 1070 deny ip from any to 172.16.0.0/12 in recv ${oif}
${fwcmd} add 1080 deny ip from 172.16.0.0/12 to any in recv ${oif}
${fwcmd} add 1090 deny ip from any to 10.0.0.0/8 in recv ${oif}
${fwcmd} add 10100 deny ip from 10.0.0.0/8 to any in recv ${oif}
${fwcmd} add 10110 deny ip from any to 169.254.0.0/16 in recv ${oif}
${fwcmd} add 10120 deny ip from 169.254.0.0/16 to any in recv ${oif}
# настройка ната
${fwcmd} nat 1 config log if ${oif} reset same_ports deny_in redirect_port tcp ${oip}:6881 6881 redirect_port udp ${oip}:4444 4444 redirect_port tcp 192.168.1.24:25 25
# заварачиваем все что проходит через внешний интерфейс в нат
${fwcmd} add 10130 nat 1 ip from any to any via ${oif}
# боимся непонятного
${fwcmd} add 65534 deny all from any to any
Вроде как бы все нормально, правила подгружаются, но ничего не работатет) точнее локальные сервисы работают, а клиентов не пускает наружу. Как я могу предполагать - не работает НАТ)
сбрасываю правила - все ходят,все работает =)
смотрю, что он мне пишет, при выполнении скрипта добавления правил
Starting firewall...Flushed all rules.
01040 allow ip from any to any via sk0
01050 deny ip from any to 192.168.0.0/16 in recv rl0
01060 deny ip from 192.168.0.0/16 to any in recv rl0
01070 deny ip from any to 172.16.0.0/12 in recv rl0
01080 deny ip from 172.16.0.0/12 to any in recv rl0
01090 deny ip from any to 10.0.0.0/8 in recv rl0
10100 deny ip from 10.0.0.0/8 to any in recv rl0
10110 deny ip from any to 169.254.0.0/16 in recv rl0
10120 deny ip from 169.254.0.0/16 to any in recv rl0
ipfw nat 1 config if rl0 log deny_in same_ports reset redirect_port tcp 192.168.1.24:25 25 redirect_port udp 10.1.28.192:4444 4444 redirect_port tcp 10.1.28.192:6881 6881
:not found
10130 nat 1 ip from any to any via rl0
:not found
65534 deny ip from any to any
и, оно ругается на мои правила с натом ((
поковырялся поковырялся, так ничего и не надумал.
Прошу помощи. С радостью приму советы по поводу того, что я может быть вообще не так делаю