LINUX.ORG.RU
ФорумAdmin

Максимальное количество заNAT'енных соединений — сколько?


0

0

Вопрос к админам крупных сетей. Если всю сеть NAT'ить на один адрес, то до какого размера у вас разрасталась? Другими словами, интересует число:

grep ESTABLISHED /proc/net/ip_conntrack |wc -l

Может ли оно превышать 65535?

Иначе говоря, могут ли NAT'иться два разных соединения из локалки на одни и те же внешние адрес-порт?

> Может ли оно превышать 65535? Должно, см. /proc/sys/net/nf_conntrack_max

> Иначе говоря, могут ли NAT'иться два разных соединения из локалки на одни и те же внешние адрес-порт? Да.

saper ★★★★★
()

>Может ли оно превышать 65535?

А сервак не ляжет?

fagot ★★★★★
()
Ответ на: комментарий от anonymous

>А как же оно тогда передаст инфу нужному пользователю

На каждое соединение открывается свой сокет. так что куда и откуда идёт трафик - не важно. Хоть все на один адрес и порт.

ovax ★★★
()
Ответ на: комментарий от ovax

> так что куда и откуда идёт трафик - не важно. Хоть все на один адрес и порт.
И как тогда сервер угадает кому этот трафик пересылать ?
Пример: user A (a.a.a.a) и user B (b.b.b.b) из локальной сети лезут наружу на сервер x.x.x.x:80. При проходе через NAT шлюз для них обоих делает SNAT на r.r.r.r:1234. Вопрос: кому из локальных user-ов шлюз должен будет переслать пакет, пришедший с x.x.x.x:80 на r.r.r.r:1234 ?

На сколько я знаю, каждое соединение должно идентифицироваться уникальной парой "src_IP:src_port - dst_IP:dst_port" и полностью совпадать для разных соединений эти пары не могут.
Или я не прав ?

spirit ★★★★★
()
Ответ на: комментарий от spirit

> Вопрос: кому из локальных user-ов шлюз должен будет переслать пакет, пришедший с x.x.x.x:80 на r.r.r.r:1234 ?

Такая ситуация недопустима и будут грабли. Зато, на первый взгляд, можно делать SNAT на одинаковый порт, если юзера лезут на разные порты. Мы вчера об этом думали с коллегой :) Потенциально в этой схеме есть грабли, хотя на первый взгляд всё работает.

Решил спросить тех, кто сталкивался на практике :)

snp
() автор топика
Ответ на: комментарий от ovax

> На каждое соединение открывается свой сокет.

Кстати, я очень сомневаюсь, что в коде NAT как-то фигурирует понятие "socket".

snp
() автор топика
Ответ на: комментарий от saper

> Должно, см. /proc/sys/net/nf_conntrack_max

Скорее /proc/sys/net/ipv4/ip_conntrack_max -- видел. Другое дело, что SNAT может делаться не на один адрес, а на пул адресов, вот тут и нужна будет большая таблица.

> Да.

А граблей точно не будет? Я тоже вначале думал, что может. А потом стал сомневаться.

snp
() автор топика
Ответ на: комментарий от spirit

> И как тогда сервер угадает кому этот трафик пересылать ? посмотри внимательно ip_conntrack, когда nat работает там есть записи tcp 6 107 TIME_WAIT src=a.a.a.a dst=внешний_хост sport=49383 dport=80 packets=6 bytes=504 src=внешний_хост dst=r.r.r.r sport=80 dport=49383 packets=4 bytes=427 [ASSURED] use=1 где a.a.a.a - машинка, которая снатиться r.r.r.r - внешний адрес шлюза а привязка идет по sport, с которого шлюз пихает запрос на внешний_хост

chocholl ★★
()
Ответ на: комментарий от chocholl

> И как тогда сервер угадает кому этот трафик пересылать ?

сори за формат

посмотри внимательно ip_conntrack, когда nat работает
там есть записи

tcp 6 107 TIME_WAIT src=a.a.a.a dst=внешний_хост sport=49383 dport=80 packets=6 bytes=504 src=внешний_хост dst=r.r.r.r sport=80 dport=49383 packets=4 bytes=427 [ASSURED] use=1

где
a.a.a.a - машинка, которая снатиться
r.r.r.r - внешний адрес шлюза

а привязка идет по sport, с которого шлюз пихает запрос на внешний_хост

chocholl ★★
()
Ответ на: комментарий от chocholl

> а привязка идет по sport, с которого шлюз пихает запрос на внешний_хост

Во! Точно. Вопрос закрыт :)

snp
() автор топика
Ответ на: комментарий от snp

> А граблей точно не будет? Я тоже вначале думал, что может. А потом стал сомневаться.

Идентифицировать принадлежность пакета к соединению - задача conntrack AFAIK.

saper ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.