pchol Опубликовано 30 октября, 2009 (изменено) · Жалоба Использовал до недавнего времени iptables и ядро 2.2.24 когда был same. Обновил ядро, iptables (почитав перед эти про исчезновение и реинкарнацию same'а). Делаю iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source ххх.ххх.226.128-ххх.ххх.226.250Получаю криво работающую аську, неработающее "контактное" видео, через раз работает SSL. Делаю iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source ххх.ххх.226.128-ххх.ххх.226.250 --persistentЯ так понимаю в таком варианте выдаются сопоставлений 1:1 и когда заканчиваются белые адреса из диапазона остальные клиенты идут лесом ? Подскажите пожалуйста что сделать с NAT'ом чтобы он корректно работал ? Linux sh 2.6.31.4 #1 SMP x86_64 GNU/Linux iptables v1.4.5 Изменено 30 октября, 2009 пользователем pchol Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
voron Опубликовано 30 октября, 2009 · Жалоба Я так понимаю в таком варианте выдаются сопоставлений 1:1 и когда заканчиваются белые адреса из диапазона остальные клиенты идут лесом ? --persistent Gives a client the same source-/destination-address for each connection. Не сказано, что адрес выделенный. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 31 октября, 2009 · Жалоба Мы портировали SAME со старых версий ядер, это не сложно (пока). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pchol Опубликовано 31 октября, 2009 · Жалоба Всё казалось гораздо лучше. --persistent работает как старый same. Сутки прошли, жалоб нет. Всем спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a_andry Опубликовано 17 ноября, 2009 · Жалоба Есть внешние адреса на которые натятся абоненты. Переодически кого-то где-то банят и абоненты с одного адреса не могут достучатся до разных сайтов. Появилась идея - по -j SNAT ... --persistent при каждом риконекте по pppoe/pptp натить абонента на новый адрес, а именно при accounting-stop на радиусе чистить условия выбора исходящего нат адреса по абоненту. Почему-то подумалось что persistent основывает выбор адреса на который натить из коннтрака. Собрал тестовую схему, пробую достучаться до инета с src адреса х.х.х.х, проверяю исходящий адрес - y.y.y.y. Чищу - conntrack -D -s x.x.x.x conntrack -D -d x.x.x.x захожу тестовым компом и снова тот же отначеный y.y.y.y. Может кто в курсе из каких условий выбирается nat ip если использовать --persistent? Не пнете в нужную сторону? пс. можно насоздавать кучу ipset-ов и каждый натить на определенный ip. Но некрасиво (( А так сразу динамические адреса и всего 1 правило в iptables ппс. для того, что-бы сразу по впн выдавать чесные адреса из пула не хватает адресов Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
poofeg Опубликовано 23 сентября, 2012 · Жалоба Может кто в курсе из каких условий выбирается nat ip если использовать --persistent? Не пнете в нужную сторону? По трем IP-адресам. Внутренний IP-адрес источника, внешний начальный, внешний конечный. Для себя накидал программку, на вход 3 ip на выходе внешний ip. Потом вокруг нее написал парсер правил iptables на питоне и теперь счастлив. #include <stdio.h> #include <stdint.h> typedef uint8_t u8; typedef uint32_t u32; typedef uint64_t u64; #define JHASH_INITVAL 0xdeadbeef u32 parseIp(char *ipStr) { int i1, i2, i3, i4; sscanf(ipStr, "%d.%d.%d.%d", &i1, &i2, &i3, &i4); return (i1 << 24) + (i2 << 16) + (i3 << 8) + i4; } u32 rparseIp(char *ipStr) { int i1, i2, i3, i4; sscanf(ipStr, "%d.%d.%d.%d", &i1, &i2, &i3, &i4); return (i4 << 24) + (i3 << 16) + (i2 << 8) + i1; } static inline u32 rol32(u32 word, unsigned int shift) { return (word << shift) | (word >> (32 - shift)); } static inline u32 jhash_2words(u32 a, u32 b, u32 c) { a += JHASH_INITVAL; b += JHASH_INITVAL; c ^= b; c -= rol32(b, 14); a ^= c; a -= rol32(c, 11); b ^= a; b -= rol32(a, 25); c ^= b; c -= rol32(b, 16); a ^= c; a -= rol32(c, 4); b ^= a; b -= rol32(a, 14); c ^= b; c -= rol32(b, 24); return c; } int main(int argc, char *argv[]) { if (argc < 4) { printf("fail"); } u32 minip, maxip, srcip, j, result; minip = parseIp(argv[1]); maxip = parseIp(argv[2]); srcip = rparseIp(argv[3]); j = jhash_2words(srcip, 0, 0); j = ((u64)j * (maxip - minip + 1)) >> 32; result = minip + j; printf("%d.%d.%d.%d\n", (u8)(result >> 24), (u8)(result >> 16), (u8)(result >> 8), (u8)result); return 0; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sanyasi Опубликовано 20 января, 2016 · Жалоба А под новые ядра писал кто-нибудь? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 20 января, 2016 · Жалоба дык русским по белому же вам в соседнем топике ответили: потом запилили туда рандом и теперь только сливать трансляции Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sanyasi Опубликовано 20 января, 2016 · Жалоба теперь только сливать трансляции Не рандом точно! Внешний адрес трансляции не меняется! Просто формулу поменяли похоже. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 20 января, 2016 · Жалоба ну посмотреть сырцы ядра тогда... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stalker86 Опубликовано 27 февраля, 2017 · Жалоба Спецы по ядрам - не смотрели как сейчас ядро выбирает IP под NAT? Ну и собственно интересно как мониторить, что IP досыпать надо.. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nuclearcat Опубликовано 27 февраля, 2017 · Жалоба Я смотрел, даже патчил, по хешу насколько я помню. Оно достаточно долго может прожить на небольшом количестве, главное чтоб не было много коннектов к одинаковому dst ip/port с небольшого количества адресов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 28 февраля, 2017 · Жалоба Спецы по ядрам - не смотрели как сейчас ядро выбирает IP под NAT? Ну и собственно интересно как мониторить, что IP досыпать надо.. Не так давно была темка здесь, там выяснили что до ядра 3.3 (вроде бы) был просто хеш и можно было точно определить какой ip будет, потом добавили рандом Поищите, там я выкладывал исходник на C для старых ядер чтобы вычислять какой public ip будет Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stalker86 Опубликовано 28 февраля, 2017 · Жалоба Ну вычислить кто во что натился можно с помощью ipt_NETFLOW Данный модуль умеет NAT Events и работает шустрее, чем conntrack(-tools) через нетлинк. Меня именно как мониторить использование пулла скорее интерисует. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stalker86 Опубликовано 11 марта, 2017 · Жалоба так как народ обычно мониторит использование пулла? Ну и ещё вопрос.. кто сколько PPS натил на линукс серверах в плане PPS/полосы? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...