본문 바로가기
Ubuntu Server

[Ubuntu] 딥러닝 서버 만들기 - 유동 IP로 외부 접속 가능한 SSH server 구축하기 (feat. iptime 포트포워딩)

by pulluper 2022. 2. 26.
반응형

안녕하세요 pulluper 입니다. 😆

오늘은 딥러닝을 위한 개인 서버관리/구축에 대한 글을 작성 해 보겠습니다. 

저의 목표는 외부에서 접속가능한 ubuntu server를 구축하는 것 입니다. 

먼저 ubuntu server설치에 대해서는 이전 포스팅을 참조하시면 좋겠습니다. 

 

https://csm-kr.tistory.com/27

 

[Ubuntu] Ubuntu LTS20.04.3 설치하기

안녕하세요 pulluper입니다! 오늘은 집에서 서버로 이용할 ubuntu 를 설치해 보는 것을 알아보겠습니다. 저는 ubuntu 20.04.3 LST version 을 이용했는데 LTS version이란 Long Term Support 의 약자로 업데이트는..

csm-kr.tistory.com


1. 인터넷 구조 확인

 

먼저 자신의 인터넷 연결 구조를 확인 하면 좋습니다.

저같은 경우는 다음 그림과 같이 구성되어 있습니다.

(많은 분들이 사용하시는 형태라 대부분 비슷할 것 같습니다. ☺️)

인터넷 구조

먼저 외부에서 선이 들어와서 그것이 사설통신사(KT/SKT/LG등) 모뎀으로 연결이 되어 그것을 

여러 기기에서 사용하기 위해 공유기(라우터)에 연결해 줍니다.

저같은 경우는 Iptime 공유기를 사용하는데 이런 공유기들은 DHCP 를 제공합니다. (위 그림에서 1번)

그리고 Desktop, Server는 랜선으로 연결해 주고 나머지들은 무선으로 인터넷을 사용합니다. 

 

DHCP란? "IP주소, subnet mask, Gateway 등의 설정들을 자동으로 할당해 주는 통신규약" 입니다.

즉, (2.) 에서 볼 수 있듯이, desktop, server 등을 연결하면 각각의 IP 등의 설정을 자동 할당 해 주는 것 입니다.

예를들어 desktop이 할당된 내부 IP는 server가 할당 된 내부 IP와 다르고 자동으로 할당 되고 인터넷을 사용 할 수 있습니다. 👏👏


2. 자신의 (내부) IP등의 정보확인 

 

static IP를 위해서는

 

내부 IP

broadcast

DNS server 정보(기본/보조) 를 알야 합니다. 

 

내부 IP와 broadcast 주소는 다음 명령어로 확인 가능합니다. 

ip a

명령어를 쳐 주시면 됩니다.

이제 LOOPBACK이 아닌 연결된 네트워크 인터페이스(enp34s0)에 대하여 빨간 네모 정보를 기록합니다. 

inet : 192.168.0.17/24 - 이것은 위에서 보았던 인터넷 구조에서 공유기가 할당해준 내부의 IP주소이며

                   뒤의 /24는 netmask의 prefix를 나타냅니다. --------------------------- (1)

bdr : 192.168.0.255 - 이것은 브로드 캐스트 주소입니다. 

 

이제 DNS 서버 정보를 알기 위해서 기본 게이트웨이 주소인 192.168.0.1 로 접속을 하여 iptime 관리도구를 들어갑니다.

기본 게이트웨이 주소가 다른경우는 다음을 입력합니다. 

 

ip route

 

 

그럼 아래 그림처럼 나오는 주소가 기본 게이트웨이 주소입니다.  --------------------------- (2)

기본 게이트웨이 주소 확인

접속을 하면 다음과 같은 (iptime 의 경우) 화면을 볼 수 있습니다. 

iptime 관리도구

여기서 초기 아이디 비밀번호는 admin/admin 이고 까먹으셨다면 초기화를 진행해 주면 됩니다. 

이제 왼쪽 tab의 "기본설정-인터넷 설정 정보" 를 들어가면 

인터넷 설정정보
dns server 확인

 

다음과 같은 210.220.163.82, 219.250.36.130 을 얻을 수 있습니다. --------------------------- (3)

이제 고정 IP준비가 끝났습니다. 


3. IP주소 고정 (static IP) 

 

공유기가 DHCP으로 설정해준 내부 IP를 기준으로 이것을 고정 시켜서 외부에서도 접속을 할 수 있도록 하는 

포트포워딩을 실행 하기 위해 IP주소를 고정시켜 줍니다. 

 

Ubuntu 18.04 이후로는 다음 경로로 이동하여 "~.yaml" 파일을 변경해 줍니다. 

cd /etc/netplan/

제 경우는 다음과 같은 파일이 있는데, 이것을 nano 등으로 편집해 줍니다. 

nano 01-network-manager-all.yaml

그리고 그 내용은 다음과 같습니다.

각 들여쓰기는 띄어쓰기 2개이고,

 

