SSH가 연결을 설정할 수 없습니다

SSH가 연결을 설정할 수 없습니다

동일한 네트워크에 여러 대의 컴퓨터가 연결되어 있습니다.

  • 답: 134.157.xxx.xxx
  • B: 134.157.yyy.yyy
  • 전화: 134.157.zzz.zzz

내 문제는 A가 더 이상 C에 연결할 수 없다는 것입니다. 그러나:

  • A는 A와 B에 SSH로 연결할 수 있습니다.
  • B는 A, B, C로 SSH를 통해 연결할 수 있습니다.
  • C는 A, B, C로 SSH를 통해 연결할 수 있습니다.

다음은 A의 일부 명령 출력입니다.

~$ telnet 134.157.zzz.zzz 22
Trying 134.157.zzz.zzz...
telnet: Unable to connect to remote host: Connection timed out
~$ ping 134.157.zzz.zzz
PING 134.157.zzz.zzz (134.157.zzz.zzz) 56(84) bytes of data.
64 bytes from 134.157.zzz.zzz: icmp_seq=1 ttl=64 time=0.283 ms
64 bytes from 134.157.zzz.zzz: icmp_seq=2 ttl=64 time=0.315 ms
64 bytes from 134.157.zzz.zzz: icmp_seq=3 ttl=64 time=0.314 ms
^C
--- 134.157.zzz.zzz ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2082ms
rtt min/avg/max/mdev = 0.283/0.304/0.315/0.014 ms
~$ ssh -vvv 134.157.zzz.zzz
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "134.157.zzz.zzz" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 134.157.zzz.zzz [134.157.zzz.zzz] port 22.
debug1: connect to address 134.157.zzz.zzz port 22: Connection timed out
ssh: connect to host 134.157.zzz.zzz port 22: Connection timed out

이전에는 이미 작동했으며 구성 파일이 변경되지 않았으며 A를 재부팅해도 아무 것도 변경되지 않습니다.

어떻게 조사해야 합니까?

[편집하다]

# on C
~$ tcpdump src 134.157.xxx.xxx -vv -i eno3
~$ tcpdump src 134.157.yyy.yyy -vv -i eno3
# on A
~$ ssh 134.157.zzz.zzz
# on B
~$ ssh 134.157.zzz.zzz

B에서 시작된 명령만 C에 출력을 제공합니다.

[/편집하다]

[두 번째 편집]

# on A
~$ tcpdump -vv -i any dst 134.157.zzz.zzz
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
12:32:18.609219 IP (tos 0x0, ttl 64, id 24010, offset 0, flags [DF], proto TCP (6), length 60)
    AAA.33648 > 134.157.zzz.zzz.ssh: Flags [S], cksum 0xf9fc (correct), seq 3301194634, win 64240, options [mss 1460,sackOK,TS val 2209953097 ecr 0,nop,wscale 7], length 0
12:32:19.628185 IP (tos 0x0, ttl 64, id 24011, offset 0, flags [DF], proto TCP (6), length 60)
    AAA.33648 > 134.157.zzz.zzz.ssh: Flags [S], cksum 0xf601 (correct), seq 3301194634, win 64240, options [mss 1460,sackOK,TS val 2209954116 ecr 0,nop,wscale 7], length 0
12:32:21.676188 IP (tos 0x0, ttl 64, id 24012, offset 0, flags [DF], proto TCP (6), length 60)
    AAA.33648 > 134.157.zzz.zzz.ssh: Flags [S], cksum 0xee01 (correct), seq 3301194634, win 64240, options [mss 1460,sackOK,TS val 2209956164 ecr 0,nop,wscale 7], length 0
# and so on until timeout

[/초편집]

[세 번째 편집]

# on A
~$ arp -an # contains 134.157.zzz.zzz with correct hardware address
~$ arp -d 134.157.yyy.yyy # success
~$ arp -d 134.157.zzz.zzz # error (see below)
SIOCDARP(dontpub): Network is unreachable
# on C
~$ arp -an # does not contain 134.157.xxx.xxx
~$ arp -s 134.157.xxx.xxx aa:aa:aa:aa:aa:aa # adds it, but solves nothing
~$ 

[/세 번째 편집]

[네번째 편집]

# After a while running
# tcpdump -vv -i any dst 134.157.zzz.zzz
# on A, I finally got
13:19:09.716711 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 134.157.zzz.zzz tell 134.157.mmm.mmm, length 46
13:23:55.162747 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 134.157.zzz.zzz tell 134.157.nnn.nnn, length 46
13:29:59.119983 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 134.157.zzz.zzz tell 134.157.nnn.nnn, length 46
# which is strange...

[/네 번째 편집]

답변1

ICMP가 A와 C 사이에서 작동하므로 이 문제는 스택의 상위 계층에서 발생할 가능성이 높습니다. B는 C에 도달할 수 있으므로 애플리케이션 계층에 있을 가능성은 없습니다.

내 생각 엔 방화벽 제한입니다.

따라서 확인하려면 tcpdump 또는 이와 유사한 것을 사용하여 어떤 패킷이 수신되고 전송되는지 확인합니다. C에서 tcpdump로 시작하여 A에서 패킷을 수신하는지 확인한 다음 역방향으로 작업합니다.

답변2

마침내 문제를 발견했습니다. A에서 넷마스크가 잘못되었습니다(255.255.255.0 대신 255.255.255.128). 네트워크를 업데이트할 때 이 내용을 놓쳤을 수 있습니다.

관련 정보