alexeypp Posted June 2, 2016 · Report post Приветствую. С NAT (один ко многим) на FreeBSD работаю не первый день, но появилась необходимость сделать странное... Абонентов (сейчас около 600, но в перспективе до 1000) стало необходимо NATить 1 к 1 т.е. на каждого абонента будет 1 внешний IP, а не как раньше, где 1 внешний IP на локальный сегмент. Если решать задачу "в лоб" то FreeBSD наверняка затупит на около 2000 правил в ipfw (на одного абонента 2 правила - 1 на выход и 1 на вход его трафика). Поток около 500 мегабит. Может кто-то уже делал такое и подскажет варианты и методы? Из собственных идей - лишь ipfw nat и множество skipto в ipfw чтобы сокращать количество правил, которые будет проходить пакет. Раздавать внешние IP прямо на оборудование абонентов и избавиться от NAT вообще - не вариант, к сожалению. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ixi Posted June 2, 2016 · Report post ipfw table 1 add 10.1.1.1/32 2000 ipfw table 2 add 1.1.1.1/32 2000 ipfw add nat tablearg ip from any to table(1) in recv ... ipfw add nat tablearg ip from table(2) to any out xmit ... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
myth Posted June 2, 2016 · Report post А чем не вариант? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
No_name Posted June 2, 2016 · Report post Абонентов (сейчас около 600, но в перспективе до 1000) стало необходимо NATить 1 к 1 т.е. на каждого абонента будет 1 внешний IP, а не как раньше, Тоже интересно. Пробовал binat на pf, но на небольшом количестве. А вот как бы на 2-3 тысячи... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rdc Posted June 4, 2016 · Report post У меня nat tablearg прекрасно работает. Схема сходная - на абонента даётся по dhcp серая подсеть. В среднем два абонента натятся в один внешний ип. По мере роста абонентской базы, далее перейду на три абонента на ип, и т.д. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Mindaugas Posted June 5, 2016 · Report post IP копейки стоит, зачем вам NAT?:) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
saaremaa Posted June 5, 2016 · Report post IP копейки стоит, зачем вам NAT?:) Из последних предложений нам ... На подумать о "копейках" и 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. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Mindaugas Posted June 5, 2016 · Report post Из последних предложений нам ... На подумать о "копейках" и NAT. Арендуйте если нет денег на покупке. Жалко 5000руб. за 256 в месяц? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
zhenya` Posted June 5, 2016 · Report post вот и посчитайте если надо тысяч 10-20 ипов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Mindaugas Posted June 5, 2016 · Report post вот и посчитайте если надо тысяч 10-20 ипов. Я уверен, что можно по степенно и покупать и част арендовать. И освободит геморроя от NAT'a Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
[anp/hsw] Posted June 6, 2016 · Report post 256ип за 5тыр в месяц ~= 1к$/год. Думаю, что уже начиная с 1000 ипов пора будет задуматься о NAT, ибо 4-килобаксовая железка уже вполне справится с NAT-ом, и будет даже "на вырост". Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
saaremaa Posted June 6, 2016 · Report post ' timestamp='1465196838' post=1289148] 4-килобаксовая железка уже вполне справится с NAT-ом, и будет даже "на вырост". ага и как-то дружить с ФСБшниками надо будет с такой схемой. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
[anp/hsw] Posted June 6, 2016 · Report post ага и как-то дружить с ФСБшниками надо будет с такой схемой. С ними в любом случае надо будет как-то дружить, т.к. схему "у меня все ип белые, так что отстаньте от меня, а СОРМ как-нибудь потом" согласовывают все меньше и меньше. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted June 7, 2016 · Report post Где-то читал про NAT 1:1, как раз на ipfw. Ссылку не помню, но идея была простая, правила задавались не линейные, а в виде дерева, на каждом узле которого подсеть делится пополам, пока не останется один хост (алгоритм двоичного поиска). Правила выглядели сложно и громоздко, но их можно генерировать скриптом. А работало быстро, т.к. на пул /22 нужно максимум 10 итераций. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rdc Posted June 7, 2016 · Report post нафига? всё решается таблицей причём таблица позволяет натить несколько ипов хомячка в соответствующий хомячку внешний ип Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
No_name Posted June 9, 2016 · Report post нафига? всё решается таблицей причём таблица позволяет натить несколько ипов хомячка в соответствующий хомячку внешний ип Ну приведите конкретно пример, что вы все вокруг да около. Что-то мне кажется, что вы немного не о том нате говорите, о котором тут подразумевается. Я, лично, имел ввиду тот нат(1:1), который в pf используется. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rdc Posted June 9, 2016 · Report post см.выше второе сообщение в теме Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
boco Posted June 10, 2016 · Report post см.выше второе сообщение в теме в нем нет существенной строчки, без которой видимо топикстартер и не понимает, что ему советуют... =) 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 в правой части вместо сетей пишете свои серые ипишки. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...