У меня есть сервер 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)
Единственное, что выделяется, это то, что я постоянно получаю "Предыдущий сегмент не захвачен" (не так ли? Кажется, прямо здесь), и что порядковые номера от клиента действительно детерминированы. (Разве они не должны начинаться со случайной точки и увеличиваться оттуда?)