enp34s0 인터페이스 아래의 

addresses: 뒤에는 (1) 인 inet,

gateway4 에는 (2)인 gateway주소 을 넣어줍니다. 

nameservers: 아래의 addresses : [(3) 의 정보를 넣어줍니다.] 

그리고 dhcp4: 뒤에는  no 혹은 false 를 해 주셔야 합니다. 

왜냐하면 이제 자동할당이 되지 않기 때문입니다. 

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp34s0:
      addresses: [192.168.0.17/24]
      gateway4: 192.168.0.1
      dhcp4: no
      optional: true
      nameservers:
        addresses: [210.220.163.82, 219.250.36.130]

이제 디버깅 후 apply 를 위해서 다음 명령어를 적어줍니다. 

sudo netplan --debug apply

이제 확인을 위해서 iptime 관리도구를 다시 들어가서 다음 tab "고급설정-네트워크 관리-내부 네트워크 설정" 에 접속을 해 봅시다. 

 

내부내트워크설정
고정ip확인

그러면 우리가 설정한 IP는 수동설정 즉 고정이 된 것을 볼 수 있습니다. 😊


4. SSH server 설치 

 

이제 준비가 끝났고 다음 명령어로 ssh server를 설치 해 줍니다. 

sudo apt update
sudo apt install openssh-server

설치 해 주면 자동으로 실행이 되는데 

부팅하면서 바로 실행하도록 하는 명령어는 다음과 같고 

sudo systemctl enable ssh

부팅후 자동으로 실행 안되게 하는 것은 다음과 같습니다. 

sudo systemctl disable ssh

 

ssh 상태에 대한 확인을 다음 명령어로 해 줄 수 있습니다, 

sudo systemctl status ssh

ssh status 확인

active(running)이 나오면 실행 중입니다. 

실행중이지 않다면 다음 명령어로 실행 가능합니다. 

sudo systemctl start ssh

그리고 중지 명령어는 다음과 같습니다. 

sudo systemctl stop ssh

5. 포트포워딩으로 외부접속 가능 설정

 

여태까지 한 작업으로 같은 공유기를 사용하는 환경에서는 서버에 접속을 할 수 있습니다. 

접속방법은 ssh clinet 가 설치된 환경에서 다음과 같은 명령어로 접속 가능합니다. 

ssh [user]@[hostname/IP] -p [port]

예를들어 desktop 컴퓨터에서 server로 접속을 하기위해 cmd에서 server이름@내부 IP (port 는 default 22 for ssh) 를 입력하면 

ssh 접속

짜쟌 다음과 같이 성공 한 모습을 볼 수 있습니다. 😆😆👍

ssh server 접속 성공

우리는 외부접속이 목표이기 때문에 다시 iptime 환경설정으로 가서 로그인을 합니다. 

 

그러면 아래 사진의 파란 부분에 외부에서 할당된 IP가 보입니다. 

사실 완전 고정은 통신사에 고정 IP를 요청하여 요금을 지불하고 선을 받아야 합니다. 

그러나 우리는 동적IP를 고정 IP마냥 사용하기 위해서 저 파란 부분이 안 바뀌길 바래야 합니다 

통신사에서 IP를 바꾸거나 모뎀/공유기를 오랫동안 꺼 두는 경우 바뀔 수 있다고 하는데 

저의 경우는 약 한달간은 무사히 사용중 입니다. 😘😘👌

외부 IP 확인

아무튼 이것을 통해서 외부에서 바로 서버로 접속을 하기위해 iptime 설정을 이용한 포트포워딩을 합니다, 

아이피타임 관리도구 tab에서 "고급설정-NAT/라우터 관리-포트포워드 설정"으로 들어갑니다  

포트포워드 설정

+ 새 규칙 추가 를 눌러주고 규칙이름/내부IP주소/프로토콜/외부포트/내부포트 를 설정해 줍니다. 

예를들어 이름을 server로 하고 내부 IP주소는 우리가 고정시킨 192.168.0.17 을 사용해 줍니다. 

프로토콜은 TCP로 두고, 외부포트를 원하는 포트로 정합니다. (ex 1234)

내부포트는 내부에서 설정한 포트를 적어줍니다. (default 22)

 

iptime 포트포워딩

이제 적용을 눌러주시면 포트포워딩이 끝났습니다! 

외부에서 접속시 1234번의 포트를 내부 192.168.0.17로 바로 찾아 갈 수 있도록 설정하였습니다. (포트포워딩)

ssh [user]@[외부IP] -p [port]

 

이제는 외부IP가 바뀌지 않기를 바라면서👏👏👏👏

접속을 하여 사용해 주시면 됩니다. 


오늘은 약간 긴 포스팅이었는데, ubuntu 20.04 서버에서 완전한 고정은 아니지만 유동 IP 를 이용해서 외부 접속이 되는 SSH server 설치에 대하여 알아보았습니다.   

 

공감과 좋아요와 질문은 항상 환영입니다.

감사합니다.  

반응형

댓글