관리 메뉴

bright jazz music

리눅스 네트워크 설정(Debian 계열, Ubuntu) 본문

OS 및 기타/리눅스

리눅스 네트워크 설정(Debian 계열, Ubuntu)

bright jazz music 2023. 3. 25. 23:54

https://www.baeldung.com/linux/network-interface-configure#5-full-example-configuration

이 포스팅은 위 페이지를 거의 그대로 참고하였다.

-----

 

 

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

 

 

 

Comments