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

NAT "1 к 1" на 1000 абонентов. Чем лучше? FreeBSD NAT

Приветствую.

С NAT (один ко многим) на FreeBSD работаю не первый день, но появилась необходимость сделать странное...

Абонентов (сейчас около 600, но в перспективе до 1000) стало необходимо NATить 1 к 1 т.е. на каждого абонента будет 1 внешний IP, а не как раньше, где 1 внешний IP на локальный сегмент.

Если решать задачу "в лоб" то FreeBSD наверняка затупит на около 2000 правил в ipfw (на одного абонента 2 правила - 1 на выход и 1 на вход его трафика).

Поток около 500 мегабит.

Может кто-то уже делал такое и подскажет варианты и методы?

Из собственных идей - лишь ipfw nat и множество skipto в ipfw чтобы сокращать количество правил, которые будет проходить пакет.

Раздавать внешние IP прямо на оборудование абонентов и избавиться от NAT вообще - не вариант, к сожалению.

Share this post


Link to post
Share on other sites

Абонентов (сейчас около 600, но в перспективе до 1000) стало необходимо NATить 1 к 1 т.е. на каждого абонента будет 1 внешний IP, а не как раньше,

Тоже интересно.

Пробовал binat на pf, но на небольшом количестве.

А вот как бы на 2-3 тысячи...

Share this post


Link to post
Share on other sites

У меня nat tablearg прекрасно работает.

Схема сходная - на абонента даётся по dhcp серая подсеть. В среднем два абонента натятся в один внешний ип.

По мере роста абонентской базы, далее перейду на три абонента на ип, и т.д.

Share this post


Link to post
Share on other sites

IP копейки стоит, зачем вам NAT?:)

O_rly.jpg

Из последних предложений нам ... На подумать о "копейках" и NAT.

We found your details on RIPE's list of people interested in acquiring IP space. We have most of a /18 available, which we're prepared to sell in blocks ranging for a /19 to a /24.

 

Indicative pricing is around €10/IP.

Share this post


Link to post
Share on other sites

Из последних предложений нам ... На подумать о "копейках" и NAT.

 

Арендуйте если нет денег на покупке. Жалко 5000руб. за 256 в месяц?

Share this post


Link to post
Share on other sites

вот и посчитайте если надо тысяч 10-20 ипов.

 

Я уверен, что можно по степенно и покупать и част арендовать. И освободит геморроя от NAT'a

Share this post


Link to post
Share on other sites

256ип за 5тыр в месяц ~= 1к$/год.

Думаю, что уже начиная с 1000 ипов пора будет задуматься о NAT, ибо 4-килобаксовая железка уже вполне справится с NAT-ом, и будет даже "на вырост".

Share this post


Link to post
Share on other sites

' timestamp='1465196838' post=1289148]

4-килобаксовая железка уже вполне справится с NAT-ом, и будет даже "на вырост".

ага и как-то дружить с ФСБшниками надо будет с такой схемой.

Share this post


Link to post
Share on other sites

ага и как-то дружить с ФСБшниками надо будет с такой схемой.

С ними в любом случае надо будет как-то дружить, т.к. схему "у меня все ип белые, так что отстаньте от меня, а СОРМ как-нибудь потом" согласовывают все меньше и меньше.

Share this post


Link to post
Share on other sites

Где-то читал про NAT 1:1, как раз на ipfw.

Ссылку не помню, но идея была простая, правила задавались не линейные, а в виде дерева, на каждом узле которого подсеть делится пополам, пока не останется один хост (алгоритм двоичного поиска).

Правила выглядели сложно и громоздко, но их можно генерировать скриптом.

А работало быстро, т.к. на пул /22 нужно максимум 10 итераций.

Share this post


Link to post
Share on other sites

нафига? всё решается таблицей

 

причём таблица позволяет натить несколько ипов хомячка в соответствующий хомячку внешний ип

Share this post


Link to post
Share on other sites

