Categories
Linux Network

우분투 20.04에서 호스트네임 변경하기

1. 호스트네임 확인하기

hostname 명령으로 호스트네임을 확인한다.

hostname

이 명령은 호스트네임만 출력한다. 커널, 아키텍처 등 부가적인 정보를 확인할 때는 hostnamectl 명령을 사용한다.

hostnamectl

2. 임시로 호스트네임 변경하기

호스트네임을 임시로 변경해 보자.

hostname xtmci.com

위 명령은 호스트네임을 xtmci.com 으로 변경한다. 임시로 변경한 것이므로 시스템을 재시작하면 이전 호스트네임으로 돌아간다.

3. 유지되는 호스트네임으로 변경하기

변경한 호스트네임이 시스템 부팅 후에도 유지되도록 해 보자.

/etc/hostname 파일을 연다.

sudo vi /etc/hostname

이 파일에는 현재 호스트네임이 기록되어 있다.

oldname.com

이것을 원하는 호스트네임으로 변경한다.

xtmci.com

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

시스템을 재부팅한다.

sudo shutdown -r 0

4. 재부팅 없이 호스트네임 변경하기

시스템을 재부팅하지 않고 계속 유지되는 호스트네임으로 변경하는 방법도 있다. hostnamectl 명령을 사용하면 된다.

hostnamectl set-hostname xtmci.com

위 명령은 호스트네임을 xtmci.com 으로 변경한다. 해당 호스트네임은 시스템을 재부팅해도 계속 유지된다.

Categories
Linux 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 주소를 할당받도록 구성되어야 한다. 각각의 장치들에서 인터넷 연결이 가능한지 확인해 보자.

Categories
Linux Network

hostapd: PC를 무선 공유기로 만드는 방법

무선 랜카드를 이용해서 PC 를 무선 공유기로 사용하는 방법을 알아보자.

1. 무선 랜카드의 AP 모드 지원 여부 확인

무선 랜카드가 AP 모드를 지원하는지 확인한다.

iw list | grep “Supported interface modes” -A 10

출력 결과에 AP 가 표시되면 무선 랜카드가 AP 모드를 지원하는 것이다. 그렇지 않다면 무선 랜카드를 다른 제품으로 교체해야 작업을 계속할 수 있다.

2. 네트워크 인터페이스 구성

네트워크 인터페이스를 구성하자.

Netplan 구성 파일을 연다.

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

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

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:    # 인터넷에 연결된 유선 랜카드.
      dhcp4: true
    wlan0:    # 무선 랜카드
      dhcp4: false
      addresses:
      - 192.168.0.101/24    # 고정 IP 주소를 부여한다.

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

변경한 내용을 시스템에 적용한다.

sudo netplan apply

3. 인터넷 연결 공유 설정하기

인터넷 연결 공유 설정을 한다.

IP 포워딩을 활성화한다.

sudo sysctl -w net.ipv4.ip_forward=1

아래와 같은 iptables 명령으로 FILTER 테이블과 NAT 테이블을 구성한다.

# FILTER 테이블의 모든 체인을 초기화한다.
sudo iptables -F

# NAT 테이블의 모든 체인을 초기화한다.
sudo iptables -t nat -F

# NAT 테이블에 IP 매스커레이딩을 적용한다.
iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE

4. DHCP 서버 설정하기

DHCP 서버 구성 파일을 연다.

sudo vi /etc/dhcp/dhcpd.conf

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

default-lease-time 600;
max-lease-time 7200;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.201 192.168.0.220;
  option routers 192.168.0.101;    # 게이트웨이 주소. 무선 랜카드의 IP 주소이다.
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

DHCP 서버가 무선 랜카드를 통해 클라이언트의 요청에 응답하도록 한다.

/etc/default/isc-dhcp-server 파일을 열고 아래와 같이 작성한다.

INTERFACESv4="wlan0"    # 무선 랜카드의 인터페이스 이름이다.
INTERFACESv6=""

변경한 내용를 시스템에 적용한다.

sudo systemctl restart isc-dhcp-server

5. hostapd 의 설치와 구성

hostapd 는 액세스 포인트와 인증 서버를 위한 데몬 프로그램이다.

hostapd 패키지를 설치한다.

apt install hostapd

hostapd 의 구성 파일을 만든다.

vi ~/hostapd/hostapd.conf

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

Wi-Fi 인터페이스를 지정한다.

interface=wlan0

무선 랜카드 드라이버를 지정한다. 대부분의 경우에 nl80211 이면 된다.

driver=nl80211

공유기의 SSID 를 지정한다.

ssid=xtmci

Wi-Fi 인증 방식을 지정한다. 1은 WPA 방식이고 2는 WPA2 방식이다. 3은 2가지 방식을 모두 사용한다는 의미이다.

