skybetik Posted December 26, 2013 Posted December 26, 2013 Появилась надобность в нате ,вопрос риторический кто сколько выделяет ip на кол Абонов ну например 1 айпи на 50 абонов итд.
malofan Posted December 26, 2013 Posted December 26, 2013 1 ИП на сколько смогу подключить абонов Почему, потому что он всего один но в качестве познавательной рубрики за темой послежу
sanyadnepr Posted December 26, 2013 Posted December 26, 2013 1 ИП на сколько смогу подключить абонов Почему, потому что он всего один но в качестве познавательной рубрики за темой послежу За языком своим последи.
Shuher Posted December 26, 2013 Posted December 26, 2013 Человек хочет за каждый реальный IP (видимо у него их не один) посадить группу пользователей. Вот и итересуется на сколько ипов за натом выделять реальный ип.
malofan Posted December 26, 2013 Posted December 26, 2013 1 ИП на сколько смогу подключить абонов Почему, потому что он всего один но в качестве познавательной рубрики за темой послежу За языком своим последи. Эм, к чему грубость? Что-то не так в том, что у меня всего 1 ИП на мою маленькую сеть? Или в том, что мне интересно, как работают "большие дяди"?
H_U_L_K Posted December 26, 2013 Posted December 26, 2013 Имхо, хоть я и не isp, но выделять 1 ип на 50 юзеров это как-то многовато... вот до 20 в самый раз. Пс: дабы избежать траблов с гуглом и т.п.
loki Posted December 26, 2013 Posted December 26, 2013 (edited) В чем проблема ? Используйте для этих целей PF. nat on lagg1 from <local1> to any -> **.214.178.0/23 source-hash nat on lagg1 from <local1> to any -> **.107.130.0/23 source-hash nat on lagg1 from <local1> to any -> **.41.105.0/22 source-hash table <local1> { 10.11.11.0/24, 192.168.0.0/16 } Edited December 26, 2013 by loki
KaYot Posted December 26, 2013 Posted December 26, 2013 Проблема вероятно в наличии этих самых адресов.
skybetik Posted December 26, 2013 Author Posted December 26, 2013 (edited) Проблема вероятно в наличии этих самых адресов. Совершенно верно ( потому и интересуюсь айпишников мало осталось потому и водим нат Edited December 26, 2013 by skybetik
ttttt Posted December 26, 2013 Posted December 26, 2013 Ну так чем меньше на айпи, тем лучше, ничего другого никто не скажет. Хотя и это уже потихоньку в прошлое уходит, все начинают подстраиваться под наты. Не забывайте в ptr указать, что это nat, лучше сразу и сколько юзеров за ним сидит, чтобы поменьше сам айпи банили, например: natNN-50users.blablabla.net.ua
sanyadnepr Posted December 26, 2013 Posted December 26, 2013 Проблема вероятно в наличии этих самых адресов. Совершенно верно ( потому и интересуюсь айпишников мало осталось потому и водим нат Начните с полтинника, там видно будет.
Ромка Posted December 26, 2013 Posted December 26, 2013 Кстати, может кто подскажет элегантное решение для iptables для НАТа 1 к 8, т. е. нужно в /24 сетку белых адресов НАТить /21 сетку серых.
Ромка Posted December 26, 2013 Posted December 26, 2013 (edited) Так а проблема то в чем? Если вопрос адресован мне, то уже не в чём. Думал будет проблема в большом количестве правил iptables, но один хороший человек направил на путь истиный... Edited December 26, 2013 by Ромка
Goblin Posted December 26, 2013 Posted December 26, 2013 У меня за одним реальным адресом сидит примерно 20 пользователей. А реализация - использую ipset Собственно в цикле создаю правила ната for ix in {0..255}; do $ipset -N nat${ix} iphash $iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 1.2.3.${ix} -m set --match-set nat${ix} srcdone А в скрипте подключения пользователя выбираю цепочку с наименьшим колличеством адресов, что бы примено поровну было nat=0;nat_name=""for ix in {0..255}; do nat_new=`$ipset -L nat${ix} | wc -l` if [ -z ${nat_name} ] ; then nat=${nat_new} nat_name=`echo "nat${ix}"` elif [ ${nat} -gt ${nat_new} ] ; then nat=${nat_new} nat_name=`echo "nat${ix}"` fidone$ipset -A ${nat_name} ${IP} Ну а при отключении - я думаю сами догадаетесь
Ромка Posted December 26, 2013 Posted December 26, 2013 У меня за одним реальным адресом сидит примерно 20 пользователей. А реализация - использую ipset Собственно в цикле создаю правила ната for ix in {0..255}; do $ipset -N nat${ix} iphash $iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 1.2.3.${ix} -m set --match-set nat${ix} src done А в скрипте подключения пользователя выбираю цепочку с наименьшим колличеством адресов, что бы примено поровну было nat=0; nat_name="" for ix in {0..255}; do nat_new=`$ipset -L nat${ix} | wc -l` if [ -z ${nat_name} ] ; then nat=${nat_new} nat_name=`echo "nat${ix}"` elif [ ${nat} -gt ${nat_new} ] ; then nat=${nat_new} nat_name=`echo "nat${ix}"` fi done $ipset -A ${nat_name} ${IP} Ну а при отключении - я думаю сами догадаетесь Тоже хороший вариант. Спасибо.
Гайджин Posted December 27, 2013 Posted December 27, 2013 (edited) Так а проблема то в чем?Если вопрос адресован мне, то уже не в чём. Думал будет проблема в большом количестве правил iptables, но один хороший человек направил на путь истиный...Так можно по разному - если вы не хотите знать четко что во что натится, то можно вообще одним правилом.А еслитак хочется то можно сетами + бинарное дерево. Edited December 27, 2013 by Гайджин
KaYot Posted December 27, 2013 Posted December 27, 2013 У меня за одним реальным адресом сидит примерно 20 пользователей. А реализация - использую ipset Собственно в цикле создаю правила ната for ix in {0..255}; do $ipset -N nat${ix} iphash $iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 1.2.3.${ix} -m set --match-set nat${ix} src done А в скрипте подключения пользователя выбираю цепочку с наименьшим колличеством адресов, что бы примено поровну было nat=0; nat_name="" for ix in {0..255}; do nat_new=`$ipset -L nat${ix} | wc -l` if [ -z ${nat_name} ] ; then nat=${nat_new} nat_name=`echo "nat${ix}"` elif [ ${nat} -gt ${nat_new} ] ; then nat=${nat_new} nat_name=`echo "nat${ix}"` fi done $ipset -A ${nat_name} ${IP} Ну а при отключении - я думаю сами догадаетесь Очень корявый и не имеющий смысла алгоритм. Следующая строка делает точно то же самое, но без костылей. iptables -t nat -o eth1 -A POSTROUTING -p tcp --dport 80 -j SNAT --to 1.2.3.* --persistent
Гайджин Posted December 27, 2013 Posted December 27, 2013 Очень корявый и не имеющий смысла алгоритм. Следующая строка делает точно то же самое, но без костылей. iptables -t nat -o eth1 -A POSTROUTING -p tcp --dport 80 -j SNAT --to 1.2.3.* --persistent Батенька, а вот ту Вы совершенно не правы. Есть в жизни случаи когда этот корявый алгоритм гораздо более предпочтителен, чем предложенное тобой. Наводящая фраза: "кровавая гэбня". Подумай.
KaYot Posted December 27, 2013 Posted December 27, 2013 Так юзеры и в том варианте распределяются динамически, узнать кто куда выходил нельзя. Значит вопрос про 'гэбню' у человека не стоит.
S_ergey Posted December 27, 2013 Posted December 27, 2013 Кто куда ходил видит ipt_NETFLOW http://forum.nag.ru/forum/index.php?showtopic=53979&st=200
Гайджин Posted December 27, 2013 Posted December 27, 2013 Так юзеры и в том варианте распределяются динамически, узнать кто куда выходил нельзя. Значит вопрос про 'гэбню' у человека не стоит.Какая то странная причинно следственная связь? - Вы ее откуда вывели?
Гайджин Posted December 27, 2013 Posted December 27, 2013 Кто куда ходил видит ipt_NETFLOW http://forum.nag.ru/forum/index.php?showtopic=53979&st=200А тут все типа дураки? - Ясен пень видит, да вот только ели натить сеть в сеть (разных размеров), то с большой вероятностью даже даже нетфлоу потом не даст идентифицировать кто куда.
parazit Posted March 8, 2014 Posted March 8, 2014 Доброго времени, всем. Дабы не создавать новую тему - продолжу существующую Проблема в следующем... После обновления сервера с Freebsd 9.1 i386 на FreeBSD 10.0-RELEASE amd64.. начались проблемы с юзерами которые сидят за натом... тоесть днем работаю отлично, а в ночь примерно 2-00 - 3-00 часа начинается ЦИРК.. постоянные обрывы, загрузить ничего нельзя, странички недогружаются.... В то же время пользователи с белыми адресами никаких дискомфортов не чувствуют.... Данная проблема проходит сама по себе (в разное время.. может и в 11-0 может и 14-00 ) либо после ребута сервера... Как понимаете караулить начало траблов и потом бутать сервак каждую ночь - не есть феншуй... Использую для ната PF pf.conf # NAText_if_ua = "vlanXXX"ext_if_world = "vlanYYY" set limit states 500000set optimization aggressive set limit src-nodes 160000 set limit table-entries 160000 nat pass on $ext_if_ua from 10.20.0.0/16 to any -> W.W.W.W/27 round-robin sticky-addressnat pass on $ext_if_world from 10.20.0.0/16 to any -> W.W.W.W/27 round-robin sticky-address pfctl -siStatus: Enabled for 0 days 20:56:04 Debug: UrgentState Table Total Rate current entries 23854 searches 5653235026 75012.4/s inserts 19840986 263.3/s removals 19817734 263.0/sCounters match 3889321848 51607.2/s bad-offset 0 0.0/s fragment 169 0.0/s short 127 0.0/s normalize 0 0.0/s memory 0 0.0/s bad-timestamp 0 0.0/s congestion 0 0.0/s ip-option 35 0.0/s proto-cksum 0 0.0/s state-mismatch 5200 0.1/s state-insert 4 0.0/s state-limit 0 0.0/s src-limit 0 0.0/s synproxy 0 0.0/s сеть W.W.W.W/27 прицеплена на ЛУПБЕКЕ алиасами # Loopbackifconfig_lo0="inet 127.0.0.1 netmask 255.0.0.0"ifconfig_lo0_alias0="inet w.w.w.32 netmask 255.255.255.255" .............................................................................................. ifconfig_lo0_alias31="inet w.w.w..63 netmask 255.255.255.255" в старом конфиге нат был в /28 sysctl.conf net.inet.ip.fastforwarding=1 #net.inet.ip.dummynet.io_fast=1 #net.inet.ip.fw.one_pass=1 #net.inet.ip.dummynet.pipe_slot_limit=1000 # ########## KERNEL ########kern.ipc.nmbclusters=400000 #kern.ipc.maxsockets=204800 #kern.maxfilesperproc=200000kern.ipc.nmbjumbop=65536 #kern.ipc.shm_use_phys=1 #kern.ipc.somaxconn=4096net.inet.tcp.nolocaltimewait=1 #kern.ipc.maxsockbuf=83886080### TCP/IP ###net.inet.tcp.sendspace=131072net.inet.tcp.msl=7500net.inet.ip.intr_queue_maxlen=10240 # 256net.inet.tcp.blackhole=2net.inet.udp.blackhole=1net.inet.icmp.drop_redirect=1net.inet.icmp.log_redirect=1 # 1net.inet.ip.redirect=0 # 1net.inet.icmp.maskrepl=0net.inet.icmp.icmplim=100net.inet.tcp.drop_synfin=1kern.sync_on_panic=1 # 0 #net.inet.tcp.hostcache.expire=1200 # 3600net.inet.tcp.keepinit=5000 # 75000 # boot/loader.conf kern.maxdsiz="2G"kern.dfldsiz="2G"geom_mirror_load="yes" netstat -m34957/3353/38310 mbufs in use (current/cache/total)34921/1651/36572/746462 mbuf clusters in use (current/cache/total/max)34921/1650 mbuf+clusters out of packet secondary zone in use (current/cache)20/83/103/373230 4k (page size) jumbo clusters in use (current/cache/total/max)0/0/0/110586 9k jumbo clusters in use (current/cache/total/max)0/0/0/62205 16k jumbo clusters in use (current/cache/total/max)78685K/4472K/83157K bytes allocated to network (current/cache/total)350/21402/321 requests for mbufs denied (mbufs/clusters/mbuf+clusters)0/0/0 requests for mbufs delayed (mbufs/clusters/mbuf+clusters)0/0/0 requests for jumbo clusters delayed (4k/9k/16k)35/0/0 requests for jumbo clusters denied (4k/9k/16k)0 requests for sfbufs denied0 requests for sfbufs delayed31 requests for I/O initiated by sendfile Ядро собрано с device pfdevice pflogdevice pfsyncoptions ALTQ top -aSCHIP трафика примерно 500мб/с last pid: 22396; load averages: 1.28, 1.20, 1.11 319 processes: 13 running, 249 sleeping, 57 waitingCPU 0: 0.8% user, 0.0% nice, 3.9% system, 9.8% interrupt, 85.5% idleCPU 1: 1.6% user, 0.0% nice, 0.4% system, 7.1% interrupt, 91.0% idleCPU 2: 1.2% user, 0.0% nice, 0.8% system, 9.4% interrupt, 88.6% idleCPU 3: 0.4% user, 0.0% nice, 0.0% system, 18.0% interrupt, 81.6% idleCPU 4: 1.2% user, 0.0% nice, 0.4% system, 8.2% interrupt, 90.2% idleCPU 5: 1.6% user, 0.0% nice, 0.8% system, 8.6% interrupt, 89.0% idleCPU 6: 0.8% user, 0.0% nice, 1.6% system, 10.2% interrupt, 87.5% idleCPU 7: 1.6% user, 0.0% nice, 1.2% system, 20.8% interrupt, 76.5% idleMem: 198M Active, 408M Inact, 817M Wired, 1307M Buf, 10G FreeSwap: PID USERNAME PRI NICE SIZE RES STATE C TIME CPU COMMAND 11 root 155 ki31 0K 128K CPU5 5 19.4H 97.17% [idle{idle: cpu5}] 11 root 155 ki31 0K 128K CPU0 0 19.0H 95.46% [idle{idle: cpu0}] 11 root 155 ki31 0K 128K CPU1 1 19.3H 94.38% [idle{idle: cpu1}] 11 root 155 ki31 0K 128K RUN 6 19.3H 93.46% [idle{idle: cpu6}] 11 root 155 ki31 0K 128K CPU2 2 19.3H 91.36% [idle{idle: cpu2}] 11 root 155 ki31 0K 128K RUN 7 19.3H 89.70% [idle{idle: cpu7}] 11 root 155 ki31 0K 128K RUN 4 19.2H 89.26% [idle{idle: cpu4}] 11 root 155 ki31 0K 128K CPU3 3 18.3H 78.56% [idle{idle: cpu3}] 12 root -92 - 0K 944K WAIT 7 42:27 13.28% [intr{irq271: igb0:que}] 12 root -92 - 0K 944K CPU3 3 73:02 12.70% [intr{irq301: em1:rx 0}] 12 root -92 - 0K 944K WAIT 2 43:35 7.76% [intr{irq266: igb0:que}] 12 root -92 - 0K 944K WAIT 6 43:49 6.98% [intr{irq270: igb0:que}] 12 root -92 - 0K 944K WAIT 4 38:35 6.79% [intr{irq268: igb0:que}] 12 root -92 - 0K 944K WAIT 0 43:56 6.69% [intr{irq264: igb0:que}] 12 root -92 - 0K 944K WAIT 3 42:18 6.15% [intr{irq267: igb0:que}] 12 root -92 - 0K 944K WAIT 5 41:12 5.57% [intr{irq269: igb0:que}] 12 root -92 - 0K 944K CPU1 1 44:26 5.27% [intr{irq265: igb0:que}] 12 root -92 - 0K 944K WAIT 3 10:03 2.49% [intr{irq276: igb1:que}] 12 root -92 - 0K 944K WAIT 3 6:58 1.76% [intr{irq285: igb2:que}] 12 root -92 - 0K 944K WAIT 2 9:34 1.56% [intr{irq275: igb1:que}]97896 root 20 0 48560K 10160K nanslp 2 17:53 1.07% perl nomake.pl nodhcp (perl5.16.3) 9192 mysql 21 0 211M 62852K CPU2 2 11:05 0.98% /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/v 12 root -92 - 0K 944K WAIT 6 9:38 0.88% [intr{irq279: igb1:que}] 12 root -92 - 0K 944K WAIT 7 6:21 0.78% [intr{irq289: igb2:que}] 12 root -92 - 0K 944K WAIT 5 8:21 0.68% [intr{irq278: igb1:que}] 12 root -92 - 0K 944K WAIT 1 7:12 0.68% [intr{irq283: igb2:que}] 12 root -92 - 0K 944K WAIT 6 6:40 0.68% [intr{irq288: igb2:que}] 12 root -92 - 0K 944K WAIT 2 6:28 0.68% [intr{irq284: igb2:que}]97898 root 20 -15 197M 156M nanslp 7 20:30 0.59% perl nodeny.pl (perl5.16.3) На мой взгляд проблема явно в нате.. на 9.1 работало без проблем... в 10 ветке PF уже паралелится по ядрам может связано с этим что? P.S. просьба сильно не пинать.. если нужна доп.инфа - покажу...
zulu_Radist Posted March 8, 2014 Posted March 8, 2014 а по логам что видно? я во фре не шарю, в линуксе можно было бы попробовать контрак таблицу увеличить
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now