Re: Получение ip\порта изначального отправителя для входящего tcp пакета
От: vsb Казахстан  
Дата: 11.05.21 12:45
Оценка: +2
В интернете ничего никто не перезаписывает. Перезаписывать могут роутеры у конечных пользователей и изредка особо стремные провайдеры. Это и называется NAT.
Re: Получение ip\порта изначального отправителя для входящего tcp пакета
От: Reset  
Дата: 11.05.21 22:21
Оценка: +1
IP адреса и порты используются для маршрутизации. Если ты к IP будешь привязывать другую функциональность — у тебя возникнут сложности. Поэтому, если нужна авторизация — используй что-то другое, независимое. Излишняя связность — дополнительная сложность.

Короче, делай авторизацию независимой от IP и портов.
Получение ip\порта изначального отправителя для входящего tcp пакета
От: VitalySmolensk  
Дата: 11.05.21 09:58
Оценка:
Добрый день.
Есть задача для входящих tcp соединений разрешать только определенный ip адрес и порт, с которого идет соединение.
Клиент и сервер находятся не в локальной сети. Коннект идет через инет.
Пусть назову исходную машину клиента — А, целевую с сервером — C, абстрактный промежуточный роутер будет В (хотя их могут быть десятки).

Не могу понять такой момент. Когда на машине А формируется tcp сегмент, то в него прописывается source ip\port.
Потом в процессе прохождения роутеров и другого промежуточного оборудования эти пакеты переотправляются уже не машиной А, а роутером В. При отправке этих пакетов с роутера, исходные ip\порт, будут переписаны значениями ip и порта роутера?
Прочитал уже много статей по nat, pat, структуре ip пакетов и tcp сегментов, но этот вопрос так и не решил.
Re: Получение ip\порта изначального отправителя для входящег
От: lpd Черногория  
Дата: 11.05.21 10:06
Оценка:
Здравствуйте, VitalySmolensk, Вы писали:

VS>Не могу понять такой момент. Когда на машине А формируется tcp сегмент, то в него прописывается source ip\port.

VS>Потом в процессе прохождения роутеров и другого промежуточного оборудования эти пакеты переотправляются уже не машиной А, а роутером В. При отправке этих пакетов с роутера, исходные ip\порт, будут переписаны значениями ip и порта роутера?
VS>Прочитал уже много статей по nat, pat, структуре ip пакетов и tcp сегментов, но этот вопрос так и не решил.

Вообще, обычный роутер перезаписывает только mac-адреса.
Другой вопрос, что если отправляющая машина в локальной сети, и пакет идет через интернет, то вероятно на роутере провайдера настроен NAT. В этом случае исходный пакет содержит локальный ip-адрес, а роутер меняет его ip источника и порт на свои. NAT нужен для экономии ip-адресов, и позволяет создавать сети с локальными адресами(обычно 192.168.*.*, 10.0.*.*).
Но многие провайдеры могут (платно) подключить внешний статический ip, в этом случае у пакета останется ip-адрес клиента. Точнее, адрес который провайдер выдает роутеру в квартире(этот роутер может создать локальную подсеть, например wi-fi).
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 11.05.2021 10:08 lpd . Предыдущая версия .
Re[2]: Получение ip\порта изначального отправителя для входя
От: VitalySmolensk  
Дата: 11.05.21 10:13
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Здравствуйте, VitalySmolensk, Вы писали:


VS>>Не могу понять такой момент. Когда на машине А формируется tcp сегмент, то в него прописывается source ip\port.

VS>>Потом в процессе прохождения роутеров и другого промежуточного оборудования эти пакеты переотправляются уже не машиной А, а роутером В. При отправке этих пакетов с роутера, исходные ip\порт, будут переписаны значениями ip и порта роутера?
VS>>Прочитал уже много статей по nat, pat, структуре ip пакетов и tcp сегментов, но этот вопрос так и не решил.

lpd>Вообще, обычный роутер перезаписывает только mac-адреса.

lpd>Другой вопрос, что если отправляющая машина в локальной сети, и пакет идет через интернет, то вероятно на роутере провайдера настроен NAT. В этом случае исходный пакет содержит локальный ip-адрес, а роутер меняет его ip источника и порт на свои. NAT нужен для экономии ip-адресов, и позволяет создавать сети с локальными адресами(обычно 192.168.*.*, 10.0.*.*).
lpd>Но многие провайдеры могут (платно) подключить внешний статический ip, в этом случае у пакета останется ip-адрес клиента. Точнее, адрес который провайдер выдает роутеру в квартире(этот роутер может создать локальную подсеть, например wi-fi).

