메뉴 건너뛰기

SayClub.org

리눅스(Linux)

1.현대의 리눅스 시스템에서 네트워크 설정하는 흔한 방법

  • - Network Manager 사용
  • - systemd 사용
     
  • 수동으로 설정하는 방법
    /etc/network/interfaces 파일 설정(데비안, 우분투 계열)

 

이 포스팅에서는 /etc/network/interfaces 파일을 사용하여 수동으로 네트워크를 설정하는 방법을 알아본다.

 


2.Network Interface란?

  • 컴퓨터와 네트워크 사이의 연결 지점
  • 즉, 리눅스 시스템이 네트워킹의 소프트웨어 측면을 하드웨어에 연결하는 방식.
     

2.1. Network Interface 유형

리눅스 시스템은 두 가지 타입의 네트워크 인터페이스를 구분한다.

  • physical network interface (물리적 네트워크 인터페이스)
  • virtual network interface (가상 네트워크 인터페이스)


    물리적 네트워크 인터페이스(이하 물리적 인터페이스)는 아래와 같은 하드웨어 네트워크 장치를 의미한다.
  • NIC (Network Interface Carde = Ethernet Card = Lan card)
  • WNIC (Wireless Network Interface Card, 무선 랜카드)
  • Modem

    가상 네트워크 인터페이스(이하 가상 인터페이스)는 하드웨어 장치를 의미하지는 않는다. 그러나 이것은 네트워크 장치와 연결돼 있다. 

이 때의 네트워크 장치는 물리적 인터페이스일 수도 있고 또 다른 가상 인터페이스일 수도 있다. 예) 가상 브릿지
 

2.2. Network Interface Name 


리눅스 시스템은 두 가지 스타일을 사용하여 네트워크 인터페이스를 명명한다.

1) The old style
오래된 방식은 단순히 순서에 따라 장치를 명명한다.
: eth0 (이더넷 인터페이스 0번), eth1(이더넷 1번), wlan0 (무선랜 인터페이스 1번)

2) The new style
: enp3s0, wlp2s0
a새로운 방식은 하드웨어 위치에 따라 장치를 명명한다.

ls 명령어를 사용해서 /sys/class/net 디렉토리에 존재하는 사용 가능한 네트워크 인터페이스를 확인할 수 있다.
 

$ ls /sys/class/net
eth0 lo wlan0

ip link 명령어를 사용하여 더욱 상세한 정보를 얻을 수 있다.
 

$ ip link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 54:ee:74:c1:19:92 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:f0:27:9a brd ff:ff:ff:ff:ff:ff permaddr 94:e9:79:fd:51:5d


(eth0 인터페이스의 state가 UP인 것을 확인할 수 있다. wlan0의 state는 DOWN이다.
ip는 나오지 않는다. ifconfig 또는 ip addr 명령어를 사용해서 ip를 확인할 수 있다.

 

ip addr 명령어를 사용해서 IP address와 관련된 정보를 더 확인할 수 있다.

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 54:ee:74:c1:19:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.122/24 brd 192.168.0.255 scope global dynamic noprefixroute enp3s0
       valid_lft 80953sec preferred_lft 80953sec
    inet6 fe80::bb4c:8096:6:3695/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:f0:27:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.13/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 42974sec preferred_lft 42974sec
    inet6 fe80::f73c:2d98:746f:9582/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

 

3. /etc/network/interfaces 파일이란?

/etc/network/interfaces 파일은 데비안 계열 배포판에서 네트워크 설정을 위해 사용되는 파일이다.

네트워크 세팅의 대부분은 이 파일을 사용하여 작업 가능하다. 
/etc/network/interfaces를 수정하여 네트워크 인터페이스에 정적(고정), 또는 동적ip를 할당할 수 있다.
라우팅 정보나 DNS 서버를 세팅해 줄 수도 있다.

더불어 우리가 네트워크 인터페이스 관리 명령어를 사용할 때, 이 파일을 기반으로 인터페이스를 시작하거나 종료한다. e.g. $ ifup eth0, ifdown eth0

 

4. /etc/network/interfaces 를 사용해서 네트워크 설정하기


4.1 /etc/network/interfaces 파일 구문

auto <interface>
:부팅과 동시에 인터페이스를 활성화 한다.

 

iface <interface> <address_family> <method>
: iface 구문으로 인터페이스를 선언한다.

예시1) 시스템 내부 통신용으로 사용할 인터페이스를 설정하는 경우

