자, 이제 머신은 준비되었으니 원격으로 이곳에 접속하기 위한 세팅을 시작해보자.
우선 알아야 할 개념은 크게 가지다.
인터넷 서비스 제공업체(ISP)로부터 할당받는 고유한 IP 주소이다. 여러분의 집에 설치된 SKT, KT, U+와 같은 ISP에서 여러분 집에 할당한 주소같은 개념이라고 보면 쉽다. 인터넷 상에서 여러분의 장치를 식별하는 역할을 하며, 외부로부터 직접 접근이 가능하다. 외부에서 접속하기 위해 꼭 알고있어야 한다.
여러분의 집에 들어오는 인터넷 선은 (보통) 하나인데, 여러분의 집에서 인터넷 연결을 필요로하는 기기는 상당히 많다. 컴퓨터, IPTV, 스마트폰, IOT기기들 등등... 하나의 인터넷 선으로 이들 모두에게 인터넷 연결을 제공하려면 공유기(혹은 라우터)가 필요하다. 사설 IP란, 공유기에 의해 내부 네트워크의 장치에 할당되는 IP 주소이다. 인터넷 외부로부터 직접 접근이 불가능하며, 동일한 네트워크 내에서만 서로 통신하는 데 사용된다. 예를 들어, 가정에서 사용하는 컴퓨터, 스마트폰, 태블릿 등은 모두 서로 다른 사설 IP를 가지고 있다.
그럼 우리집에 있는 서버 PC로는 어떻게 접근할까? 여기서 포트포워딩 개념이 필요하다. 포트포워딩은 라우터가 특정 포트로 들어오는 외부 요청을 내부 네트워크의 특정 장치로 전달하는 기능을 말한다. 외부 IP의 특정 포트로 들어오는 요청을 내부 IP의 특정 포트로 연결해 줄 수 있다.
이제 대충 개념을 알아봤으니, 우리 집에 있는 iptime의 admin기능을 이용해서 이를 확인해보자!
우선 크롬을 켜고 192.168.0.1로 접속해보자! 192.168.x.x 형식의 IP 주소는 사설 IP 주소이고, 그 중 192.168.0.1는 보통 라우터에 할당되어 있다. 사설 IP 주소는 인터넷 외부에서 직접 접근할 수 없으며, 로컬 네트워크 내에서만 사용되므로, 반드시 내가 접속하려는 공유기의 인터넷 망 안에서 접근해야한다.
요런 로그인 화면이 뜰텐데, 초기의 아이디/비번은 모두 admin일 것이다.
접속 후 화면, 관리 도구를 클릭해주자
그럼 최초 화면이 이렇게 나올텐데, 나는 이미 이것저것 설정해둔게 많아 화면 표시 내용이 다를 수 있다. 우측 상단에 외부 IP 주소에 표시되는 것이 ISP가 제공한 외부 IP이다. 대부분의 ISP는 이를 유동 IP로 제공하는데, 이 IP 주소는 임의로 변경 될 수 있다. 이를 고정 IP로 제공받고 싶으면 추가로 요금이 발생하는 것으로 알고있는데, 나는 아직 한번도 변경을 경험한적이 없다... (이사 전부터 거진 1년 넘게 사용했는데 바뀐적이 없음) 그러나 언제 바뀔지 모르니 우리는 iptime에서 제공하는 DDNS 기능을 활용할 예정이다. (추후 서술 예정)
고급 설정 - 네트워크 관리 - 내부 네트워크 설정 으로 접속하면 위와 같은 화면이 표시되는데, 그간 우리 공유기에 접속했던 기기들의 목록을 확인 할 수 있다. 맨 아래쪽에 우리의 ubuntu pc도 보인다.
이제 DHCP 설정을 해줄건데,
DHCP란 ‘Dynamic Host Configuration Protocol(동적 호스트 구성 프로토콜)’의 약자로, IP 네트워크에 사용되는 네트워크 프로토콜입니다. DHCP는 IP 주소 및 기타 통신 매개변수를 네트워크에 연결된 장치에 자동으로 할당합니다. 대부분의 가정용 네트워크에서는 라우터가 IP 주소를 장치에 할당하는 DHCP 서버의 역할을 합니다.
DHCP는 네트워크 관리자가 해야 할 작업을 간소화합니다. DHCP 사용 없이는 수동으로 IP 주소를 할당해야 합니다. DHCP 설정 없이 수동으로 IP 주소를 할당하면 비효울적이고 시간이 지나치게 많이 소요되며 오류가 발생할 가능성이 높습니다.
https://nordvpn.com/ko/blog/what-is-dhcp/
우리는 자동으로 할당되는 내부 IP를 수동으로 할당해주고싶다. 우선 IP주소 대여 범위를 설정해보자. 위의 화면에 보면, 나의 경우 192.168.0.11 ~ 192.168.0.254 까지 대여하기로 설정해뒀다. 이는 보통 와이파이 연결에서 내부 IP를 자동으로 설정될 때 그 범위를 지정하는 것이다. (물론 유선으로 갖다 꽂아도 자동으로 연결 됨) 범위는 특별히 정해진것은 없고 나는 192.168.0.2 ~ 192.168.0.10 까지는 별도로 수동연결에 쓰고 싶어서 이렇게 했다. 하단에서 원하는 IP를 선택해주고, mac주소가 잘 입력된것을 확인 후, 수동 주소를 입력해주자. (나는 192.168.0.10에 ubuntu pc를 할당해줬다.)
등록이 완료된 모습
이제 NAT/라우터 관리 - 포트포워딩 설정 으로 접속하면 위와 같은 화면이 나오는데, 나는 이미 설정해둔게 몇개 있다. 여기서 포트포워딩 규칙을 설정 할 수 있다.
외부 IP의 어떤 포트로 요청을 보내면, 최종 도착지를 내부 IP/포트로 설정할 수 있다. 우리는 ssh접속이 목표이므로, 외부 포트의 22번 포트를 내부IP 192.168.0.10의 22번 포트로 설정해보자.
나의 경우 외부 ip의 잘 알려진 포트들은 숨기는게 좋다고해서 외부 포트는 234으로 임의 설정해두었다.
네트워크가 잘 연결되었는지 확인해보자
ip a
해석이 가능한 몇가지만 소개해보면,
1: lo - 얘는 로컬호스트(루프백 인터페이스)이며, 같은 시스템 내에서 통신하기 위해 사용되는 가상 네트워크 인터페이스이다. IP 주소는 127.0.0.1 (IPv4)과 ::1 (IPv6).
2: enp1s0 - 얘는 물리적 네트워크 인터페이스이며, 유선 어댑터이다. 현재 활성화 상태(state UP)이며 DHCP(동적)를 통해 우리가 설정해둔 대로 192.168.0.10 (IPv4) IP 주소가 할당되어있다. (mtu도 보이는데, 최대 전송 단위(Maximum Transmission Unit)를 나타내며, 한 번에 전송할 수 있는 데이터 패킷의 최대 크기를 의미한다. 일반적으로 1500 바이트가 기본.)
3: wlp3s0 - 얘도 물리적 네트워크이며, 무선 어댑터이다. 현재는 비활성화 상태(state DOWN)이다. 내가 꺼뒀다.
이제 ubuntu pc에서 ssh설정을 해주자. 우선 ssh란, Secure Shell의 약자로, 네트워크를 통해 두 컴퓨터를 안전하게 연결하는 데 사용되는 프로토콜이다. 암호화된 채널을 통해 원격 시스템을 제어하고 파일을 전송하며 명령어를 실행할 수 있도록 한다.
자세한 설명은 여기를 참고하자.
ubuntu는 기본적으로 SSH Server가 설치되어 있지 않기 때문에 최초에는 한번 설치를 해줘야한다.
sudo apt install openssh-server
참고로 터미널에서 복사 / 붙여넣기 단축키는 ctrl+shift+c/v
설치되었다면, ssh 실행 상태를 체크해주자
sudo systemctl status ssh
잘 동작하는 모습
자 이제 서버쪽 세팅이 완료되었으니, 다시 맥으로 돌아와서 ssh 접속을 해보자
ssh -p 포트번호 유저이름@IP주소
그냥
ssh 유저이름@IP주소
로 접속한다면, 다음과 같이
22번 포트를 찾을 수 없어 Operation timed out이 발생한다. 이는 우리가 외부 IP의 234번 포트를 서버의 22번 포트와 연결해줬으므로,
포트를 올바르게 지정해주면 접속이 가능하고, yes 입력 후 ubuntu pc의 비번을 입력해주면 정상적으로 접속이 가능하다.
만약 이래도 접속이 불가능하다면, 방화벽 문제일 수 있는데,
sudo ufw status
를 입력한 결과가 active로 나오면
sudo ufw allow ssh # 방화벽 허용에 ssh 추가
sudo ufw reload # 방화벽 리로드
를 통해 방화벽에 ssh 접속은 허가해 달라고 부탁 할 수 있다.
근데 매번 저렇게 접속하는게 번거로울 수 있다.
맥북의 /Users/유저명/.ssh 경로에 config 파일을 추가하여
Host ubuntu-server
HostName 서버 주소
IdentityFile ~/.ssh/id_rsa
User lukaid
Port 234
ServerAliveInterval 20
TCPKeepAlive no
위와 같이 입력해주면,
간단하게 접속이 가능하다.
이번 포스팅에선 iptime 설정과 ssh 설정 방법에 대해 알아보았다. 이제 대부분의 설정이 끝났으며, 다음에는 vscode에서 간단하게 내 서버에 접속하는 방법과, N100의 성능 및 전력 소모, 발열 등을 자세히 알아보고, 발열과 팬소음을 줄이기 위한 노력들을 소개해보겠다!