Решил вспомнить детство, собрал гейт на фряхе+ipfw. Но так как на тип файрвола "open" у меня адская интоксикация, захотел закрыть всё, и открывать по чуть чуть. И вот тут-то у меня начались проблемы: либо у меня проходят пакеты в обе стороны, либо ваще никак. В идеале разрешить самому рутеру лезть куда захочется, а вот приватным адресам разрешать
(
Read more... )
Ведро собрано с параметрами
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPDIVERT
options DUMMYNET
Что по умолчанию блокирует всё в конце, но это именно то, что я хотел.
Далее, скрипт:
#!/bin/sh
fwcmd="/sbin/ipfw -q"
if_public="em0"
# Публичный интерфейс на DHCP, поэтому адрес определяем командой, а не вбиваем ручками
ip_public=$(/sbin/ifconfig em0 | /usr/bin/awk '/inet/{print substr($2,0)}')
if_private="em1"
network_local="192.168.1.0/24"
${fwcmd} flush
# Сам NAT, вставлен автоматом фряхой. Именно два правила на один номер. Работают оба по отдельности. Зачем так надо, я так и не догнал.
${fwcmd} add 00050 divert 8668 ip4 from any to any via ${if_public}
${fwcmd} add 00050 nat 123 ip4 from any to any via ${if_public}
# Разрешаем всё на внутреннем интерфейсе
${fwcmd} add 00100 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 allow icmp from any to any
# Начало фильтрации
# Разрешаем всё на интерфейсе внутренней сети
${fwcmd} add allow ip from any to any via ${if_private}
# Открываем ssh для доступа
${fwcmd} add allow ip from any to any 22 via ${if_public}
${fwcmd} add allow ip from any 22 to any via ${if_public}
# И тут у меня начинаются проблемы
# Данное правило разрешает ВСЁ на публичном интерфейсе - а я этого не хочу
${fwcmd} add allow ip from any to any via ${if_public}
# Если павило выше убрать и заменить на
${fwcmd} add allow ip from ${ip_public} to any out xmit ${if_public}
# то связь с внешним миром отрубается нахрен, хотя с самого интерфейса, вроде ходить не запрещено.
Вот пока на этом я и застрял.
Про фильтрацию внутренних пакетов наружу я пока даже и не заикаюсь.
Reply
Leave a comment