본문 바로가기

programming/Linux

우분투 네트워크 오류 해결 [ubuntu network error]

1. 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: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:1b:21:8e:ee:74 brd ff:ff:ff:ff:ff:ff
3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 70:85:c2:82:c0:57 brd ff:ff:ff:ff:ff:ff
4: enp1s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:1b:21:8e:ee:75 brd ff:ff:ff:ff:ff:ff

우선 위 명령어로 장착되어 있는 NIC(랜카드)를 확인한다. 필자는 두 개 이상의 장치와 루프백(Lo)을 포함하여 4개의 장치가 인식되어 있습니다.
명령어를 통해 위와 같이 장치와 자신이 설정한 인터페이스와 연결되어 있는걸 확인할 수 있습니다.

1.1 NIC 장치는 인식이 되나 아이피를 할당받지 않은 경우

1.2 Lo 밖에 안뜨거나 자신의 장치가 없거나 안 뜨는 경우

  • $lshw -class network 으로 장치 인식
  • 장치가 연결이 되어있어도 해당 드라이버가 설치되어 있지 않거나 모듈이 올라가 있지 않아서 인식이 안될 수도 있음 (특히 r8169모듈의 경우 4.15버전의 커널에서 이슈가 됐었는데 업데이트 버전에서는 해결되었음)
  • 이럴 경우 $dmesg를 통해서 시스템 부팅 시 어떤 장치와 어떤 모듈이 실패했는지 확인
  • cd /usr/src/(리눅스버전이름 $uname -r로 확인 가능)으로 들어가서 driver/net 에있는 모듈 확인
  • 해당 드라이버의 모듈을 $make한후 $insmod를 통해 인식 (위 과정이 어려우면 블로그의 module comfile 참조)
  • 해당 랜카드가 windows만 지원하는 랜카드일 수도 있다..! 이 경우 해당 랜카드 모델명과 우분투 버전을 구글링해보자.

2. ifconfig -a 로 연결 상태 확인

>> 장치와 ip가 연결되어 있는지 확인
>> ip 주소, Mask등 확인

3. 장치에 아이피 할당 상태 확인

3.1 아이피 자동 할당(DHCP)

$ dhclient 장치명 ex) $ dhclient enp1s0f1

아이피 자동 할당을 위해 dhclient 명령어를 사용

3.2 아이피 수동 할당(STATIC)

$ifconfig 장치명 아이피 netmask 서브넷마스크 up $route add default gw 게이트웨이 ex) $ifconfig eno1s0f1 192.168.0.5 netmask 255.255.255.0 up $route add default gw 192.168.0.1

아이피 수동 할당을 위해 ifconfig, route 명령어를 사용

예시로 eno1s0f1이라는 장치에 아이피(192.168.0.5)와 서브넷마스크(255.255.255.0) 입력
route add default gw으로 게이트웨이(192.168.0.1) 입력

3.3 부팅시 네트워크 자동 연결

vi /etc/network/interfaces

#자동일경우 auto eno1s0f1 iface eno1s0f1 inet dhcp dns-nameserver 168.126.63.1 168.126.63.2 //kt dns # 수동일경우 auto eno1s0f1 iface eno1s0f1 inet static address 192.168.0.xxx netmask 255.255.255.0 gateway 192.168.0.1 dns-nameserver 168.126.63.1 168.126.63.2 //kt dns

4. service networking restart으로 재시작

service networking restart

>> 에러가 나올 경우

1. vi /etc/network/interfaces가 잘못되었을 확률이 크다.

고로 다시 interfaces 확인

2. ubuntu-GUI 사용 시 우측 상단의 GUI 인터페이스 네트워크 설정과 겹쳐서 에러가 뜰 수도 있음

GUI 인터페이스에 있는 네트워크 설정 모두 삭제

5. GUI 네트워크 매니저와 interfaces 충돌

GUI 네트워크 매니저와 ifconfig & interface의 네트워크 설정이 충돌되어 문제가 될 수 있음.
gui 네트워크 매니저 설정에서 모든 연결 삭제 후 ifconfig 명령어로 각 장치에 주소와 넷마스크 연결($ifconfig enp1s0 10.0.0.1 netmask 255.255.255.0) 그 후 /etc/network/interfaces 설정하면 충동 해결

6. route로 default gateway가 두 개 이상인지 확인

>> 그럴 경우 하나 삭제

7. ping

7.1 ping 8.8.8.8으로 외부 네트워크와 연결되는지 확인 // 8.8.8.8 Google DNS

ping 8.8.8.8

7.2 네트워크 카드가 두 개 이상일 경우 ping -I eno1s0f1 8.8.8.8으로 명확히 검사 (대문자 아이)

ping -I eno1s0f1 8.8.8.8

7.3 DNS주소 확인, ping www.google.com에 핑을 보내지는지 확인

ping www.google.com

nameserver
재부팅 시에도 가능하게 tail파일에 내용 추가 후 service resolvconf restart

8. 전부 수정한 뒤에 네트워크 재시작.

$service networking restart

$service network restart

그래도 안될 경우 $reboot

$reboot

네트워크 서비스 재시작을 명령해도 에러가 날 경우 컴퓨터 자체를 재부팅하는 것도 좋은 방법

9. 네트워크 어댑터 사용 중지하고 싶은 경우

ifdown 명령어를 통해서 사용중지 명령

$ifdown eno1s0f1

10. 랜카드(NIC)추가했을 경우

우분투에서 랜카드(NIC, Network Interface Card)를 추가하거나 VPS 가상 서비스에서 추가 요금을 주고 NIC를 추가했을 때 ip를 바로 할당받지 않은 상태가 된다.(windows로 치면 장치는 연결되었으나 드라이버가 설치되지 않은 상태)