iface lo inet loopback 

lo: loopback의 약자. 해당 컴퓨터 내부에서 통신하기 위해 사용하는 가장 인터페이스를 의미한다. 

inet: internet protocal family(IPv4) 이다. 

loopback: 127.0.0.1을 의미


예시2) 해당 인터페이스에 대해 동적으로 IP를 할당하려는 경우

iface eth0 inet dhcp

: 인터페이스명을 eth0으로 선언하고 dhcp를 사용하여 IP 주소를 동적으로 받는다.

 

예시3) 아이피를 고정하여 사용하려는 경우

iface eth1 inet static	#static을 이용하여 인터페이스를 정의힌다. 인터페이스 명은 원하는대로 적어준다. 여기서는 eth1로 설정하였다. 
address 192.168.1.100	#사용하려는 아이피를 적어준다.
netmask 255.255.255.0	#네트워크 마스크를 적어준다. 
gateway 192.168.1.1	#게이트웨이를 적어준다.
dns-nameservers 8.8.8.8	#DNS를 적어준다. 둘 이상을 적을 경우 스페이스를 넣어 나열해준다. dns-nameservers 8.8.8.8 219.250.36.130

 

예시3) 인터페이스에 IP를 부여하지 않고 정의하는 방법

iface <interface> inet manual

 

 

예시4) 인터페이스 활성화/비활성화 전/후에 설정할 명령어나 스크립트 파일을 설정는 방법

 

#해당 인터페이스를 활성화 하기 '전'에, 명령어나 스크립트를 실행하려는 경우
pre-up <command>
#해당 인터페이스를 활성화(ifup) 한 '후'에, 명령어나 스크립트를 실행하려는 경우
post-up <command>
#해당 인터페이스를 사용을 중단하기 '전'에 명령어나 스크립트를 실행하려는 경우
pre-down <command>
#인터페이스를 사용을 중단한(ifdown) '후'에 명령어나 스크립트를 실행하려는 경우
post-down <command>

 

4.2. 동적 설정

아래와 같이 두 구문을 /etc/network/interfaces에 추가한다.
 

auto eth0	#부팅과 동시에 eth0 인터페이스를 ifup
iface eth0 inet dhcp	#동적으로 아이피 받는다.

 

4.3. 정적 설정

iface eth0 inet static	#dhcp를 static으로 변경한다.
address 192.168.1.100	#고정할 IP 주소를 적어준다.
netmask 255.255.255.0	#서브넷 마스크를 적어준다.
gateway 192.168.1.1	#사용할 게이트웨이를 적어준다.

 

4.4. 네트워크 인터페이스 활성화 / 비활성화 하기

수동으로 네트워크 인터페이스를 활성화 또는 비활성화 하려면 ifup과 ifdown 명령어를 사용해야 한다.
이 명령어들을 실행하기 위해서는 super user권한이 있어야 한다.

$ sudo ifup eth0
# eth0이라는 네트워크 인터페이스를 활성화 한다.
$ sudo ifdown eth0
# etho0이라는 네트워크를 비활성화 한다.


4.5. 전체 예제

$ sudo vi
#	/etc/network/interfaces  파일을 수정하기 위해 vi 텍스트 에디터로 파일을 연다. 
#	만약 존재하지 않는다면 파일을 생성한다.
#/etc/network/interfaces의 내부#

auto eth0 #부팅 시 eth0를 활성화 한다.
iface eth0 inet static	#eth0인터페이스에 대해 고정 IP(static ip)를 사용한다.
    address 192.168.1.100	#고정할 IP주소는 192.168.1.100이다.
    netmask 255.255.255.0	#서브넷 마스크는 255.255.255.0이다.
    gateway 192.168.1.1	#게이트웨이는 192.168.1.1이다.
