서버 용도로 사용할 컴퓨터를 설정하고 네트워크 환경을 구성한다. 목표는 SSH를 통해 외부에서 홈 서버로 접속이 가능하도록 하는 것이다.
SSH(Secure Shell)는 클라이언트와 서버 간의 통신을 암호화하여 안전한 원격 접속을 가능하게 하는 프로토콜이다. SSH는 클라이언트와 서버가 키 교환을 통해 암호화된 연결을 설정하며, 기본적으로 22번 포트를 사용한다. 이를 통해 원격 접속 시, 데이터는 네트워크를 통해 안전하게 전송될 수 있다.
ubuntu 설치 과정에서 openssh-server 를 설치하지 않았다면, 설치해줘야 한다.
Terminal window
1
sudoaptinstallopenssh-server-y
이 후의 작업에 ssh 를 이용하기 위해, private IP 를 확인한다.
ifconfig 나 ip addr show 명령어를 통해 현재 네트워크에 연결된 장치 (랜 카드나 ethernet) 를 확인하고 해당 장치에서 inet 을 확인하면 된다.
inet
inet은 인터페이스의 IPv4 주소를 표시한다. 일반적으로 홈 네트워크에서는 아래의 Private IP 대역에 속한 주소를 사용한다.
10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)
172.16.0.0 ~ 172.31.255.255(172.16.0.0/12)
192.168.0.0 ~ 192.168.255.255(192.168.0.0/16)
이제 서버와 연결된 공유기와 같은 공유기에 연결된 컴퓨터에서 해당 private IP를 통해 원격 접속할 수 있다.
같은 공유기에 연결된 기기끼리 사설망에서 통신이 가능한 이유
공유기는 DHCP 서버로서 ISP 가 할당한 public IP 주소를 할당받고, 연결된 기기에게 동일한 서브넷에 속하는 private IP 주소를 할당하여 기기들이 인터넷에 접속할 수 있도록 한다.
이 과정에서 공유기는 연결된 모든 기기를 동일한 로컬 네트워크에 포함시키게 되는데, 포함되어 있는 기기들은 라우팅 없이 직접 통신이 가능하다.
이제 사설망에 속한 기기 뿐만 아니라, 외부에서도 접속이 가능하게 하기 위해 포트포워딩 설정을 진행한다. 목적은 공유기에 부여된 public IP 를 통해서 홈 서버에 접속할 수 있도록 하는 것이다.
이를 위해 공유기 설정에서 특정 포트로 트래픽이 들어왔을 때, 해당 서버로 트래픽이 유입되도록 설정한다.
하지만 DHCP 프로토콜에서는 private IP 를 유동적으로 주게 된다. 따라서 홈 서버의 IP 를 고정시키고, 해당 IP에 대한 포트 포워딩을 진행해야 한다.
포트포워딩은 NAT(Network Address Translation)의 기능 중 하나로, 공유기의 공인 IP로 들어오는 특정 포트의 요청을 사설 IP 주소로 전딜한다. 이를 통해 외부에서 홈 서버에 접근할 수 있 있다.
이제 공유기의 public IP 의 22번 포트를 홈 서버로 포워딩하게 한다. 네트워크 설정 - NAT 설정 에 접속하여 원격 접속 (ssh, 22번 포트) 에 대한 포트 포워딩을 추가한다.
포트 포워딩 설정까지 완료하면, 공유기의 public IP 를 외부에서 홈 서버로의 접속이 가능해진다.
아래 주소로 접속하면 public IP 를 확인할 수 있다.
https://www.findip.kr
하지만 현재 서버 구성에서는 네트워크 앞 단에 보안 구성이 없기 때문에 DDOS 등의 공격에 취약할 수 밖에 없다.
따라서 다음 글에서는 홈 서버로 유입되는 외부 트래픽에 대한 보안을 위해 홈 서버 내부의 방화벽, 침입 차단 설정 과 외부 리버스 프록시를 이용한 VPN 을 설정한다.