고용주의 무선 네트워크가 몇 초 동안 계속 오프라인 상태가 됩니다. 이로 인해 내가 적극적으로 사용하지 않는 SSH 세션의 연결이 끊어집니다. Wi-Fi가 잠시 중단되어도 연결을 유지하는 방법이 있나요?
답변1
나는 또한이 문제에 직면했습니다. 작업자 서버에서 세션을 시작한 tmux
다음 연결이 다시 설정된 후 다시 연결하면 중단했던 부분부터 쉽게 시작할 수 있습니다.
답변2
가능한 해결책은 SSH 세션의 대상과 이에 대한 권한에 따라 닫히지 않는 다른 인터페이스를 설정하는 것입니다.
VPN을 사용하면 가능합니다. 예를 들어, 완전한 VPN(openvpn, wireguard, 비즈니스 VPN) 또는 ssh
온/오프로 구축된 VPN이 있습니다.tun
답변 끝
이제 설정 방법에 대해 조금 설명하겠습니다(다른 설정도 많이 있습니다).
제 경우에는 이제 인터페이스가 다운되고 몇 시간마다 다른 공용 IP 주소가 나타납니다. 내가 관심을 갖는 세션은 단일 네트워크의 호스트에 속하므로 내 솔루션은 한 tun
장치는 내 쪽이고 다른 장치는 내가 액세스하려는 네트워크에 있는 터널입니다 .
예를 들어 부팅 시 각 측면에 장치를 한 번만 만듭니다(루트 사용자여야 함).
ip tuntap add dev tun5 mode tun user youruser group yourgrup
ip address add 10.0.0.1/32 peer 10.0.0.2/32 dev tun5
(반대편의 주소를 반대로 하세요)
그런 다음 해당 -w local_tun[:remote_tun]
옵션(이 경우 -w 5:5
)을 사용하여 호스트에서 다른 호스트로 정상적으로 연결하십시오. tun
이 사용자/그룹을 위해 장치를 만들었 으므로 더 이상 특별한 권한이 필요하지 않습니다 .
tun5
이 시점에서 대체 주소 10.0.0.x의 호스트 간에 핑을 수행하고 다른 네트워크 장치와 마찬가지로 장치의 정책, NAT, 라우팅 및 모든 항목을 설정할 수 있습니다 .
그렇다면 링크가 끊어지면 어떻게 될까요? 이 시점에서 ssh
두 tun
장치를 연결하는 세션은 종료되지만 tun
장치 자체는 종료되지 않고 단순히 데이터를 버퍼링하고 연결이 다시 연결되면 트래픽이 재개됩니다.
링크 ssh
세션을 다시 시작하는 것은 지루할 수 있으며 이것이 autossh
바로 여기에서 시작됩니다. 필요한 경우 세션이 다시 시작됩니다.
연결 해제를 유지하려는 프로세스가 해당 인터페이스(IP, 라우팅, NAT 등)를 사용하고 있는지 확인하면 됩니다. 전체 설정이 과도해 보일 수도 있지만 DDNS 클라이언트에서도 작동합니다. DNS가 변경 사항을 따라잡으면 세션이 다시 설정되고 tun
장치를 사용하는 클라이언트가 재개됩니다.
답변3
일반적으로 TCP 연결은 짧은 연결 끊김에 대해 안정적입니다. 설정에 따라 다르지만 기본적으로 TCP는 최소 60초 동안 유지되어야 한다고 생각합니다.
단, 이는 귀하의 IP 주소(/NAT 라우터의 IP 주소)가 변경되지 않는다고 가정합니다. 그렇지 않은 경우에는 TCP가 처리할 수 있는 작업이 아닙니다.
이러한 신뢰할 수 없는 연결을 위해 다음과 같은 깔끔한 도구가 있습니다.mosh
, 빈번한 재연결, IP 주소 변경 및 기타 방해를 통해 SSH 연결을 유지하는 데 좋습니다.
UDP 위에 TCP와 다른 흐름 제어 프로토콜을 구현하고 서버에서 UDP 소켓을 열어 이를 수행합니다. 따라서 이를 위해서는 원격 호스트가 UDP 포트를 열 수 있어야 하며 이는 일반적으로 엄격한 제한이 아닙니다.
답변4
~/.ssh/config 파일을 설정해 볼 수 있습니다.
Host *
ServerAliveInterval 10
ServerAliveCountMax 60
각 매개변수가 무엇인지에 대한 좋은 설명을 찾을 수 있습니다.여기