LINUX.ORG.RU
решено ФорумAdmin

SSH не реагирует при подключении из внешке

 


0

3

Здравствуйте. Имеется Ubuntu 18.04 LTS, установленная в Hyper-V на Windows Server 2008 R2. На машине с виндой две сети - локальная и внешная, с роутером. У роутера статический белый адрес. В убунте забиты статические адреса: 192.168.0.210 в локале и 192.168.1.210 на внешку. На роутере сделан проброс порта 4322 -> 22. При подключении из локали все работает, все подключается. При подключении с убунты к самой себе (ssh localhost, ssh 192.168.0.210, ssh 192.168.1.210) все также работает и подключается. При подключении по внешнему адресу ssh -vvv мой_внешний_ip -p 4322

OpenSSH_7.7p1, OpenSSL 1.0.2o  27 Mar 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolve_canonicalize: hostname мой_внешний_ip is address
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to мой_внешний_ip [мой_внешний_ip] port 4322.
debug1: connect to address мой_внешний_ip port 4322: Connection timed out
ssh: connect to host мой_внешний_ip port 4322: Connection timed out

sudo tcpdump port 22 -n в убунте показывает, что пакеты приходят:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
11:59:59.469076 IP 85.140.1.92.20141 > 192.168.1.210.22: Flags [S], seq 3595564010, win 65535, options [mss 1360,sackOK,TS val 69961588 ecr 0,nop,wscale 8], length 0
12:00:00.490235 IP 85.140.1.92.20141 > 192.168.1.210.22: Flags [S], seq 3595564010, win 65535, options [mss 1360,sackOK,TS val 69961688 ecr 0,nop,wscale 8], length 0
12:00:02.509141 IP 85.140.1.92.20141 > 192.168.1.210.22: Flags [S], seq 3595564010, win 65535, options [mss 1360,sackOK,TS val 69961888 ecr 0,nop,wscale 8], length 0
12:00:06.513718 IP 85.140.1.92.20141 > 192.168.1.210.22: Flags [S], seq 3595564010, win 65535, options [mss 1360,sackOK,TS val 69962289 ecr 0,nop,wscale 8], length 0
4 packets captured
4 packets received by filter
0 packets dropped by kernel
Но до адресата (ssh) не доходят. В /var/log/auth.log ничего про это подключение нет.

Я подозреваю, что причина, вероятно, банальна, но выявить ее самостоятельно у меня не получается. Опыт администрирования linux-систем у меня маленький и заключается в двух одноплатниках и там с такими проблемами я не сталкивался.

Конфиг /etc/ssh/sshd_config

Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
SyslogFacility AUTH
LogLevel INFO
PermitRootLogin no
AllowUsers git
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no

Вывод ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.210  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::215:5dff:fe00:c801  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:00:c8:01  txqueuelen 1000  (Ethernet)
        RX packets 3596  bytes 323616 (323.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19  bytes 1398 (1.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.210  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::215:5dff:fe00:c802  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:00:c8:02  txqueuelen 1000  (Ethernet)
        RX packets 11891  bytes 1662807 (1.6 MB)
        RX errors 0  dropped 1342  overruns 0  frame 0
        TX packets 2050  bytes 435567 (435.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Локальная петля (Loopback))
        RX packets 46  bytes 4062 (4.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 46  bytes 4062 (4.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Вывод iptables -L -vn

Chain INPUT (policy ACCEPT 5198 packets, 403K bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain OUTPUT (policy ACCEPT 1047 packets, 161K bytes)
 pkts bytes target     prot opt in     out     source               destination 

Вывод sudo netstat -ltupn

Активные соединения с интернетом (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State       PID/Program name  
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      569/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1718/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1718/sshd
udp    20736      0 127.0.0.53:53           0.0.0.0:*                           569/systemd-resolve

Брандмауэр ufw отключен.

/etc/hosts.deny и /etc/hosts.allow пустые.



Последнее исправление: beast6666 (всего исправлений: 2)
Ответ на: комментарий от mky

это оно?

netstat -rn
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

beast6666
() автор топика
Ответ на: комментарий от beast6666

Как бы оно, но лучше ″ip route show″.

Сейчас пакеты скорее всего не доходят из-за rp_filter (легко гуглится как отключить). Но с такими маршрутами ответный пакет на 85.140.1.92 может не пойти через 192.168.1.1. ИМХО, вам нужно убрать маршрут по умолчанию через 192.168.0.1.

mky ★★★★★
()
Ответ на: комментарий от mky

Вроде получилось. По крайней мере - я смог подключиться удаленно из внешки. Отключил rp_filter посредством запуска скрипта:

 
#!/bin/sh
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
  echo 0 > $i 
done
Кто вдруг придется сюда с такой же проблемой и будет задаваться вопросом как сделать и запустить - делаем sudo nano disable-rpfilter.sh, вставляем код, сохраняемся, делаем sudo chmod u+x disable-rpfilter.sh и запускаем sudo sh disable-rpfilter.sh

Увидел, что пакеты стали отправляться, но соединение не устанавливалось, а тупо висело. Убрал шлюз правкой netplan: sudo nano /etc/netplan/01-netcfg.yaml и sudo netplan apply и поперло.

Я, короче, сам себе злобный буратино. Не надо было его там указывать изначально. Теперь буду знать

beast6666
() автор топика
Ответ на: комментарий от mky

Премного благодарен за помощь в решении проблемы. Искал какую-нибудь кнопочку специальную для спасибки, не нашел) Так пишу

beast6666
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.