1

Привет всем, перцы!
Возник вопрос, сам не смог ответить. Вобще все работает, вопрос чисто теоретический - "правильно ли работает шлюз?".
Есть шлюз debian + iptables + nat masq , ничего особенного
Я со своей машинки совершаю исходящее подключение наружу, от меня пакет уходит с порта 12345, он приходит на локальный сетевой интерфейс шлюза с порта 12345, далее на основе маршрута по умолчанию пакет уходит в Интернет через внешний сетевой интерфейс, на внешнем сервере я смотрю, запрос на подключение приходит с порта 12345 с внешнего адреса шлюза, ну и в обратку все это до моей локальной машинки нормально идет, т.к. masquerade, отмечу еще раз, все работает (чтоб не было заблуждений).
А вот что будет если одновременно (теоретически с интервалом в 0.000с) две машины осуществляют попытку tcp-подключения с порта 12345, оба подключения одновременно приходят на сервер с разных адресов, но с одного и того же порта 12345, далее должно уйти два подключения со шлюза в Интернет, и оба уйдут с порта 12345? Вроде коллизия получается? Если честно я всегда думал что шлюз сам переназначает исходящий порт исходя из свободного пула (которым можно управлять, но не суть), а по итогу вижу, что пользователь сам может выбирать с какого порта должно уйти подключение с его машины.
Я че то упустил?

2

Для этого есть  connection tracking. Если коротко, то всякая ip сессия обладает уникальностью.

3

Ага! Модули ядра conntrack работают, conntrack -L по UDP и TCP показывают в списке соединения, тогда все правильно, выходит? Даже если 10 соединений ушло с одного и того же порта, когда они придут в обратку, то исходя из conntrack они будут доставлены куда нкужно?

4

Да.

5

Ok, thx братиш