wpa=2

공유기 암호를 지정한다.

wpa_passphrase=pass1234

암호화 방식을 지정한다.

wpa_key_mgmt=WPA-PSK

인증 방식이 WPA 인 경우에 사용할 암호화 프로토콜을 지정한다.

wpa_pairwise=TKIP

인증 방식이 WPA2 인 경우에 사용할 암호화 프로토콜을 지정한다.

rsn_pairwise=CCMP

Wi-Fi 채널을 지정한다.

channel=6

Wi-Fi 모드를 지정한다. a, b, g, n 중 하나를 지정하면 된다.

hw_mode=g

MAC 주소 필터링 방식을 지정한다.

macaddr_acl=0

인증 알고리즘을 지정한다. 1은 오픈 시스템 인증 방식을 가리킨다. 2는 오픈 시스템 인증 방식과 공유키 인증 방식을 모두 사용한다는 의미이다.

auth_algs=1

SSID 를 공개할 것인지 여부를 지정한다. 0으로 하면 공개하게 되고 1로 하면 공개하지 않게 된다.

ignore_broadcast_ssid=0

완성된 ~/hostapd/hostapd.conf 파일의 내용은 다음과 같다.

interface=wlan0
driver=nl80211
ssid=xtmci
wpa=2
wpa_passphrase=pass1234
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
channel=6
hw_mode=g
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0

hostapd 를 실행한다.

sudo hostapd -B ~/hostapd/hostapd.conf

-B 옵션은 백그라운드 상태에서 실행한다는 의미이다.

6. 테스트

PC와 무선 랜카드를 이용한 무선 공유기가 완성되었다. 스마트폰 등 모바일 기기에서 무선 공유기에 접속해 보자. 접속 방법은 일반 공유기에 접속할 때와 같다. 네트워크 이름 (SSID) 을 찾아 선택한 후 암호를 입력하면 된다.

Categories
Linux Network

리눅스 DHCP 서버의 설치 및 설정 방법

아래 명령으로 DHCP 서버를 설치한다.

sudo apt install isc-dhcp-server

DHCP 서버의 설정 파일은 /etc/dhcp/dhcpd.conf 이다. 이 파일을 백업한다.

sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

같은 이름으로 새로운 설정 파일을 만든다.

sudo vi /etc/dhcp/dhcpd.conf

아래와 같은 내용을 입력한다. 해시 표시 (#) 뒤에 있는 설명 부분은 입력하지 않아도 된다.

# IP 주소 임대 시간은 600초이다.
default-lease-time 600;
# 최대 IP 주소 임대 시간은 2시간이다.
max-lease-time 7200;
# 해당 DHCP 서버가 공식적인 서버임을 의미한다.
authoritative;

# 서브넷을 정의한다.
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 주소
  option domain-name-servers 8.8.8.8, 8.8.4.4;    # DNS 서버의 IP 주소
}

특정 클라이언트가 항상 똑같은 IP 주소를 할당받도록 해 보자. 이 경우에 해당 클라이언트의 MAC 주소가 필요하다.

아래 명령으로 MAC 주소를 알아낸다.

ip addr show

서브넷을 정의한 괄호 안에 아래 내용을 추가한다.

host client-221 {
  hardware ethernet 69:41:10:91:11:22;    # MAC 주소
  fixed-address 192.168.2.221;    # IP 주소
}

다음은 /etc/dhcp/dhcpd.conf 파일의 전체 내용이다.

default-lease-time 600;
max-lease-time 7200;
authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.201 192.168.0.220;
  option routers 192.168.0.1;
  option domain-name-servers 8.8.8.8, 8.8.4.4;

  host client-221 {
    hardware ethernet 69:41:10:91:11:22;
    fixed-address 192.168.2.221;
  }
}

DHCP 서버의 또다른 설정 파일은 /etc/default/isc-dhcp-server 이다. 이 파일은 DHCP 서버와 네트워크 인터페이스를 바인딩하는 역할을 한다. 이러한 바인딩은 DHCP 서버에 여러 개의 네트워크 인터페이스가 있을 경우에 필요하다.

/etc/default/isc-dhcp-server 파일을 열고 아래와 같은 내용으로 작성한다.

INTERFACESv4="enp4s0"
INTERFACESv6=""

enp4s0 은 네트워크 인터페이스 이름이다. DHCP 서버는 이 인터페이스를 통해 클라이언트 요청에 응답하게 된다.

모든 설정을 마쳤다. 변경한 내용을 적용하기 위해 DHCP 서버를 재시작한다.

sudo systemctl restart isc-dhcp-server

DHCP 서버의 동작 상태를 확인해 보자.

sudo systemctl status isc-dhcp-server