stelsik Опубликовано 8 июля, 2010 (изменено) · Жалоба Наверное тема ближе гуру linux, создали мы значит сеть ipoe и встал вопрос о NAT, тут или варварское расходование IP пространства или тот самый NAT В принципе все ничего работает да и ладно, но есть одно, очень большая часть активной молодой аудитории просят белый IP, решаем пока VPN PPtP. Есть вариант с общим большим VLAN, но тоже как-то городить костыли. Ну вот собственно вопрос, реально ли на Linux поднять схему NAT, где трансляция будет происходить просто сопоставлением адресов. Ну тоесть 1 IP серый сопоставлять с 1 IP белым. Есть еще вариант на будущее, наравне с серыми адресами выдавать еще и ipv6 адреса, но... я думаю, дело это долгое будет P.S. Кстати никто не в курсе, почему в GOS поддержки ipv6 нет Изменено 8 июля, 2010 пользователем stelsik Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
2c2i Опубликовано 8 июля, 2010 · Жалоба NETMAP target Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stelsik Опубликовано 8 июля, 2010 · Жалоба и? проще попробую изложить мысли, надо /8 сократить до /20 причем с сопоставлением 1 в 1 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan Rostovikov Опубликовано 8 июля, 2010 · Жалоба Ищите ядро и iptables где есть "Full Cone NAT". Говорят оно есть в природе. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 8 июля, 2010 · Жалоба Ищите ядро и iptables где есть "Full Cone NAT".Говорят оно есть в природе. Но никто не видел ) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 8 июля, 2010 · Жалоба Ivan Rostovikov, зачем что-то искать? Если речь идет про 1-to-1 NAT то все решается созданием двух правил - DNAT в PREROUTING-е (трафик к клиенту) и SNAT в POSTROUTING-е (трафик от клиента). Ядро Linux это не IOS, где нужно подбирать нужную версию. :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan Rostovikov Опубликовано 8 июля, 2010 · Жалоба >созданием двух правил Мне это не помогло. iptables все равно распределял адреса - "как бог на душу положит". И не факт, что найденная Вами правильная версия iptables соберется на имеющемся ядре. По этому и ядро приходится менять. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 8 июля, 2010 · Жалоба Ivan Rostovikov, зачем что-то искать? Если речь идет про 1-to-1 NAT то все решается созданием двух правил - DNAT в PREROUTING-е (трафик к клиенту) и SNAT в POSTROUTING-е (трафик от клиента). А с NOTRACK это будет работать? Раз уж iproute nat устаревший. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 8 июля, 2010 · Жалоба И не факт, что найденная Вами правильная версия iptables соберется на имеющемся ядре. А зачем что-то искать и собирать? Могу поспорить на что угодно, что на любом дистрибутиве это заработает сразу. Нужно создать всего два правила. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
cmhungry Опубликовано 8 июля, 2010 · Жалоба Ищите ядро и iptables где есть "Full Cone NAT".Говорят оно есть в природе. Но никто не видел ) binats = { '10.40.0.0/16' : '10.206.0.0/16', '10.41.0.0/16' : '10.126.0.0/16', '10.42.0.0/16' : '10.127.0.0/16', '10.43.0.0/17' : '10.128.0.0/17', '10.43.170.0/24' : '10.128.170.0/24', '10.44.0.0/17' : '10.129.0.0/17', '10.44.172.0/24' : '10.129.172.0/24', '10.45.0.0/16' : '10.130.0.0/16', '10.46.0.0/16' : '10.48.0.0/16', '10.47.0.0/17' : '10.128.128.0/17', '10.82.0.0/16' : '10.202.0.0/16', '10.83.0.0/16' : '10.203.0.0/16', '10.84.0.0/16' : '10.204.0.0/16', '10.85.0.0/16' : '10.229.0.0/16', '10.86.0.0/17' : '10.248.128.0/17', '10.87.0.0/17' : '10.129.128.0/17', } header = ( 'tc qdisc add dev eth1 ingress', 'tc qdisc add dev eth1 root handle 1: prio' ) priority = 10 flowid = 1 def make_rule (internal, external, pr, fl): print "tc filter add dev eth1 parent 1: protocol ip prio %d \\" % pr print " u32 match ip src %s flowid 1:%d action nat \\" % (internal, fl) print " egress %s %s" % (internal, external[:-3]) print "tc filter add dev eth1 parent ffff: protocol ip prio %d \\" % (pr + 1) print " u32 match ip dst %s flowid 1:%d action nat \\" % (external, (fl + 1)) print " ingress %s %s\n" % (external, internal[:-3]) for c in header: print c print for i in binats.keys(): our_net = i binat = binats[i] make_rule (our_net, binat, priority, flowid) priority = priority + 2 flowid = flowid + 2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SokolovS Опубликовано 8 июля, 2010 · Жалоба И сколько таких правил надо для 1000 абонентов например? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 8 июля, 2010 · Жалоба SokolovS, очевидно, что 2000 правил. Вопросы масштабируемости я сейчас не рассматриваю. Но если нужно действительно много правил, то отсылаю сюда: http://nfws.inl.fr/nfws_userday/Jesper-Bro...es-rulesets.pdf cmhungry, как в такой схеме работает активный FTP? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Умник Опубликовано 8 июля, 2010 · Жалоба А с NOTRACK это будет работать? Раз уж iproute nat устаревший. Не будет конечно. NAT средствами отличными от Netfilter-а я бы делать не стал. Хотя бы причине отсутствия в них helper-ов для "хитрых" протоколов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stelsik Опубликовано 9 июля, 2010 (изменено) · Жалоба Сейчас вот на одном таком NAT+шейп, 3к клиентов. В тепличных условиях, и ручками можно прописать, что и куда натить, весь вопрос в нормальном решении Ищите ядро и iptables где есть "Full Cone NAT".Говорят оно есть в природе. А разве -j SAME не оно самое? просто как надо это не работет Изменено 9 июля, 2010 пользователем stelsik Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a_andry Опубликовано 9 июля, 2010 (изменено) · Жалоба А разве -j SAME не оно самое? same (-j SNAT --persistent в новых ядрах) не то. Вам же нужно выдавать один и тот же адрес, а same будет выдавать как попало после перегрузки компа. Тоже не понятно есть или нет аналог same для dnat. Даже если оно и есть, то непонятно как сделать соответствие 1 и того же адреса в snat и dnat. Имхо, нужно делать как говорил Умник, по 2 правила на пользователя. Что-бы нормально работало под нагрузкой можно скриптами расписать все по разным цепочкам. Например, через ipset в -t nat POSTROUTING отправлять первые 100 клиентов, которым нужен чесный адрес, в отдельную цепочку 1ClientSnat, в этой цепочке уже 100 правил ната для первых 100 клиентов, далее 2ClientSnat для следующих 100 и т.д. То же самое для dnat-а в -t nat PREROUTING - 1ClientDnat, 2ClientDnat ... В итоге получим для каждого пакета добавится только по +50-70 проверок (в среднем). Должно нормально работать под нагрузкой. Изменено 9 июля, 2010 пользователем a_andry Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 9 июля, 2010 · Жалоба А разве -j SAME не оно самое? same (-j SNAT --persistent в новых ядрах) не то. Вам же нужно выдавать один и тот же адрес, а same будет выдавать как попало после перегрузки компа. Тоже не понятно есть или нет аналог same для dnat. Даже если оно и есть, то непонятно как сделать соответствие 1 и того же адреса в snat и dnat. Имхо, нужно делать как говорил Умник, по 2 правила на пользователя. Что-бы нормально работало под нагрузкой можно скриптами расписать все по разным цепочкам. Например, через ipset в -t nat POSTROUTING отправлять первые 100 клиентов, которым нужен чесный адрес, в отдельную цепочку 1ClientSnat, в этой цепочке уже 100 правил ната для первых 100 клиентов, далее 2ClientSnat для следующих 100 и т.д. То же самое для dnat-а в -t nat PREROUTING - 1ClientDnat, 2ClientDnat ... В итоге получим для каждого пакета добавится только по +50-70 проверок (в среднем). Должно нормально работать под нагрузкой. Умник говорил о гораздо меньшем количестве. Посмотрите, как lISG генерирует. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
cmhungry Опубликовано 9 июля, 2010 · Жалоба cmhungry, как в такой схеме работает активный FTP? не знаю, не пробовал =) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 11 июля, 2010 · Жалоба Используем обе схемы: отдельный VLAN для публичников и Static NAT 1:1 на шлюзе. Обе имеют свои достоинства и недостатки. Единственное препятствие, с которым пришлось столкнуться, когда NAT работал на FreeBSD+pf: BiNAT затыкался, если исходящий NAT делался на одном сервере, а входящий на другом(bgp). Не спас даже pfSync. cmhungry, как в такой схеме работает активный FTP?не знаю, не пробовал =) Умные люди пишут, что хреново работает - http://dslnet.ru/showthread.php?t=71150 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 11 июля, 2010 · Жалоба cmhungry, как в такой схеме работает активный FTP?не знаю, не пробовал =) Умные люди пишут, что хреново работает - http://dslnet.ru/showthread.php?t=71150 Это?кстати, бимап весьма неудобен на практике, особенно при настройке FTP сервераМаловато сведений из такой фразы можно вынести... А вопрос нужный и важный. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stelsik Опубликовано 12 июля, 2010 · Жалоба Тоесть чтобы сделать BiNAT, надо попробовать заскриптовать ipset iphash Что-то не совсем мысли понял, как iphash натить, при этом добиваться совпадения 1 в 1 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kapa Опубликовано 12 июля, 2010 · Жалоба Единственное препятствие, с которым пришлось столкнуться, когда NAT работал на FreeBSD+pf:BiNAT затыкался, если исходящий NAT делался на одном сервере, а входящий на другом(bgp). Не спас даже pfSync. Затыкался под большой нагрузкой, или вообще не завелось? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 13 июля, 2010 · Жалоба Единственное препятствие, с которым пришлось столкнуться, когда NAT работал на FreeBSD+pf: BiNAT затыкался, если исходящий NAT делался на одном сервере, а входящий на другом(bgp).Не спас даже pfSync. Затыкался под большой нагрузкой, или вообще не завелось? Под любой.Клиенту назначалась скорость в мегабиты, а реально капали десятки килобит. Если сервер один - тогда всё нормально. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...