нафига? всё решается таблицей

причём таблица позволяет натить несколько ипов хомячка в соответствующий хомячку внешний ип

Ну приведите конкретно пример, что вы все вокруг да около.

Что-то мне кажется, что вы немного не о том нате говорите, о котором тут подразумевается.

 

Я, лично, имел ввиду тот нат(1:1), который в pf используется.

Share this post


Link to post
Share on other sites

см.выше второе сообщение в теме

в нем нет существенной строчки, без которой видимо топикстартер и не понимает, что ему советуют... =)

ipfw nat 2000 config ip 1.1.1.1 deny_in same_ports reset

 

товарищ топикстартер, вот более полный пример:

 

/etc/firewall.conf

fw='/sbin/ipfw -q'

# flush rules
${fw} -f flush

# skip out
${fw} add 100 skipto 400 all from any to any out

# in
${fw} add 200 nat tablearg all from any to table\(2\)
${fw} add 300 pass all from any to any

# out
${fw} add 400 nat tablearg all from table\(1\) to any
${fw} add 500 pass all from any to any

/etc/nat.conf

145.255.21.64:  172.28.0.0/24
145.255.21.65:  172.28.1.0/24
145.255.21.66:  172.28.2.0/24
145.255.21.67:  172.28.3.0/24
145.255.21.68:  172.28.4.0/24
145.255.21.69:  172.28.5.0/24
145.255.21.70:  172.28.6.0/24
145.255.21.71:  172.28.7.0/24
145.255.21.72:  172.28.8.0/24
145.255.21.73:  172.28.9.0/24
145.255.21.74:  172.28.10.0/24
145.255.21.75:  172.28.11.0/24
145.255.21.76:  172.28.12.0/24
145.255.21.77:  172.28.13.0/24
145.255.21.78:  172.28.14.0/24
145.255.21.79:  172.28.15.0/24
145.255.21.80:  172.28.16.0/24
145.255.21.81:  172.28.17.0/24
145.255.21.82:  172.28.18.0/24
145.255.21.83:  172.28.19.0/24
145.255.21.84:  172.28.20.0/24
145.255.21.85:  172.28.21.0/24
145.255.21.86:  172.28.22.0/24
145.255.21.87:  172.28.23.0/24
145.255.21.88:  172.28.24.0/24
145.255.21.89:  172.28.25.0/24
145.255.21.90:  172.28.26.0/24
145.255.21.91:  172.28.27.0/24
145.255.21.92:  172.28.28.0/24
145.255.21.93:  172.28.29.0/24
145.255.21.94:  172.28.30.0/24
145.255.21.95:  172.28.31.0/24

/usr/local/etc/rc.d/nat.sh:

#!/bin/sh

OIFS=$IFS
IFS=',:  ' # comma, semicolon, space and <tab>
count=1
config=/etc/nat.conf
grep=/usr/bin/grep
ipfw='/sbin/ipfw -q'
awk=/usr/bin/awk

case "$1" in
       start)
               $grep -E -v '^[[:space:]]*(|#.*)$' $config | while read natip addrs ; do
                       $ipfw nat $count config ip $natip deny_in same_ports reset
                       $ipfw table 2 add $natip $count
                       for addr in $addrs ; do
                               case "$addr" in
                                       \#*)
                                               break
                                       ;;
                                       *)
                                               $ipfw table 1 add $addr $count
                                       ;;
                               esac
                       done
                       count=$(($count+1))
               done
       ;;
       stop)
               IFS=$OIFS
               for i in `$ipfw nat show config | $awk '{print $3}'` ; do
                       $ipfw nat $i delete
               done
               $ipfw table 1 flush
               $ipfw table 2 flush
       ;;
       restart)
               $0 stop
               $0 start
       ;;
       *)
               echo "usage: ${0##*/} <start|stop|restart>"
       ;;
esac

 

в /etc/nat.conf в правой части вместо сетей пишете свои серые ипишки.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.