Andy52280 Опубликовано 22 октября, 2010 (изменено) · Жалоба Появилась необходимость перевести NAT на платформу Linux (в основном из-за неадеквата в работе bonding(lagg/lacp) и ECMP(flowtable+radix_mpath) под нагрузкой во FreeBSD). Во FreeBSD сейчас создаются две таблицы в первой-белые IP, во второй - серые подсетки. Причем на один белый IP может натиться несколько серых сеток. Привязка белых IP - статическая. Входящий/исходящий интерфейсы не принципиальны - отрабатывает на все направления. Количество серых сеток порядка 15К. Во FreeBSD схема выходит достаточно лаконичной: ipfw table 14 add REAL_IP1 8868 ipfw table 15 add RFC1918_NET1 8868 ipfw table 14 add REAL_IP1 8868 ipfw table 15 add RFC1918_NET2 8868 ... ipfw table 14 add REAL_IPn 8xxx ipfw table 15 add RFC1918_NETm 8xxx ipfw nat 8868 config ip REAL_IP1 ... ipfw nat 8xxx config ip REAL_IPn ipfw add yyyy set 10 nat tablearg all from any to table(14) // IN NAT ... ipfw add zzzz set 10 nat tablearg all from table(15) to any // OUT NAT Подскажите, пожалуйста, каким образом ПРАВИЛЬНЕЕ реализовать подобную схему в Linux? Не хотелось бы городить под каждую пару REAL_IP/RFC1918_NET несколько правил в iptables да и минимизация нагрузки на CPU (2x Intel X5650) не помешает. Кроме того желательно иметь возможность на лету добавлять некий новый RFC1918_NETx на уже использующийся в текущих трансляциях NAT REAL_IP скриптом. На данный момент разбираюсь с Ubuntu-10.10 Server x86_64 (2.6.35-22-server) Изменено 22 октября, 2010 пользователем Andy52280 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 22 октября, 2010 · Жалоба А с чем связано именно такое разделение серых адресов по реальным? Может можно все серые отнатить на пул реальных адресов, а кому можно/нельзя натится определить фильтрами? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andy52280 Опубликовано 22 октября, 2010 · Жалоба А с чем связано именно такое разделение серых адресов по реальным? Может можно все серые отнатить на пул реальных адресов, а кому можно/нельзя натится определить фильтрами?Во-первых, не смотря на наличие СОРМ, периодически напрягают и ФСБ и МВД по конкретным реальникам. При статическом соответствии, скажем 8 клиентов (8 сеток /29) на 1 белый IP - сузить круг подозреваемых для углубленного анализа статистики достаточно просто. Учет статистики у нас ведется по серым адресам.Во-вторых, исторически так сложилось, что такая схема была удобнее на FreeBSD/ipfw и клиенты к ней уже привыкли. Многие используют реальники в фильтрах для системы клиент-банк (есть еще такие кривые банки, которые фильтруют клиентов по IP ). Впрочем, если схема нетривиально ложится на реализацию NAT в Linux - можно рассмотреть какой-нибудь альтернативный вариант. Но в идеале хотелось бы ее оставить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 22 октября, 2010 · Жалоба Примерно вот так: #Создаем хэш IPSET для внешнего IP xxx.xxx.88.68 ipset -N NET88_68 nethash ipset -A NET88_68 192.168.0.0/24 ipset -A NET88_68 192.168.0.1/24 ipset -A NET88_68 192.168.0.2/24 #натим iptables -m set -t nat -I POSTROUTING --set NET88_68 src -j SNAT --to-source xxx.xxx.88.68 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andy52280 Опубликовано 22 октября, 2010 · Жалоба iptables -m set -t nat -I POSTROUTING --set NET88_68 src -j SNAT --to-source xxx.xxx.88.68 Прошу прощения, если прошу разжевать азы, но если 1) нужно будет, скажем входящие пакеты на порт 80 реального IP xxx.xxx.88.68 пробросить на конкретный серый IP (192.168.0.10) из NET88_68, а входящие пакеты на порт 10080 - на IP 92.168.1.10 из NET88_68, то Какие правила нужно будет добавить в iptables для этой цели и не сломается ли при этом NAT для остальных IP из NET88_68? 2) нужно будет пробросить все пакеты, приходящие на IP xxx.xxx.88.68 и не имеющие соответствий в таблице conntrack, на конкретный серый IP (192.168.0.10) из NET88_68 Какие правила нужно будет добавить в iptables для этой цели и не сломается ли при этом NAT для остальных IP из NET88_68? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
fedusia Опубликовано 22 октября, 2010 · Жалоба Возможно вам необходимо почитать статью про iptables. Советую прочитать iptables tutorial. Может вот хватит данной ссылки http://www.opennet.ru/docs/RUS/iptables/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 22 октября, 2010 (изменено) · Жалоба 1) нужно будет, скажем входящие пакеты на порт 80 реального IP xxx.xxx.88.68 пробросить на конкретный серый IP (192.168.0.10) из NET88_68, а входящие пакеты на порт 10080 - на IP 92.168.1.10 из NET88_68, тоКакие правила нужно будет добавить в iptables для этой цели iptables -t nat -N dnat1iptables -t nat -A dnat1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.10 iptables -t nat -A dnat1 -p tcp --dport 10080 -j DNAT --to-destination 192.168.1.10 iptables -t nat -A PREROUTING -i $INET_IFACE -d xxx.xxx.88.68 -j dnat1 и не сломается ли при этом NAT для остальных IP из NET88_68?не сломается. Изменено 22 октября, 2010 пользователем Ilya Evseev Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andy52280 Опубликовано 22 октября, 2010 · Жалоба Спасибо. Картина проясняется. А относительно 2) как реализуется проброс адреса? и могул ли при этом полноценно работать оставшиеся IP из NET88_68? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 22 октября, 2010 · Жалоба А относительно 2) как реализуется проброс адреса?Сильно экзотический вариант. Возможно,iptables -t nat -A PREROUTING -m conntrack --ctstate NEW -j DNAT --to-destination ... и могул ли при этом полноценно работать оставшиеся IP из NET88_68?Если в правиле указан конкретный IP, пакеты для/от остальных адресов в это правило не попадут. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...