Jump to content
Калькуляторы

ng_nat nat прозрачный для ipfw

Вообщем видел как работает nat трансляция средствами mpd5 (netgraph), абсолютно прозрачно для ipfw ... Меня это очень порадовало, очень удобно ....

 

Подскажите пожалуйста как сделать подобное только для обычного внешнего интерфейса (созданного не mpd) ?

 

 

Share this post


Link to post
Share on other sites

 

man ng_nat десять раз

Share this post


Link to post
Share on other sites

3 прочитал не помогло :)

 

# man ng_nat

 # Create NAT node
           ngctl mkpeer ipfw: nat 60 out
           ngctl name ipfw:60 nat
           ngctl connect ipfw: nat: 61 in
           ngctl msg nat: setaliasaddr x.y.35.8

           # Divert traffic into NAT node
           ipfw add 300 netgraph 61 all from any to any in via fxp0
           ipfw add 400 netgraph 60 all from any to any out via fxp0

 

далее написано The ng_nat node can be inserted right after the ng_iface(4) node in the graph.

 

вот как раз именно вопрос в том, что бы не надо было заварачивать трафик через ipfw туда .... просто указывать шлюз куда за ethernet интерфейсом, а пакеты что бы уже сами проходя через ethernet интерфейс натились ng_nat

 

 

Share this post


Link to post
Share on other sites

ну тогда еще man ng_iface раз пять... И нарисовать схему прохождения пакетов по нетграфу.

Ну или при работающем mpd5 с нетграфовым натом сделать ngctl dot, который попробовать открыть graphViz-ом. И посмотреть как это делает Mpd вешая нат на интерфейс

Share this post


Link to post
Share on other sites

Старый код, перешёл с него на pf nat:

mknat() {
        iface=$1
        index=$2
        ngnat_inrule=$3
        ngnat_outrule=$4
        nat_ipaddr=$5

        ipfw add $ngnat_inrule  netgraph $ngnat_inrule  ip from any      to me  via $iface in
        ipfw add $ngnat_outrule netgraph $ngnat_outrule ip from $nat_lan to any via $iface out

        ngctl mkpeer ipfw: nat $ngnat_outrule out
        ngctl name ipfw:$ngnat_outrule nat$index
        ngctl connect ipfw: nat$index: $ngnat_inrule in
        ngctl msg nat$index: setaliasaddr $nat_ipaddr
}

# 5000 = de-nat incoming before traffic accounting
# 6000 = nat outgoing after traffic accounting and shapers
test -n "$nat_ipaddr1" && mknat $ext_nic1 1 5001 6001 "$nat_ipaddr1"
test -n "$nat_ipaddr2" && mknat $ext_nic2 2 5002 6002 "$nat_ipaddr2"
...

Share this post


Link to post
Share on other sites

Почитав документацию понял что на ether ифейсах это не возможно ..

Share this post


Link to post
Share on other sites

Я вот два дня уже почитываю доки, а с ng_eiface не получится завернуть в ng_nat пакетики?

Между ng_eiface и ng_ether, к примеру или на выходе с ng_eiface уже готовые ethernet кадры, а не ip пакеты?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this