dns-nameservers 8.8.8.8 8.8.4.4	#DNS를 설정한다. 주 DNS는 8.8.8.8, 부 DNS는 8.8.4.4이다.
pre-up /usr/local/sbin/start-iptables.sh	#인터페이스를 활성화 하기 전에 /usr/local/sbin/start-iptables.sh 스크립트를 실행한다. (방화벽을 실행한다는 예시)
post-up /usr/local/sbin/backup-log.sh	#해당 인터페이스를 비활성화(ifdown)하기 전에 해당 /usr/local/sbin/backup-log.sh 파일을 실행한다.
:wq

파일을 저장하고 닫는다.
 

$ sudo ifdown eth0; sudo ifup eth0 #변경사항을 적용하기 위해 인터페이스를 껐다가 켠다.



 

5. /etc/network/interfaces 파일이 존재하지 않는 경우



리눅스 시스템에서 네트워크를 설정하는 방법은 여러 가지가 존재한다. 
만약 /etc/network/interface 파일이 존재하지 않는다면 해당 리눅스 시스템의 네트워크가 다른 툴에 의해 관리된다는 것을 의미한다.

데스크탑 버전을 비롯한 다수의 배포판에서는 네트워크를 관리하기 위해 network manager를 사용한다.
따라서 /etc/network/interface 파일이 존재하지 않을 수 있다.

이 경우는 /etc/network/interface 파일의 설정이 방해 받지 않도록 network manager를 비활성화 환다. 명령어는 아래와 같다.

$ sudo systemctl stop NetworkManager.service
$ sudo systemctl disable NetworkManager.service

 

번호 제목 글쓴이 날짜 조회 수
75 Rocky Linux 및 NetworkManager를 사용한 정적 경로 설정 미르다테 2025.04.03 15
74 Ubuntu 22.04 LTS 패키지 업데이트 시 오류 해결 방법 미르다테 2025.02.19 22
73 우분투 리눅스(Ubuntu Linux)에서 Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. 오류 해결 방법 미르다테 2025.02.09 27
72 연속적으로 명령 실행시키기 (;과 &와 &&의 차이) 미르다테 2025.02.03 37
71 내 공인IP 확인하기(스크립트) 미르다테 2025.02.02 21
» 리눅스 네트워크 설정(Debian 계열, Ubuntu) 미르다테 2025.01.16 25
69 우분투(Ubuntu) 리눅스 apt 패키지 설치 이력 확인 미르다테 2025.01.14 110
68 Rocky Linux 9 고정 라우팅 경로 설정 방법 미르다테 2025.01.10 115
67 Rocky Linux 9에 Webmin 설치하는 방법 미르다테 2025.01.07 107
66 라이믹스(Rhymix) 애드온 '링크 프리뷰' 설치정보 미르다테 2025.01.06 108
65 Rocky Linux 9에 FFmpeg를 설치하는 방법 미르다테 2025.01.06 100
64 Ubuntu 24.04에 Webmin을 설치하는 방법 미르다테 2024.12.31 96
63 Ubuntu 24.04 LTS에 Docker 설치하기 미르다테 2024.12.31 122
62 Rocky Linux Docker, Docker Compose 설치 방법 미르다테 2024.12.30 109
61 라이믹스(Rhymix) 백업 및 복원 방법 미르다테 2024.12.30 117
60 Rocky Linux - 라이믹스(Rhymix) 설치하기 미르다테 2024.12.30 89
59 Rocky Linux 비밀번호 입력 초과로 인한 계정잠김 확인 및 해제 방법 미르다테 2024.12.30 98
58 Arch Linux mirrorlist 갱신하기 미르다테 2024.12.30 112
57 [중요] RedHat 계열 리눅스 서버 취약점 조치 방법 정리 - MirDaTe 미르다테 2024.12.30 102
56 [Arch Linux] pacman을 사용하여 시스템 업그레이드 시 패키지 손상으로 인한 업그레이드 안되는 증상 해결방법 미르다테 2024.12.30 125
위로