У меня есть сервер в моей сети, который я хочу открыть для внешних SSH-соединений. Я могу напрямую подключиться к устройству по ssh из своей сети (например, СШ 192.168.88.162
работает отлично).У меня настроено правило NAT, чтобы соединения с 17722 перенаправлялись на 22. Однако это не удается:
PS C:\Users\Me> ssh -vvv -i .\.ssh\id_rsa -p 17722 [email protected]
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: Чтение данных конфигурации C:\Users\Me/.ssh/config
debug3: не удалось открыть файл: C:/ProgramData/ssh/ssh_config ошибка: 2
debug2: resolve_canonicalize: имя хоста 160.119.XXX.XXX — это адрес
отладка2: ssh_connect_direct
debug1: подключение к порту 17722 160.119.XXX.XXX [160.119.XXX.XXX].
debug3: finish_connect - ОШИБКА: асинхронный ввод-вывод завершен с ошибкой: 10060, ввод-вывод: 00000222C310DC10
debug1: подключиться к адресу 160.119.XXX.XXX порт 17722: время ожидания подключения истекло
ssh: подключиться к хосту 160.119.XXX.XXX, порт 17722: время ожидания подключения истекло
Как заставить работать ssh с внешнего IP?
tcpdump на сервере показывает:
me@JanJansen:~ $ grep 64236 tcpdump
22:13:56.097727 IP 192.168.88.177.64236 > 192.168.88.162.ssh: флаги [S], seq 3490646443, win 64240, параметры [mss 1460,nop,wscale 8,nop,nop,sackOK], длина 0
22:13:56.098213 IP 192.168.88.162.ssh > 192.168.88.177.64236: флаги [S.], seq 869880002, ack 3490646444, win 64240, параметры [mss 1460,nop,nop,sackOK,nop,wscale 6], длина 0
22:13:57.105046 IP 192.168.88.177.64236 > 192.168.88.162.ssh: флаги [S], seq 3490646443, win 64240, параметры [mss 1460,nop,wscale 8,nop,nop,sackOK], длина 0
22:13:57.105398 IP 192.168.88.162.ssh > 192.168.88.177.64236: флаги [S.], seq 869880002, ack 3490646444, win 64240, параметры [mss 1460,nop,nop,sackOK,nop,wscale 6], длина 0
22:13:58.162258 IP 192.168.88.162.ssh > 192.168.88.177.64236: флаги [S.], seq 869880002, ack 3490646444, win 64240, параметры [mss 1460,nop,nop,sackOK,nop,wscale 6], длина 0
22:13:59.117541 IP 192.168.88.177.64236 > 192.168.88.162.ssh: флаги [S], seq 3490646443, win 64240, параметры [mss 1460,nop,wscale 8,nop,nop,sackOK], длина 0
22:13:59.117912 IP 192.168.88.162.ssh > 192.168.88.177.64236: флаги [S.], seq 869880002, ack 3490646444, win 64240, параметры [mss 1460,nop,nop,sackOK,nop,wscale 6], длина 0
22:14:01.122237 IP 192.168.88.162.ssh > 192.168.88.177.64236: флаги [S.], seq 869880002, ack 3490646444, win 64240, параметры [mss 1460,nop,nop,sackOK,nop,wscale 6], длина 0
По сравнению с локальным ssh, который имеет много [П] флаги, не [С], что является самой большой разницей, которую я вижу, но я понятия не имею, как с этим поступить.
Что бы это ни стоило, я вижу действующие правила NAT. Вот конфиг роутера:
# 04.10.2021 23:17:07 от RouterOS 6.47.4
# идентификатор программного обеспечения = VBLW-UG4R
#
# модель = 951Уи-2ХнД
# серийный номер = B8710C65021A
/интерфейсный мост
добавить admin-mac=48:8F:5A:79:92:71 auto-mac=no comment=defconf name=bridge
/интерфейс беспроводной
set [ find default-name = wlan1 ] mode = ap-bridge ssid = беспроводной протокол MikroTik = 802.11
/интерфейс pppoe-клиент
добавить add-default-route=yes disabled=no interface=ether5 name=pppoe-out1 use-peer-dns=yes [email protected]
/список интерфейсов
добавить комментарий=имя defconf=WAN
добавить комментарий=имя defconf=LAN
/interface беспроводные профили безопасности
установить [ найти по умолчанию = да ] соискатель-идентификация = MikroTik
/IP пул
добавить имя = диапазоны DHCP = 192.168.88.10-192.168.88.254
/ip DHCP-сервер
добавить пул адресов = отключен DHCP = нет интерфейса = время аренды моста = 12 часов имя = defconf
/порт моста интерфейса
добавить bridge=bridge comment=defconf interface=ether2
добавить bridge=bridge comment=defconf interface=ether3
добавить bridge=bridge comment=defconf interface=ether4
добавить мост = мост комментарий = интерфейс defconf = wlan1
/ip настройки обнаружения соседей
установить список-интерфейса-обнаружения = локальная сеть
/член списка интерфейсов
добавить комментарий=интерфейс defconf=список мостов=LAN
добавить комментарий=интерфейс defconf=ether1 list=WAN
добавить интерфейс=pppoe-out1 list=WAN
/айпи адрес
добавить адрес = 192.168.88.1/24 комментарий = интерфейс defconf = сеть ether2 = 192.168.88.0
/IP Арп
добавить адрес = 192.168.88.162 комментарий = Интерфейс JanJansen = MAC-адрес моста = 00:0F:13:39:20:33
add address=192.168.88.177 comment=Sarevok interface=bridge mac-address=40:8D:5C:58:C0:97
добавить адрес = 192.168.88.202 интерфейс = MAC-адрес моста = 32:63:2A:49:58:D9
добавить адрес = 192.168.88.101 интерфейс = мост mac-адрес = 18:56:80:24:47:12
/ip-облако
установить ddns-enabled=да
/ip DHCP-клиент
добавить комментарий=интерфейс defconf=ether1
/ip сеть dhcp-сервера
добавить адрес = 192.168.88.0/24 комментарий = шлюз defconf = 192.168.88.1
/ip-днс
установить разрешить удаленные запросы = да
/ip DNS статический
добавить адрес = 192.168.88.1 комментарий = имя defconf = router.lan
/IP фильтр брандмауэра
добавить действие = принять цепочку = ввод комментарий = "defconf: принять установленный, связанный, неотслеживаемый" состояние соединения = установленный, связанный, неотслеживаемый
добавить action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
добавить action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
добавить action=accept chain=input comment="defconf: принять локальную петлю (для CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="defconf: удалить все, что не идет из локальной сети" in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: принять политику ipsec" ipsec-policy=out,ipsec
добавить action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=installed,related
добавить действие = принять цепочку = переслать комментарий = "defconf: принять установленный, связанный, неотслеживаемый" состояние соединения = установленный, связанный, неотслеживаемый
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: удалить все из WAN без DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
добавить action=accept chain=forward comment="Outside SSH" dst-port=22 log=yes protocol=tcp
/ip брандмауэр физ.
добавить action=masquerade chain=srcnat comment="defconf: masquerade" ipsec-policy=out,none out-interface-list=WAN
добавить action=dst-nat chain=dstnat comment=JanJansen dst-port=17722 in-interface=bridge log=yes protocol=tcp to-addresses=192.168.88.162 to-ports=22
/ipv6 список адресов брандмауэра
добавить address=::/128 comment="defconf: неуказанный адрес" list=bad_ipv6
добавить адрес=::1/128 comment="defconf: lo" list=bad_ipv6
добавить адрес=fec0::/10 comment="defconf: site-local" list=bad_ipv6
добавить адрес=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
добавить address=::/96 comment="defconf: совместимость с ipv4" list=bad_ipv6
add address=100::/64 comment="defconf: только отбрасывать" list=bad_ipv6
добавить адрес=2001:db8::/32 comment="defconf: документация" list=bad_ipv6
добавить адрес=2001:10::/28 комментарий="defconf: ORCHID" list=bad_ipv6
добавить адрес=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
добавить адрес=::224.0.0.0/100 comment="defconf: другое" list=bad_ipv6
добавить адрес=::127.0.0.0/104 comment="defconf: другое" list=bad_ipv6
добавить address=::/104 comment="defconf: другое" list=bad_ipv6
добавить адрес=::255.0.0.0/104 comment="defconf: другое" list=bad_ipv6
/ipv6 фильтр брандмауэра
добавить действие = принять цепочку = ввод комментарий = "defconf: принять установленный, связанный, неотслеживаемый" состояние соединения = установленный, связанный, неотслеживаемый
добавить action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
добавить action=accept chain=input comment="defconf: accept ICMPv6" protocol=icmpv6
добавить action=accept chain=input comment="defconf: accept UDP traceroute" port=33434-33534 протокол=udp
add action=accept chain=input comment="defconf: принять делегирование префикса DHCPv6-Client." dst-порт=546 протокол=udp src-адрес=fe80::/10
добавить action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
добавить action=accept chain=input comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=input comment="defconf: принять все, что соответствует политике ipsec" ipsec-policy=in,ipsec
add action=drop chain=input comment="defconf: удалить все остальное, не поступающее из локальной сети" in-interface-list=!LAN
добавить действие = принять цепочку = переслать комментарий = "defconf: принять установленный, связанный, неотслеживаемый" состояние соединения = установленный, связанный, неотслеживаемый
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: отбрасывать пакеты с неверным src ipv6" src-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: отбрасывать пакеты с плохим dst ipv6" dst-address-list=bad_ipv6
добавить action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" hop-limit=equal:1 protocol=icmpv6
добавить action=accept chain=forward comment="defconf: accept ICMPv6" protocol=icmpv6
добавить action=accept chain=forward comment="defconf: accept HIP" protocol=139
добавить action=accept chain=forward comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=forward comment="defconf: принять все, что соответствует политике ipsec" ipsec-policy=in,ipsec
add action=drop chain=forward comment="defconf: удалить все остальное, не поступающее из локальной сети" in-interface-list=!LAN
/ системные часы
set time-zone-name=Африка/Йоханнесбург
/tool mac-сервер
установить разрешенный-интерфейс-список=LAN
/tool mac-сервер mac-winbox
установить разрешенный-интерфейс-список=LAN