Дано:
192.168.20.8 - реальник для static NAT
192.168.20.9 - реальник для PAT
192.168.56.2 - серый адрес для static NAT
192.168.56.0/24 - подесть для PAT
Решение:
- Код: Выделить всё
###создаем ноду nat и подключаем к ipfw
/usr/sbin/ngctl mkpeer ipfw: nat 60 out
###даем ноде имя "natA"
/usr/sbin/ngctl name ipfw:60 natA
###соединяем входящие и исходящие хуки для "natA"
/usr/sbin/ngctl connect ipfw: natA: 61 in
###Посылаем управляющее сообщение в виде структуры для редиректа
/usr/sbin/ngctl msg natA: redirectaddr '{ local_addr=192.168.56.2 alias_addr=192.168.20.8 description="redir_addr" }'
###посылаем управляющее сообщение в виде IP адреса, через который будет работать нат.
/usr/sbin/ngctl msg natA: setaliasaddr 192.168.20.9
###Добавляем правила в IPFW
ipfw add 100 netgraph 61 ip from any to 192.168.20.8 via em0 in
ipfw add 110 netgraph 61 ip from any to 192.168.20.9 via em0 in
ipfw add 120 netgraph 60 ip from 192.168.56.0/24 to any via em0 out
P.S.: Спорить никто и не собирается, так... делимся опытом: надо - будет принят на вооружение, нет - значит не нужен
P.P.S.: Вышенаписанное - есть компилляция из статьи и man ng_nat