###1. Debian NM

##1. Network Manager 설정

#1. 네트워크 매니저 장점

네트워크 매니저는 daemon으로 작동하여 network configuration을 수행하며 자동으로 network connection 을 관리(연결감지,해제,재시도)한다 

Dbus 기반으로 동적 상태를 감지함으로써 다른 app이나 daemon들에게 네트워크 정보를 제공및 관리를 위한 권한을 제공할 수 있다.

현재 systemd기반의 Linux distribution들에게 동일한 방식의 경험을 통일된 명령어를 사용함으로써 제공해줄 수 있다.
**현재 사용하고있는 리눅스는 systemed기반으로 바뀌어가고 있다. systemd기반은 동적상태확인과 명령어가 통일됨에따른 각 배포판 마다 다른 기능들 배울 필요없다.

또한 다양한 기능들(이더넷, 와이파이, 모바일 브로드밴드 등)에게 플랫폼을 제공하므로, 네트워크, 연결관리를 수월하게 할 수 있다
**이더넷, 와이파이, 모바일 브로드밴드등 네트워크 기능들을 통합해 제공함에 따라 네트워크 연결관리도 쉬워진다.

 

**데몬(daemon) 이란 서비스의 요청에 대해 응답하기 위해 오랫동안 실행중인 백그라운드(background) 프로세스다. 유닉스(리눅스 포함) 운영체제에서 이름이 "d"로 끝나는 프로세스들이 대표적인데 inetd, httpd, nfsd, sshd, namedlpd 등이 있다.

https://blogger.pe.kr/770

 

##2. legacy : ifconfig, route, ip nmcli 

#1. UNIX standard command(POSIX)

1) ifconfig

 => interface config. : query/control  (구식 명령어)

2) route

 => routing table: query/control

 

#2. Non-standard command(Linux specific)   // 리눅스에만 존재하는 비표준 명령어

1) ip: net. commands on EL6

2) nmcli: new commands on EL7 (NetworkManager CLI)

3)ethtool,pifconfig & pethtool(python-ethtool)

 

##3  nmcli

#1 nmcli : Network Manager CLI tool

1) 네트워크에 관련된 대부분의 기능을 가짐

2) 조회 및 설정 가능

 

##4 nmcli: general

단순 조회성 명령어가 아닌 설정하거나 중요한 정보를 본다하면 root 권한이 필요

 #1 nmcli g[eneral]     // eneral 생략가능

 

# nmcli g    현재  네트워크 상태를 보여줌

#2 networking 상태조회

 1)# nmcli n

#3 n[etworking]

네트워크 설정이 안되는 경우 nmcli n 을 조회 하여 네트워크가 꺼져있다하면

1) # nmcli n on   명령어 통해 켜준다

2) # nmcli n off  -네트워크 off

 

#4 net. device 확인(조회)

 1) nmcli (Command-Line-tool for NetworkManager)

# nmcli dev

device name이 ens33 이다.

 

 

#5. net(work). device naming

1) eth#[:n]

 a) eth0, eth1, eth0:0, eth0:1

  ==> old style  요즘에 잘 안씀

#6 Consistent Network Device Naming(new naming)

  ==> convention for naming Ethernet adapters in Linux

  ==> Stable, predictable, reliable naming of all network interfaces by default, with on-board tools

        .eg  eno1, enp5s0

 

pc는 이더넷장치가 하나이지만, 서버는 이더넷장치가 복수로 잡힌 경우들이 있다. main board에 장치를 꽂는 부분이 있다면, 슬롯에 꼽는 이더넷 카드 2개를 꼽았다. 네트워크 장치선이 카드 에 들어간다. ip주소가 할당된다. 고친다거나 특정작업 시 ip주소를 고쳐야하는데, 동일 카드가 동일회사면 어느게 0번인지 알 수 없다.eth 0 인지 eth 1 알 수 있는법은 하드웨어 분리해야 알수있음

하드웨어적으로 바로 알수 있게 네트워크 디바이스를 바꾸자라는 취지로 Consistent Network Device Naming(new naming) 기법이 등장

 

##5  Consistent Network Device Naming(new naming)

#1.  prefix

 1) en : ethernet

 2) wl : wireless lan

 3) ww : wireless wan

#2. following device name

o<index> on-board device index number
s<slot>[f<function>][d<dev_id>] hotplug slot index number
x<Mac> MAC address
p<bus>s<slot>[f<function>][d<dev_id] PCI geographical location
p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface> USB port number chain

enp5s0  해석.

en:ethernet

p5: PCI 5

s: slot 0

 

네트워크 디바이스를 prefixed naming통해 쉽게 찾을 수 있다.

 

 

#3. nmcli : command

 

nmcli <g | n | r | c | d>[나머지단어들]

=> general, networking, radio, connection, device

 

nmcli connection s[how] 를 통해 정보를 full 로 볼 수있다.

 

 

ipv[46].*: 설정된값 (소문자)

IP[46].*:할당된값 (대문자)

외부에서 다른 툴로 ip바꾸면 설정값과 할당값 다를 수 있다. 설정바꿔도 다시 reload하지 않으면 이전의 값이 들어갈 수 있다. 이렇게 설정값과 할당값은 다를 수 있음

 

 

