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

# nc -vv -l -p 1234
listening on [any] 1234 ...
connect to [192.168.0.7] from ec2-52-202-215-126.compute-1.amazonaws.com [52.202.215.126] 37873
sent 0, rcvd 0

Но когда я пытаюсь подключиться к себе с помощью своего IP-адреса в Интернете, время ожидания истекает. Если я не слушаю порт, в соединении просто отказывают, как и должно быть. Если я слушаю, это игнорируется:

# nc -vv -l -p 1234 &
[1] 6869
# nc 95.252.xxx.xxx 1234

И это просто висит там. (Конечно, если я использую вместо IP-адреса локальной сети, он работает нормально).

Более того, я замечаю, что некоторые хосты также не могут подключиться к моему серверу: первоначальная цель этого соглашения состояла в том, чтобы быстро отправлять команды моему другу, который часто звонит мне и просит меня что-то исправить на его компьютере, и который не хочет используйте программное обеспечение, например, telnet или ssh. Очевидно, что его компьютер не может добраться до моего.

Мой компьютер не имеет брандмауэра. Маршрутизатор (насколько я знаю) не фильтрует исходящие соединения. (Netgear DG834G)

Есть какие-нибудь подсказки?

0