На днях понадобилось немного "подровнять" firewall на одной машинке, в связи с тем, что появилась необходимость открыть доступ в интернет определённому списку хостов.
Порывшись в документашках накопал решение вопроса посредством таблиц (tables).
Итак, для начала как это "изобразить" ручками:
Посмотреть что содержится в существующих таблица и существуют ли они вообще можно командой
Так же можно просмотреть содержимое определённой таблицы, указав вместо all номер таблицы.
Для того чтобы отчистить ту или иную таблицу выполняем такую команду
Добавление и удаление данных в таблице происходит так же очень просто.
Например для добавления в таблицу ip фадреса машины 192.168.43.1 выполняем команду
После того, как мы сформировали таблицу(цы) нам необходимо както сослаться на них в списке правил firewall'а. Делается это следующим образом:
Вот собственно и вся премудрость.
Теперь немного оптимизируем сей процесс, внесём изменения в файл настроем firewall'а (например rc.fw)
Вот собственно и всё.
Порывшись в документашках накопал решение вопроса посредством таблиц (tables).
Итак, для начала как это "изобразить" ручками:
Посмотреть что содержится в существующих таблица и существуют ли они вообще можно командой
ipfw table all list
в результате нам будет выведен подобный список
---table(1)---
192.168.133.41/32 0
192.168.133.42/32 0
192.168.133.51/32 0
---table(2)---
192.168.104.0/27 0
Здесь видно, что в системе существует две таблицы, первая содержит ip адреса а вторая адрес сети.Так же можно просмотреть содержимое определённой таблицы, указав вместо all номер таблицы.
Для того чтобы отчистить ту или иную таблицу выполняем такую команду
ipfw table 1 flush
Здесь мы очистили таблицу номер 1. Если же необходимо очистить все таблицы, то вместо номера таблицы указываем all.Добавление и удаление данных в таблице происходит так же очень просто.
Например для добавления в таблицу ip фадреса машины 192.168.43.1 выполняем команду
ipfw table 1 add 192.168.43.10
Для добавления адреса сети вводим
ipfw table 1 add 192.168.43.0/24
Чтобы удалить запись из таблицы выполним команду
ipfw table 1 delete 192.168.43.10
тоже самое и для адреса сети.После того, как мы сформировали таблицу(цы) нам необходимо както сослаться на них в списке правил firewall'а. Делается это следующим образом:
ipfw add allow all from "table(1)" to any via xn0
кавычки вокруг table(1) обязательны, иначе ipfw ругается гадкими словами.Вот собственно и вся премудрость.
Теперь немного оптимизируем сей процесс, внесём изменения в файл настроем firewall'а (например rc.fw)
fwc=/sbin/ipfw
inet_if="rl0"
inet_access_list="/usr/local/etc/inet_access"
${fwc} table 1 flush
cat ${inet_access_list} | while read ip; do
${fwc} table 1 add ${ip}
done
--- где-нибудь далее в файле конфигурации ---
${fwc} add allow all from "table(1)" to any via ${inet_if}
Вот собственно и всё.