라즈베리파이 5 고정 IP 설정 및 포트포워딩

Kevin·2024년 11월 23일

Server

목록 보기
11/14
post-thumbnail

서론

해당 글은 KT 공유기를 사용한다는 전제 하에 작성 되었습니다.

이번에 라즈베리파이5를 구매했다.

라즈베리파이를 구매하게 된 이유는 토이 프로젝트 목적으로 구매하게 되었다.

클라우드 환경과 고민하던 나는 아직은 미숙한 클라우드 이해도로 인해서 예상치 못한 금액이 나오는 것을 경계하여, 이러한 선택을 하게 되었다.

토이 프로젝트로 WEB 프로젝트를 기획 중이기에 외부에서 접근을 할 수 있게 해야했다.

인터넷은 현재 우리 집에서 사용하는 가정용 WIFI를 포트 포워딩 하여서 사용할 계획이었다.

이 때 여러 레퍼런스를 찾아다니며, 공부를 할 때 라즈베리파이5에서 고정 IP를 설정하는 레퍼런스가 많지 않았다.

그러기에 이번 기회에 라즈베리파이5에서 고정 IP 설정 및 포트 포워딩 방식에 대해서 이야기 해보도록 하자.


고정 IP 설정

먼저 왜 IP를 고정 시키는 것이 필요한지 살펴보자.

일반적으로 공유기를 사용하여 인터넷에 접속하면, 각 기기에 IP를 할당 시켜준다.

이 때 IP를 유동적으로 할당 시켜주기 때문에 해당 기기가 전원을 껐다 키는등으로 인터넷 연결이 끊어지면 다시 유동적으로 할당을 해주게 된다.

위 사진은 실제 KT 공유기에서 IP를 유동적으로 할당 시켜주는 범위다.

위 사진의 범위를 통해 예시를 들어보자.

내가 라즈베리파이에 해당 공유기에서부터 인터넷을 공급 받아서 172.30.1.5라는 IP를 할당 받는다.

그래서 나는 해당 IP로 포트 포워딩을 하였다.

그러나 라즈베리파이의 전원을 껐다 키자 172.30.1.88 IP를 할당 받게 되어서 다시 포트 포워딩을 해주>어야만 했다.

위 예시를 정리 해보자면, 공유기를 통해서 인터넷에 접속 하는 경우 라즈베리파이의 IP는 계속 바뀌게 됨으로, 이를 고정할 필요가 있다.

IP를 고정 하기 위해서는 무엇이 필요할까?

아래 두가지 과정이 필요하다.

  1. 공유기가 유동적으로 할당 할 IP 범위에 라즈베리파이에 고정할 IP가 포함 되지 않도록 해야 한다.
  2. 라즈베리파이의 IP를 고정 시켜야 한다.

먼저 1단계 부터 같이 살펴보자.


1. DHCP 범위 조정

DHCP란?

쉽게 설명해서 HOST의 IP 주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동으로 제공 해주는 프로토콜이다.

우리는 DHCP의 범위를 조절하기 위해 아래의 주소들에 먼저 접속 해야 한다.

접속하면 위와 같은 페이지가 뜰 것이다.

계정을 별도로 설정 하지 않았다면 기본 계정 정보는 다음과 같다.

아이디 : ktuser

비밀번호 : homehub

접속 후 메뉴 중 장치 설정 > 네트워크 관리 > LAN 연결 설정에 접속한다.

이 중 색칠 되어있는 DHCP 코넷 IP 사용 범위의 시작 부분을 3부터 시작하게 하자.

이렇게 되면 공유기가 IP를 할당 할 때는 172.30.1.3~ 172.30.1.60 이내의 IP 중 하나를 유동적으로 할당하게 된다.

그렇다면 우리는 라즈베리파이 IP를 172.30.1.1 또는 172.30.1.2 로 고정 시키면 되는 것이다.

여기서 2개의 IP를 남겨놓은 이유는 이더넷과 무선에 각각 하나씩 할당 하기 위해서이다.


2. 라즈베리파이 IP 고정

해당 글에 들어온 대부분은 라즈베리파이5에서 어떻게 IP를 고정하는지에 대해서 알기 위해서 들어왔을 것이다.

기존 라즈베리파이에서는 아래와 같은 방법으로 IP를 고정 시킬 수 있었다.

그러나 라즈베리파이5 OS의 버젼인 bookworm에서는 위 경로로 가도 dhcpcd.conf 파일이 없다.

라즈베리파이5에서는 아래 명령을 통해서 고정 IP로 설정할 수 있다.

sudo nmtui

