Я настраиваю маршрутизатор freebsd и хочу, чтобы определенные IP-адреса в моей сети перенаправлялись на наш локальный веб-сервер, если они делают запросы к порту 80. Например, забаненный пользователь пытается просматривать веб-страницы, но все его запросы перенаправляются на веб-страницу, которая уведомляет его о том, что он заблокирован. Насколько я понимаю, я могу использовать для этого IPFW и, возможно, NATD.
Буду признателен, если кто-нибудь покажет мне хороший пример, как это сделать.
FreeBSD теперь поставляется с 3 (sic!) Разными межсетевыми экранами, ipfw2
это только один из них, а два оставшихся - Даррена Рида ipfilter
и OpenBSD PF
. Оба они имеют встроенный NAT, который поддерживает перенаправление портов «из коробки», см. Например, например. г., ПФ путь. Так почему бы не использовать их вместо этого?
Если вы не хотите возиться с natd, вам нужно ядро, скомпилированное с опцией IPFIREWALL_FORWARD. Вы можете проверить свое текущее ядро, выполнив sysctl kern.conftxt | grep IPFIREWALL_FORWARD '. Если эта опция отсутствует, вам необходимо пересобрать ядро (или придерживаться pf).
Если у вас такое ядро, вам просто нужно добавить следующие правила:
ipfw add allow tcp from any to 192.168.0.0/24 via internal_if0
ipfw add fwd localhost,80 tcp from any to any 80 via internal_if0