임베디드 장비이든 혹은 웹 서버이든 IP를 고정해야 할 경우들이 있다. 

DHCP로 IP를 자동 할당 받는 경우 IP가 고정이 아닌 유동적으로 바뀔수가 있기 때문에 고정 IP(static IP) 설정하는 법은 여러 모로 필요한 작업이다.

본 포스트에서는 Linux Ubuntu 상에서 IP를 어떻게 고정으로 할당할수 있을 것인지를 정리하고자 한다.

IP를 고정시키기 위해서는 다음의 정보가 필요하다.


-. 고정시킬 IP Address

-. Net mask

-. Default gateway

-. DNS Server


여기서 외부로 나갈 필요가 없는 상황이라면 즉 인터넷을 할 필요가 없이 임베디드 장비와 PC간의 통신만 되면 된다거나 아무튼 외부 통신을 필요로 하지 않는다면 gateway 정보나 DNS server 정보는 없어도 된다.


우선 현재의 네트워크 자원들에 대해 확인부터 해 보자.


# ip link show

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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

    link/ether 08:00:27:ff:a4:58 brd ff:ff:ff:ff:ff:ff


# 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 08:00:27:ff:a4:58 brd ff:ff:ff:ff:ff:ff

    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3

       valid_lft 83702sec preferred_lft 83702sec

    inet6 fe80::c33f:ad86:8225:3597/64 scope link 

       valid_lft forever preferred_lft forever


위의 정보를 보면 2개의 네트워크 interface가 보인다. 하나는 lo인데 이는 loop back으로 자기 자신을 나타내는 interface이다. 

우리가 고정 IP를 설정할 네트워크는 enp0s3로 명명되어진 이 interface이다.

link/ether는 이 장비가 이더넷 장비라는 뜻이고 IP 주소는 10.0.2.15이다.

참고로 위의 정보는 Virtual Box에서 실행되는 Ubuntu이다.

보통 공유기 하위에 물려 있는 경우라면 192.168.x.x와 같은 형태가 될 것이다.


이제 IP정보를 설정해 보자. 아래 파일을 열어 보면 대체로 이런 정보가 들어 있다.


# vi /etc/network/interfaces


# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo

iface lo inet loopback


위의 파일 내용에 고정 IP 할당에 대한 정보를 아래와같이 입력하고 파일을 저장한다.


auto enp0s3

iface enp0s3 inet static

address 192.168.0.77

netmastk 255.255.255.0

gateway 10.0.2.2

dns-nameserver 8.8.8.8 8.8.4.4


gateway는 현재의 gateway를 그대로 사용했고 dns-nameserver는 구글 것을 사용했다.

현재의 gateway 정보를 알려면 다음 명령으로 확인할 수 있다.


root@joe-VirtualBox:/etc/network# ip route

default via 10.0.2.2 dev enp0s3  proto static  metric 100 

10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.15  metric 100 

169.254.0.0/16 dev enp0s3  scope link  metric 1000 


현재의 gateway(인터넷을 할수 있는 출입문, 통신이 외부로 나갈수 있는 출입문 IP)정보는

default via 10.0.2.2 dev enp0s3로 되어 있는 10.0.2.2이다.

아래는 또 다른 경우에 대한 정보이고 192.168.0.1이 현재의 gateway이다.


root@localhost:/etc/network# ip route

default via 192.168.0.1 dev eth0  metric 100

169.254.0.0/16 dev eth0  scope link  metric 1000

192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.88


위의 정보만으로 네임서버가 안된다면 다음 정보를 추가하도록 하자.

네임서버란 www.google.com, www.naver.com과 같이 숫자로 된 IP가 아닌 사람이 쉽게 파악할수 있는 형태의 IP 지정 방식이다.

아래의 경로에 tail이라는 파일을 생성해서(만일 없다면 새로 만든다) nameserver 8.8.8.8을 입력하고 파일을 저장한다.


# vi /etc/resolvconf/resolv.conf.d/tail

nameserver 8.8.8.8


이상으로 설정을 완료되었고 네트워크 장비를 재시작 한다.


ip addr flush enp0s3 && systemctl restart networking.service


만일 구버전 리눅스라면 위의 명령이 실행되지 않을수 있다. 그럴 경우는 아래와 같이 하자.


# ip addr flush enp0s3 && /etc/init.d/networking restart


여기까지가 Ubuntu 시스템 상에서의 고정 IP 설정하는 법이다.

정상적으로 설정이 되었다면 터미널 창에서 ping이 정상적으로 송수신될 것이다.


# ping www.google.com


위 명령이 정상적으로 수행된다면 IP 설정과 nameserver 설정이 제대로 된 것이다.

그런데 ping 172.217.24.4과 같이 IP로는 실행되나 도메인 네임으로는 수행되지 않는다면 이건 nameserver 설정이 잘못되었다는 뜻이다.



+ Recent posts