여기서 nmtui는 NetworkManager를 사용하는 Linux 배포판에서 Wi-Fi 연결을 관리할 수 있는 간단한 TUI이다.

명령어를 입력시 위 TUI가 출력된다.

Edit a connection을 선택하자.(enter 입력)

그러면 위 화면이 뜨게 된다.

나는 현재 라즈베리파이에 무선으로 WIFI를 사용하고 있다.

여기서 내가 사용하고 있는 인터넷의 이름을 알기 위해서는 아래 명령어를 치면 된다.

# 1. 현재 IP가 할당 된 DEVICE 찾기.
$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 2c:cf:67:65:65:cc  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 106  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 44  bytes 4082 (3.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 44  bytes 4082 (3.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.30.1.2  netmask 255.255.255.0  broadcast 172.30.1.255
        inet6 fe80::f1e7:490c:c7e7:e9bd  prefixlen 64  scopeid 0x20<link>
        ether 2c:cf:67:65:65:cd  txqueuelen 1000  (Ethernet)
        RX packets 307117  bytes 409408902 (390.4 MiB)
        RX errors 0  dropped 25  overruns 0  frame 0
        TX packets 65658  bytes 4743581 (4.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# 2. 현재 wlan0에 172번대 IP가 배정 되었으니 wlan0 DEVICE의 이름 찾기.
$ nmcli con show
NAME                UUID                                  TYPE      DEVICE 
preconfigured       11111111-1111-1111-1111-111111111111  wifi      wlan0  
lo                  11111111-1111-1111-1111-111111111111  loopback  lo     
KT_GiGA_E117        11111111-1111-1111-1111-111111111111  wifi      --     
Wired connection 1  11111111-1111-1111-1111-111111111111  ethernet  -- 
 

본인 인터넷에 해당하는 이름 선택 후 Edit(enter 입력)

그러면 위와 같은 화면이 뜰 것인데, 위 화면은 내가 일부 설정 해놓아서 값들이 채워져있다.

위 설정 중 바꿔야 할 값들을 하나 하나 설명 해보겠다.

먼저 IPv4 같은 경우에는 기본이 Automatic으로 설정 되어있을 것이다.

이를 Manual로 변경 해주자.

그리고 Address에는 고정시킬 IP 를 입력 해주면 된다.

이 때 뒤에 올 /24 같은 경우에는 서브넷마스크에 따라 작성 하면 된다.

이에 대한 설명은 해당 글 주제와 벗어나기에 “서브넷마스크” 키워드로 검색을 해보자.


서브넷 마스크는 KT 공유기 설정 페이지의 장치 설정 > 네트워크 관리 > LAN 연결 설정 에서 확인할 수 있다.

그 다음 KT의 경우 기본 게이트웨이는 172.30.1.254이다.

그 다음 DNS 서버를 등록 시킨다.

8.8.8.88.8.4.4는 구글 DNS 서버이고, 168.126.63.1168.126.63.2는 KT DNS 서버이다.

위와 같이 설정 후 OK를 눌러 나오자.

그 후 Activate a Connection에 들어가 방금 설정한 이름의 네트워크를 껐다 켜서 적용 시키자.

그 후에 라즈베리파이를 껐다 켜보자.

ifconfig를 통해 IP가 방금 설정한대로 출력 된다면 성공 한 것이다.


포트포워딩

KT 공유기 설정 페이지의 장치 설정 > 포트포워딩 설정 메뉴에 접속 하자.

포트 포워딩 설정에 아래 설정 값들을 기입 후 추가 버튼을 눌러주면 포트포워딩을 할 수 있다.

  1. 외부 포트 : 외부에서 접근하게 되는 포트 번호를 의미한다.
  2. 내부 IP 주소 : 외부의 요청을 리다이렉트 시킬 내부망 IP를 의미하며, 우리의 경우 고정 IP를 기입 하면 된다.
  3. 내부 포트 : 외부 포트로 온 요청을 내부 IP의 특정 포트로 포워딩 하는 것을 의미한다.

나는 외부에서 원격으로 접속해 작업을 진행 할 수 있도록 Well - Known Port 번호를 피해서 SSH 접근이 가능 하도록 설정을 해주고, 또한 외부에서 우리 웹 서버로 접근할 수 있도록 80번 PORT를 포트 포워딩 시켜주었다.

profile
Hello, World! \n

2개의 댓글

comment-user-thumbnail
2025년 1월 3일

DNS 서버 추가하실 때 구글 서버와 KT 서버를 활용하셨는데 이유를 알 수 있을까요?

1개의 답글