Спасибо. С Nat и трансляцией ip адресов из адреса локальной сети в публичный в общем понятно.
Больше интересует, что промежуточное оборудование делает с исходным портом. NAT это ведь именно трансляция только ip-адреса?
Я так понимаю, что роутер при отправке пакета всегда открывает уже свой случайный порт.
Отредактировано 11.05.2021 10:16 VitalySmolensk . Предыдущая версия .
Re[3]: Получение ip\порта изначального отправителя для входящег
От: lpd Черногория  
Дата: 11.05.21 10:21
Оценка:
Здравствуйте, VitalySmolensk, Вы писали:

VS>Спасибо. С Nat и трансляцией ip адресов из адреса локальной сети в публичный в общем понятно.

VS>Больше интересует, что промежуточное оборудование делает с исходным портом. NAT это ведь именно трансляция только ip-адреса?

Есть разные типы NAT. Обычно каждой паре ip+port клиента выделяется один порт сервера. И все пакеты с/на этот порт идут этому клиенту. Поэтому клиент может установить исходящее соединение с любым хостом. Но внеший хост может установить соединение с клиентом только узнав выделенные этому клиенту порт роутера, насколько я понимаю.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Re[3]: Получение ip\порта изначального отправителя для входя
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.05.21 10:39
Оценка:
Здравствуйте, VitalySmolensk, Вы писали:

VS>Спасибо. С Nat и трансляцией ip адресов из адреса локальной сети в публичный в общем понятно.

VS>Больше интересует, что промежуточное оборудование делает с исходным портом. NAT это ведь именно трансляция только ip-адреса?
VS>Я так понимаю, что роутер при отправке пакета всегда открывает уже свой случайный порт.

По-разному бывает. Но роутеру надо запомнить, во что он странслировал контретную комбинацию адреса и порта, чтобы знать, куда отправлять ответ. Т.е., в роутере с NAT'ом имеется таблица, и ему надо следить, чтобы она не переполнилась, вовремя удалять из нее ненужные записи и т.п.

И еще, сейчас роутеры, которые при трансляции используют случайно выбраный порт, попадаются редко, потому что это сильно мешает пробивать дырки для p2p.
Re[4]: Получение ip\порта изначального отправителя для входя
От: VitalySmolensk  
Дата: 11.05.21 10:59
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, VitalySmolensk, Вы писали:


VS>>Спасибо. С Nat и трансляцией ip адресов из адреса локальной сети в публичный в общем понятно.

VS>>Больше интересует, что промежуточное оборудование делает с исходным портом. NAT это ведь именно трансляция только ip-адреса?
VS>>Я так понимаю, что роутер при отправке пакета всегда открывает уже свой случайный порт.

Pzz>По-разному бывает. Но роутеру надо запомнить, во что он странслировал контретную комбинацию адреса и порта, чтобы знать, куда отправлять ответ. Т.е., в роутере с NAT'ом имеется таблица, и ему надо следить, чтобы она не переполнилась, вовремя удалять из нее ненужные записи и т.п.


Pzz>И еще, сейчас роутеры, которые при трансляции используют случайно выбраный порт, попадаются редко, потому что это сильно мешает пробивать дырки для p2p.


2 вопроса:
1. А если говорить не про роутеры, а про коммутаторы, то они работают на более низком уровне (канальном?) и в фреймах как был исходный ип\порт, такой и останется? Никакой таблицы в них нет и никакого понятия порт тоже. Так?
2. Роутеры всегда выполняют трансляцию ип\порт при передаче между разными сегментами сети. А если в одном сегменте, то работают как коммутатор. Так?
Re[2]: Получение ip\порта изначального отправителя для входящего tcp пакета
От: VitalySmolensk  
Дата: 11.05.21 13:17
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>В интернете ничего никто не перезаписывает. Перезаписывать могут роутеры у конечных пользователей и изредка особо стремные провайдеры. Это и называется NAT.

Но эта перезапись всегда будет иметь место там, где идет переход из публичного сегмента в частную сеть. Так?
Re[2]: Получение ip\порта изначального отправителя для входящего tcp пакета
От: Mr.Delphist  
Дата: 11.05.21 13:32
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>В интернете ничего никто не перезаписывает. Перезаписывать могут роутеры у конечных пользователей и изредка особо стремные провайдеры. Это и называется NAT.


