У меня есть сервер SSH за маршрутизатором NAT. Машины в той же (NAT) сети, что и SSH-сервер, могут подключаться к SSH-серверу только через IP-адрес локальной сети, а не WAN-IP. Зачем?
Моя сеть выглядит так:
(the Internet, via Comcast)
|
| (cable line)
comcast modem. ← External IP of a.b.c.d,
| internal IP of 10.1.10.1 on 10.1.10.0/24
|
|
box running sshd (10.1.10.201)
Я запускаю службу SSH за маршрутизатором Comcast, выполняющим NAT. Используя IP-адрес, полученный выше, я могу запустить ssh me@«that IP»
из любого места в Интернете, и я получу услугу SSH. Если я выполню ту же команду из сети 10.1.10.0/24 прямо внутри маршрутизатора, время соединения истечет.
Маршрутизатор Comcast настроен для переадресации портов на машину SSH через стандартный порт.
- Маршрутизатор comcast отвечает на эхо-запросы как на внутренние, так и на внешние IP-адреса.
- Коробка с запущенным
sshd
отвечает на пинги
Устройство представляет собой кусок нежелательной SMC Networks SMCD3G.
Выполнение wireshark на машине sshd
при попытке ssh 10.1.10.201
дает нормальный вид трафика. Попытка ssh a.b.c.d
дает следующее:
Source Destination Info
10.1.10.11 10.1.10.201 39946 > ssh [SYN] Seq=0 Win=14600 Len=0 MSS=1460
10.1.10.201 10.1.10.11 ssh > 39946 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0
10.1.10.11 10.1.10.201 39946 > ssh [RST] Seq=1 Win=0 Len=0
10.1.10.11 10.1.10.201 39946 > ssh [SYN] Seq=0 Win=14600 Len=0 MSS=1460
10.1.10.201 10.1.10.11 [TCP Previous segment lost] ssh > 39946 [SYN, ACK] Seq=46941561
10.1.10.11 10.1.10.201 39946 > ssh [RST] Seq=1 Win=0 Len=0
(the last three lines repeat)
Похоже, пакеты туда попадают, но подключающийся компьютер отправляет RST. Зачем?
Со стороны клиента (машина с SSH) более поздняя попытка выглядела так:
Source Destination Info
10.1.10.11 a.b.c.d 40212 > ssh [SYN] Seq=0 Win=14600 Len=0 MSS=1460
10.1.10.201 10.1.10.11 ssh > 40212 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460
10.1.10.11 10.1.10.201 40212 > ssh [RST] Seq=1 Win=0 Len=0
10.1.10.11 a.b.c.d [TCP Retransmission] 40212 > ssh [SYN] Seq=0 Win=14600 Len=0 MSS=1460
10.1.10.201 10.1.10.11 [TCP Previous segment not captured] ssh > 40212 [SYN, ACK] Seq=15635206
10.1.10.11 10.1.10.201 40212 > ssh [RST] Seq=1 Win=0 Len = 0
(the last three lines repeat)
Единственное, что выделяется, это то, что я постоянно получаю "Предыдущий сегмент не захвачен" (не так ли? Кажется, прямо здесь), и что порядковые номера от клиента действительно детерминированы. (Разве они не должны начинаться со случайной точки и увеличиваться оттуда?)