#4 nmcli : con : property 

1) 주요 속성

 a) ipv4.method

 => auto | manual

 => auto = dhcp

 => manual = static ip

 

2) ipv4.addr

 => IPv4 address CIDR 표기법 = 192.168.110.50/24

3)ipv4.gateway

 =>Gateway IP

4) ipv4.dns

 =>DNS server IP

 

 

** ip 할당받을 때 automanual 둘중 하나의 방법을 사용하며 autodhcp(동적할당), manualstatic ip(정적ip할당)[사용자가 수동으로 IP를 입력]이다.

** ipv4.addr ( ip ver04) 주소 표기법 = 192.168.110.50/24 // 24는 비트마스크로 ip/bit mask 형태

** ipv4.gateway = Gateway IP에 넣고

** ipv4.dns = DNS server IP 에 넣기

 

#5 optional prefix of property

 a) +

  =>  기존 값을 유지한채 추가적으로 값을 넣음

b) -

 => 해당 부분 없앰

c) none

 => 아무것도 없으면 값 교체

 

ip주소 할당뿐만아니라 어떤 특성 할당 시 추가 값을 넣을 때 +로 넣으면 해당부분 없음.

none: 현재값을 교체.

 

#6 nmcli로 connection을 down 시키고 show 로 확인해보기./

 

# nmcli d

# nmcli con down "유선 연결 1"       // "커넥션NAME"

# nmcli c s "유선 연결 1"

커넥션을 끊었기에 IP4.*  부분이 출력되지 않음.

#nmcli con up "유선 연결 1"

#nmcli c s "유선 연결 1"
커넥션을 연결해서 IP.* 부분이 출력

 

 

#7 nmcli 속성 변경

Connection Id 를 device name 과통일 시키기.

 

#8 IP 주소 변경

IP 변경 전 현재 시스템의 IP를 메모하기.

 

nmcli c s 에서 NAME 확인 (ens33)

# nmcli c s ens33 입력 시 IP 주소 확인 가능

ipv4.method: auto 는 DHCP 의미.

해당 IP 와 GATEWAY 기억해야함.

 

#9 nmcli 속성들 이용한 IP 변경.

nmcli c mod ens33 ipv4.method manual ipv4.addresses 192.168.xx.110/24 \
> ipv4.gateway 192.168.xx.2 +ipv4.dns 8.8.8.8                 //+: 추가 모드로 들어가기에 8.8.8.8 DNS 를 추가하란의미

# nmcli c s ens33 을 통해 IP4 값 확인하기

# nmcli c down ens33 && nmcli c up ens33     //routing table 변경없이 IP  변경 정도를 반영하는 경우는 UP만 다시하면 됨

 

 

# nmcli c down ens33 && nmcli c up ens33

nmcli c down ens33 연결 성공시 연달아 nmcli c up ens33eh 성공할거임.

 

그리고 # nmcli c s ens33을 통해 확인해보자

 

 

#10  virtual IP 추가

# nmcli c mod ens33 +ipv4.addresses 192.168.110.181/24
# nmcli c mod ens33 +ipv4.addresses 192.168.110.182/24
# nmcli c up ens33

# nmcli c s ens33

 

+:  하나의 서버에 여러 ip 할당해서 서버를 논리적 서버로 표현시 사용

ip제거 시 +대신 제거

 

여러 ip를 추가함에 따라 위와 같이 출력된다.

 

#11 virtual IP 삭제

# nmcli c mod ens33 -ipv4.addresses 192.168.110.181/24
# nmcli c mod ens33 -ipv4.addresses 192.168.110.182/24

nmcli c s ens33

2개 Virtual IP 삭제 후 모습이다.

 

 

설정이 꼬이면 아예 기존의 설정을 삭제한 후 새로 만들자.

# nmcli c del ens33       // 설정삭제

# nmcli c s

# nmcli d s       //ens33이 삭제됨

ens33 삭제됨

 

 

기존의 설정을 삭제했다가 새로 만들자.

 

nmcli c add con-name ens33 ifname ens33 type ethernet \
ip4 192.168.110.161/24


connection name을  ens33으로
if(interface)name을 ens33  으로  ifname은 해당 device name

 

 

#12 DNS 추가

# nmcli c mod ens33 +ipv4.dns 8.8.8.8

# nmcli c s ens33 | egrep '(ipv4.addr|ipv4.gateway|ipv4.dns)'

 

#13 device 자체가 올라오지 않는 경우에는?

1) nmcli dev connect <device nmae>

  => 장치가 자동으로 생성됨.

물론 위는 connected이지만 # nmcli disconnected 면 dev connect ens33 

 

 만약 # nmcli g 를 통해 state 가 asleep 이 되있다면 디바이스 connect를 하기 전에 networking을 켜줘야한다.

 

# nmcli networking

disabled 면 켜줘야함

# nmcli networking on

 

# nmcli g 

해당 명령어들 활용해서 문제들을 해결하면된다.

 

 

해당 내용은  프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.

+ Recent posts