서버가 2개 있고 네트워크는 다음과 같습니다.
Server_A (Ubuntu) -> Firewall/Router -> Internet
Server_A는 인터넷의 모든 서버에 연결할 수 있습니다.
Server_B (Ubuntu) which is directly connected to the internet.
Server_B의 포트 전달이나 방화벽에는 제한이 없습니다.
Server_A는 로컬 네트워크 내부에 있고 여기에서는 포트 전달이 불가능하기 때문에 인터넷에서 Server_A에 연결할 수 없습니다. 라우터에 액세스할 수 없습니다.
Server_A가 Server_B에 연결하여 Server_B에 SSH로 연결하고 Server_A와 통신할 수 있나요?
답변1
Server_A에서 SSH 서버를 실행할 수 있는 경우 Server_A에서 Server_B로 SSH를 실행하고 Server_B의 포트를 다시 Server_A의 SSH 서버로 전달할 수 있습니다.
Server_A$ ssh -R 12345:localhost:22 Server_B
Password:
Server_B$
그런 다음 Server_B에서 이제 localhost를 사용하여 포트 12345에서 Server_A로 SSH를 통해 연결할 수 있습니다.
Server_B$ ssh -p 12345 localhost
Password:
Server_A$
만약 너라면진짜Server_A의 SSH 서버를 인터넷에 노출하려면 다른 호스트에서 포트 전달에 액세스할 수 있도록 설정할 수 있지만 이를 허용하려면 Server_B의 sshd_config 파일이 필요합니다 GatewayPorts
.
Server_A$ ssh -R '*:12345:localhost:22' Server_B
Password:
Server_B$
그런 다음 어디에서나:
Anywhere$ ssh -p 12345 Server_B
Password:
Server_A$
하지만 댓글에서도 언급했듯이매우일부 중요한 보안 정책을 건너뛰지 않도록 주의하세요.
답변2
Teredo(오픈 소스 세계에서는 Miredo) 사용을 고려해보세요. 다음 구절은 Wikipedia에서 뻔뻔하게 복사한 내용입니다.
컴퓨터 네트워킹에서 Teredo는 IPv4 인터넷의 IPv6 지원 호스트에 완전한 IPv6 연결을 제공하지만 IPv6 네트워크에 대한 기본 연결은 제공하지 않는 전환 기술입니다. 유사한 프로토콜과 달리 홈 라우터와 같은 NAT(Network Address Translation) 장치 뒤에서 해당 기능을 수행할 수도 있습니다.
서버가 실행되면 Teredo 클라이언트는 자동으로 릴레이 서버에 연결하여 라우팅 가능한 IPv6 주소를 얻습니다. IPv6 주소는 Teredo 릴레이/서버에 따라 정적이거나 동적일 수 있습니다. 필요한 경우 동적 DNS 업데이트를 수행할 수도 있습니다.
이렇게 하면 포트 전달에 의존하지 않고도 서버와 클라이언트 간에 원활한 양방향 연결이 제공됩니다. PKI 인프라를 사용하여 IPv6 주소에 대한 액세스를 제한함으로써 보안 문제를 해결해야 할 수도 있습니다.