Categories
Computer Network

우분투 서버 20.04를 활용한 유선 공유기 만들기

랜카드가 3개 장착된 우분투 서버를 유선 공유기로 만드는 방법을 알아보자.

1. 네크워크 인터페이스 구성

네크워크 구성 파일을 연다.

sudo vi /etc/netplan/00-installer-config.yaml

파일에 아래와 같은 내용을 입력한다.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:    # 첫번째 랜카드. 인터넷에 직접 연결된다.
      dhcp4: true
    enp4s0:    # 두번째 랜카드.
      dhcp4: false
      addresses:
      - 192.168.0.1/24
    enp5s0:    # 세번째 랜카드.
      dhcp4: false
      addresses:
      - 192.168.1.1/24

enp3s0, enp4s0, enp5s0 등의 네트워크 인터페이스 이름은 네크워크 환경에 따라 다를 수 있다.

파일을 저장하고 편집기를 닫는다.

구성 내용을 시스템에 적용한다.

sudo netplan apply

2. DHCP 서버의 설치와 구성

DHCP 서버 패키지를 설치한다.

sudo apt install isc-dhcp-server

시스템에 네트워크 인터페이스가 2개 이상이므로 바인딩이 필요하다. /etc/default/isc-dhcp-server 파일을 연다.

sudo vi /etc/default/isc-dhcp-server

아래와 같은 내용으로 작성한다.

INTERFACESv4="enp4s0 enp5s0"    # 두번째와 세번째 랜카드.
INTERFACESv6=""

DHCP 서버의 메인 구성 파일을 연다.

sudo vi /etc/dhcp/dhcpd.conf

아래와 같은 내용을 입력한다.

default-lease-time 600;    # IP 주소 임대 시간 (초).
max-lease-time 7200;    # IP 주소 임대 시간의 최대값.
option domain-name-servers 8.8.8.8, 8.8.4.4;    # DNS 서버 주소.

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.201 192.168.0.220;    # 임대할 IP 주소의 범위.
  option routers 192.168.0.1;    # 게이트웨이 주소. 두번째 랜카드의 IP 주소이다.
}

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.201 192.168.1.220;    # 임대할 IP 주소의 범위.
  option routers 192.168.1.1;    # 게이트웨이 주소. 세번째 랜카드의 IP 주소이다.
}

파일을 저장하고 편집기를 닫는다.

DHCP 서버를 재시작한다.

sudo systemctl restart isc-dhcp-server

3. 인터넷 연결 공유 구성

인터넷 연결 공유를 위한 1단계 작업은 IP 포워딩 활성화이다.

시스템에서 IP 포워딩이 가능하도록 한다.

sudo sysctl -w net.ipv4.ip_forward=1

2단계 작업은 iptables 명령으로 FILTER 테이블과 NAT 테이블을 구성하는 것이다.

FILTER 테이블의 모든 체인을 초기화한다.

sudo iptables -F

NAT 테이블의 모든 체인을 초기화한다.

sudo iptables -t nat -F

NAT 테이블에 IP 매스커레이딩을 적용한다.

iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE

여기서 enp3s0 은 인터넷에 직접 연결된 랜카드의 이름이다.

4. 테스트

우분투 서버를 활용한 유선 공유기가 완성되었다.

다른 PC 나 노트북의 랜 포트를 우분투 서버의 랜 포트와 연결한다. 각각의 PC 와 노트북은 DHCP 서버를 통해 자동으로 IP 주소를 할당받도록 구성되어야 한다. 각각의 장치들에서 인터넷 연결이 가능한지 확인해 보자.

Leave a Reply

Your email address will not be published. Required fields are marked *