Для организации NAT с помощью PF нам понадобится следующее:
Включить pf (packet filter)
vi /etc/rc.conf
gateway_enable="YES" #Разрешает серверу быть шлюзом pf_enable="YES" #Запуск pf pflog_enable="YES" #не обязательно, возможность писать логи pf pf_rules="/etc/pf.conf" #Пуьт к правилам pf pf_program="/sbin/pfctl" #Путь к программе управления pf pf_flags="" #Необходимо для pfctl defaultrouter="192.168.1.254" #Шлюз провайдера
No ALTQ support in kernel ALTQ related functions disabled
cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/ROUTER-PF vi /usr/src/sys/i386/conf/ROUTER-PF
# pf device pf device pflog device pfsync options ALTQ options ALTQ_CBQ # Class Bases Queuing (CBQ) options ALTQ_RED # Random Early Detection (RED) options ALTQ_RIO # RED In/Out options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC) options ALTQ_PRIQ # Priority Queuing (PRIQ) options ALTQ_NOPCC # Required for SMP build
vi /etc/pf.conf
ext_if="rl1" #Внешний интерфейс (смотрит к провайдеру WAN) int_if="rl0" #Внутренний интерфейс (смотрит в нашу сеть LAN) set skip on lo0 #пропускаем проверку на петле scrub in all #собираем все части пакета перед отправкой nat on $ext_if from $int_if:network to any -> ($ext_if) block all #запретим все отовсюду pass in on $int_if from any to any #разрешаем всё из локальной сети pass out on $ext_if from $ext_if to any #разрешаем серверу доступ в интернет pass in on $ext_if proto tcp from any to $ext_if port ssh #разрешаем ssh pass in inet proto icmp all icmp-type echoreq #разрешаем ping
Готово!
Осталось прочитать правила pf
pfctl -f /etc/pf.conf
pfctl -e #включить pf pfctl -d #выключить pf
vi /etc/pf.conf
ext_if="rl1" #Внешний интерфейс (смотрит к провайдеру WAN) int_if="rl0" #Внутренний интерфейс (смотрит в нашу сеть LAN) table <pf-allow-pc> file "/etc/pf-allow-pc" set skip on lo0 #пропускаем проверку на петле scrub in all #собираем все части пакета перед отправкой nat on $ext_if from <pf-allow-pc> to any -> ($ext_if) block all #запретим все отовсюду pass in on $int_if from any to any #разрешаем всё из локальной сети pass out on $ext_if from $ext_if to any #разрешаем серверу доступ в интернет pass in on $ext_if proto tcp from any to $ext_if port ssh #разрешаем ssh pass in inet proto icmp all icmp-type echoreq #разрешаем ping
vi /etc/pf-allow-pc
192.168.0.2 192.168.0.3 192.168.0.5
В случае если на сервере не запущен named то на клиентских компьютерах надо в поле DNS указать пограничный DNS сервер, или настраивать named самим
vi /etc/rc.conf
named_enable="YES"
vi /etc/namedb/named.conf
listen-on { 127.0.0.1; 192.168.1.1;}; forwarders { 127.0.0.1; 192.168.1.1;};
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer
нат + пф
я вот такой бы использовал лучше:
ssh
подправил =)
можно так:
pass in on $ext_if proto tcp from any to $ext_if port ssh
ttys, я с тебя фигею... ты
ttys, я с тебя фигею...
ты куда NAT правило запхал посмотрел хоть?
)) исправил
))
исправил
а если есть еще впновский
а если есть еще впновский ng0 то как лучше сделать? и 2 ната
2 chel
не совсем ясен вопрос. надо 2 ната или это вопрос про 2 ната. лучше пиши на форуме, в деталях
)) kruto
Spasibo ))