В общем случае, число роутеров больше единицы. Скажем, у меня дома их минимум два: провайдерский и свой собственный.
Re[5]: Получение ip\порта изначального отправителя для входя
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.05.21 13:42
Оценка:
Здравствуйте, VitalySmolensk, Вы писали:

VS>2 вопроса:

VS>1. А если говорить не про роутеры, а про коммутаторы, то они работают на более низком уровне (канальном?) и в фреймах как был исходный ип\порт, такой и останется? Никакой таблицы в них нет и никакого понятия порт тоже. Так?

Коммутаторы работают с MAC-адресами (Ethernet-адресами). Им важно знать, в какую дырку какие MAC-адреса воткнуты, включая соединение коммутаторов каскадом (когда провод из коммутатора идет в другой коммутатор, а оттуда по устройствам), и они разными своими коммутаторными методами собирают эти сведения и хранят в своих таблицах. Если пришел пакет с адресом назначения, которого нет в таблице, приходится его во все дырки рассылать, что неэффективно.

VS>2. Роутеры всегда выполняют трансляцию ип\порт при передаче между разными сегментами сети. А если в одном сегменте, то работают как коммутатор. Так?


Нет на оба вопроса.

Роутеры не всегда выполняют трансляцию адресов, а только если их об этом попросили, NAT называется (Network Address Translation).

Роутер всегда знает из своей конфигурации, или из общения с другими роутерами, что с этой стороны — такой-то диапазон (или список диапазонов) адресов, а с этой — другой, и отправляет пакеты с учетом этого знания.

Две половинки одной локальной сети (т.е., сети с общим диапазоном адресов) никогда не связывают роутером. Поэтому нет, при использовании по прямому назначению, роутер не работает, как коммутатор.

Некоторые роутеры могут настраиваться, чтобы изображать из себя коммутатор, но это — специальный режим работы. Это имеет смысл для дешевых устройств, чтобы две коробочки не покупать, но в целом програмно-реализованный коммутатор работает медленнее и кушает больше своих ресурсов, чем коммутатор, рожденный таковым.
Re[3]: Получение ip\порта изначального отправителя для входящего tcp пакета
От: vsb Казахстан  
Дата: 11.05.21 14:04
Оценка:
Здравствуйте, VitalySmolensk, Вы писали:

vsb>>В интернете ничего никто не перезаписывает. Перезаписывать могут роутеры у конечных пользователей и изредка особо стремные провайдеры. Это и называется NAT.

VS>Но эта перезапись всегда будет иметь место там, где идет переход из публичного сегмента в частную сеть. Так?

В 99% это так. Технически можно и публичные в публичные транслировать, и наверняка кто-то так и делает, хотя я не знаю, зачем.
Re[4]: Получение ip\порта изначального отправителя для входящего tcp пакета
От: ononim  
Дата: 12.05.21 15:48
Оценка:
VS>>Но эта перезапись всегда будет иметь место там, где идет переход из публичного сегмента в частную сеть. Так?
vsb>В 99% это так. Технически можно и публичные в публичные транслировать, и наверняка кто-то так и делает, хотя я не знаю, зачем.
Ну это может потребоваться для transparent proxy например. Раньше провайдеры таким промышляли, ща врядли.
Как много веселых ребят, и все делают велосипед...
Re[3]: Получение ip\порта изначального отправителя для входящего tcp пакета
От: IID Россия  
Дата: 13.05.21 14:07
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>В общем случае, число роутеров больше единицы. Скажем, у меня дома их минимум два: провайдерский и свой собственный.


Зачем ?
У меня вот всего один, мой. Плюс коммутатор.
kalsarikännit
Re[4]: Получение ip\порта изначального отправителя для входящего tcp пакета
От: Vetal_ca Канада http://vetal.ca
Дата: 13.05.21 17:18
Оценка:
Здравствуйте, IID, Вы писали:

IID>Зачем ?

IID>У меня вот всего один, мой. Плюс коммутатор.

Люди не всегда хотят или могут переключать роутер-модем в режим bridge.
Re[4]: Получение ip\порта изначального отправителя для входящего tcp пакета
От: Mr.Delphist  
Дата: 14.05.21 07:59
Оценка:
Здравствуйте, IID, Вы писали:

IID>Зачем ?

IID>У меня вот всего один, мой. Плюс коммутатор.

Потому что провайдеру так удобно — железка с кастомной прошивкой дабы в случае чего удобно продать мне ряд ненужных услуг типа цифрового TV. А мне неудобна его железка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.