Относительно анализа типа nat

Я загрузил клиент оглушения с http://www.stunprotocol.org/ и пытался определить тип NAT. командой stunclient --mode full stun.stunprotocol.org --verbosity 9, и я получил ответ ниже.

config.fBehaviorTest = true
config.fFilteringTest = true
config.timeoutSeconds = 0
config.uMaxAttempts = 0
config.addrServer = 52.86.10.164:3478
socketconfig.addrLocal = 0.0.0.0:0
Sending message to 52.86.10.164:3478
Got response (68 bytes) from 52.86.10.164:3478 on inter
Other address is 52.201.75.212:3479

Sending message to 52.201.75.212:3478
Got response (68 bytes) from 52.201.75.212:3478 on inte
Sending message to 52.201.75.212:3479
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Sending message to 52.201.75.212:3479
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Sending message to 52.86.10.164:3478
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Sending message to 52.86.10.164:3478
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Sending message to 52.86.10.164:3478
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Sending message to 52.86.10.164:3478
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Continuing to wait for response...
Binding test: success
Local address: 10.64.60.58:58841
Mapped address: 125.19.34.60:24604
Behavior test: fail
Filtering test: success
Nat filtering: Address and Port Dependent Filtering

Я работаю на предприятии, и поэтому по соображениям безопасности тип NAT «Фильтрация, зависящая от адреса и порта» кажется жизнеспособным.

Но как общее явление, мне кажется, что для одноранговых соединений большую часть времени тип NAT будет «Фильтрация, зависящая от адреса и порта», и, следовательно, для любой медиа-коммуникации требуется сервер очереди.

Однако поиск webrtc в Google показывает, что 90% однорангового взаимодействия устанавливается через сам сервер оглушения (путем пробивания отверстий и т. Д.). Это означает, что тип NAT в этом случае полностью поддерживается для установления соединения.

Есть ли у экспертов какие-либо мнения об аналитике типа NAT, которые следует учитывать при одноранговой коммуникации?


person ashishgupta_mca    schedule 20.09.2016    source источник


Ответы (2)


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

Stunclient выполняет два разных набора тестов. Первый - это тесты «поведения сопоставления», которые являются наиболее важными для понимания того, как ваш NAT / брандмауэр повлияет на подключение P2P. Другой набор - это «тесты фильтрации», которые показывают, насколько «открыт» ваш NAT в отношении приема трафика от других комбинаций IP / портов.

Ваш тест поведения "провалился". Судя по выходным данным журнала, это, вероятно, означает следующее:

Тест 1. В данном случае выберите случайный порт 58841. Из этого локального порта выполните базовый тест привязки к stun.stunprotocol.org:3478. Здесь клиент получает ответ, в котором сервер указывает сопоставленный адрес (125.19.34.60:24604) и что альтернативный IP-адрес для отключения для последующих тестов поведения и фильтрации - 52.201.75.212.

Тест 2: Тот же локальный порт, 58851. Отправьте запрос привязки к альтернативному IP и основному порту (52.201.75.212:3478). В вашем случае похоже, что полученный ответ, вероятно, был другим IP-адресом или портом. И в этом случае потребовался «тест 3».

Тест 3: Тот же локальный порт, 58851. Отправьте запрос привязки к альтернативному IP-адресу и альтернативному порту (52.201.75.212:3479), чтобы он мог различать "зависимые от адреса" и "сопоставления, зависящие от адреса и порта". И это самое интересное - вы так и не получили ответа. Несмотря на возможность связи с обоими IP-адресами на порте 3478. Вот почему тест не удался.

Может быть одно из двух:

a) Ваш NAT / брандмауэр действительно открыт для порта 3478, но не для порта 3479. Сделайте это из командной строки, чтобы обнаружить

 stunclient 52.201.75.212 3479

И если это удастся получить сопоставленный адрес, немедленно сделайте это:

 stunclient 52.86.10.164 3478

Попробуйте другие комбинации этих двух IP-адресов и портов. В результате поведение может означать следующее

б) Ваш NAT / брандмауэр отказывается отображать порты, когда изменяются и удаленный IP-адрес, и порт. Это означает, что ваша сетевая среда имеет еще более строгие ограничения, чем NAT «Зависящее от адреса и порта сопоставление». Более известный как симметричный NAT.

Что касается тестов фильтрации, просто проигнорируйте этот результат. Тесты фильтрации пытаются определить, можете ли вы отправлять на один ip: порт, но получать с другого ip или порта. В 99% случаев NAT запрещают это. Таким образом, результат почти всегда приводит к «фильтрации, зависящей от адреса и порта». Результат проверки фильтрации не очень показывает, насколько успешно ваш NAT сможет подключиться к P2P.

И только потому, что ваша корпоративная сеть очень ограничена, это не означает, что вы не можете общаться с одноранговым узлом в другой сети. Если у него есть более хорошо настроенный NAT с независимым отображением конечных точек, то все еще есть шанс, что подключение P2P будет успешным.

Я не следил за тенденциями в области NAT в последние годы, но 80-90% соединений, успешных только с помощью STUN, звучат правильно. Остальным понадобится реле типа TURN.

person selbie    schedule 21.09.2016
comment
Спасибо, Селби. Но как stunserver 52.201.75.212 может отвечать со своего порта 3479 до тех пор, пока не прослушает его? Если один из типов сетевого NAT является симметричной сетью, а другой тип сетевого NAT - сопоставлением, независимым от конечных точек, то соединение P2P возможно. Это то, что вы подразумеваете под своей линией, это не означает, что вы не можете общаться с партнером в другой сети. Если у него будет более хорошо настроенный NAT с независимым отображением конечных точек, то все еще есть шанс, что подключение P2P будет успешным. - person ashishgupta_mca; 21.09.2016
comment
Сервер STUN всегда прослушивает оба порта (3478 и 3479) и оба IP-адреса. Поскольку симметричный NAT (например, ваша корпоративная сеть) не имеет предсказуемого сопоставления портов, то неясно, будет ли адрес / порт, полученный из STUN, работать с IP-адресом однорангового узла, пытающегося подключиться. NAT партнера должен быть не только Ind, но и фильтрация, возможно, должна быть зависимой от адреса или лучше. - person selbie; 21.09.2016

Я полагаю, вы хотите общаться между p2p во всех возможных сценариях (включая симметричный NAT). Мое предложение: попробуйте использовать webRTC и использовать серверы оглушения и поворота в списке ледовых серверов. это даст вам ряд кандидатов на ICE, а webRTC позаботится о подключении к лучшим кандидатам. это должно избавить вас от проблем, связанных с типом NAT.

person Mahesh Jena    schedule 26.12.2016