2015-07-09 3 views
3

Я много читал о различных методах обхода NAT, но я все еще немного не понимаю, как это работает.Как подключиться к открытому порту tcp на клиентской машине с неизвестного сервера?

Если я открою порт TCP на клиентской машине и отправлю запрос на какой-то произвольный несуществующий сервер (который не будет отвечать), у моего клиента NAT теперь будет открытый канал, правильно? Могу ли я использовать другой (неизвестный) компьютер с другим IP-адресом для доступа к этому клиентскому порту, если я знаю как публичный, так и закрытый IP-адрес клиента, а также номер порта?

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

Заранее благодарен!

ответ

4

Чтобы ответить на ваш вопрос, вам нужно немного узнать о сопоставлении и фильтрации NAT. Прежде всего позвольте мне указать информацию о поведении отображения NAT,

Если вы отправляете пакет со своего внутреннего IP-порта через IP-порт NAT на любой адрес, ваш NAT создает MAP между вашим внутренним и IP-портом. Другой разумный никто извне вашего NAT не может отправить вам что-либо.

Есть 4 типа NAT,

Полный конус NAT: Если вы ранее послали пакет из внутренней IP: порт через IP вашего Ната: порт, то любой из стороны хост может отправить пакет на ваш внутренний IP: порт, отправив пакет на IP-порт NAT:.

Адрес ограничен конус NAT: Внешний хост может посылать пакеты на ваш внутренний IP: порт, посылая пакеты IP вашего Ната: порт, только если с вашей внутренней IP: порт, по крайней мере пакет был ранее отправлен что IP-адрес внешнего хоста через IP-порт NAT. Здесь этот порт внешнего хоста не имеет значения. Только IP-адрес должен быть таким же.

Порт ограниченным конусом NAT: То же, что и адрес, ограниченный только на этот раз. По крайней мере, пакет, ранее отправленный с вашего внутреннего IP-порта: порт на IP-адрес внешнего хоста: через IP-порт вашего NAT: это позволит стороннему хосту отправлять вам пакеты из своего IP-порта через ваш IP-порт вашего IP-порта.

Симметричный NAT: Его поведение при сопоставлении немного отличается от других. Для предыдущих 3 типов NAT, из вашего внутреннего IP-порта, независимо от того, куда вы отправляете свои данные, он будет проходить через один и тот же IP-порт NAT. Но для симметричного NAT для разных целей ваши данные будут проходить через один и тот же IP-адрес, но другой порт. И, подобно ограниченному конусу портов, входящий пакет будет разрешен через NAT, если данные, ранее отправленные на IP-порт внешнего хоста:

Итак, для вашего сценария только в том случае, если ваш NAT является полным конусом NAT, чем какой-либо неизвестный, который знает ваш NAT, открытый публичный IP-порт, с которого вы отправили пакет на неизвестный сервер, может отправлять вам данные через транспорт UDP. Для другого NAT он будет заблокирован, так как вы не отправили данные на этот внешний хост. Но для вашего TCP-соединения никто не может отправлять вам какие-либо данные, даже если они знают ваш частный и общедоступный IP-порт: они находятся за разными NAT. Прочтите данные формы answer.

Подробнее о wiki.

+0

Спасибо Tahill! Это именно то, чего мне не хватало :) – Ricky