поставил мпд по статье, вернее почти по статье, http://www.lissyara.su/?id=1258
нат реализован одной строкой в пф
Код: Выделить всё
ext_if="inet0" #внешний интерфейс
ext_ip="192.168.100.3" # внешний ip-адрес сервера
int_if="lan0" # интерфейс смотрящий в локалку
int_net_vpn="10.50.1.0/24" # внутренняя VPN-сеть
local_net="192.168.0.0/24" # внутрення локалка
int_ip="192.168.0.200" # внутренний ип в локалке
nat on $ext_if from $int_net_vpn to any -> $ext_ip
Код: Выделить всё
#!/bin/sh
#/sbin/ipfw add 100 pass all from any to any
fwcmd="/sbin/ipfw"
vpn_net="10.50.1.0/24"
vpn_ip="10.50.1.1"
ext_if="inet0"
lan_if="lan0"
${fwcmd} -f flush
${fwcmd} -f flush pipe
${fwcmd} -f flush queue
ipfw -q pipe 1 config bw 256Kbit/s queue 1Kbytes
ipfw -q queue 10 config pipe 1 weight 50 queue 80Kbytes mask src-ip 0x0000ffff
ipfw -q add queue 10 all from not 10.50.1.1/24,10.50.1.0/24 to any out
#ipfw -q add divert ip from 10.50.1.100/24 to any via inet0
ipfw -q pipe 2 config bw 512Kbit/s queue 1Kbytes
ipfw -q queue 20 config pipe 2 weight 50 queue 80Kbytes mask dst-ip 0x0000ffff
ipfw -q add queue 20 all from any to not 10.50.1.0/24,10.50.1.0/24 out
мучался с параметрами "out via <интерфейс>" и "in via<интерфейс>" - ни к чему не привело - на внешний интерфейс пакет приходят оттранслированые НАТом, а на NGx- не могу задать привязку "номер интерфейса-логин"
При таком раскладе
ipfw pipe show - грустная картина
не может определить адрес источника и соответственно очередь создаётся отдельная для каждго соединения
ПАМАХИТЕ
усё, хоть и "элегантно", но поборено:
Код: Выделить всё
#!/bin/sh
#/sbin/ipfw add 100 pass all from any to any
fwcmd="/sbin/ipfw"
vpn_net="10.50.1.0/24"
vpn_ip="10.50.1.1"
ext_if="inet0"
lan_if="lan0"
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} -f queue flush
ipfw -q pipe 1 config bw 256Kbit/s queue 1Kbytes
ipfw -q queue 10 config pipe 1 weight 50 queue 80Kbytes mask src-ip 0x0000ffff
ipfw -q add queue 10 all from $vpn_net to any in via 10.50.1.1
ipfw -q pipe 2 config bw 512Kbit/s queue 1Kbytes
ipfw -q queue 20 config pipe 2 weight 50 queue 80Kbytes mask dst-ip 0x0000ffff
ipfw -q add queue 20 all from any to $vpn_net out via 10.50.1.1