###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, named와 lpd 등이 있다.
##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 할당받을 때 auto나 manual 둘중 하나의 방법을 사용하며 auto는 dhcp(동적할당), manual은 static 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
해당 명령어들 활용해서 문제들을 해결하면된다.
해당 내용은 프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.
'프로그래머스 > 리눅스' 카테고리의 다른 글
| 리눅스 기초(4-6) Bash 기초 a (0) | 2022.11.07 |
|---|---|
| 리눅스의 기초(4-5) ssh server (0) | 2022.11.06 |
| 리눅스 기초(4-3) Linux Admin#2 APT (0) | 2022.11.06 |
| 리눅스 기초(4-2) Package Manger (0) | 2022.11.06 |
| 리눅스의 기초 (4-1) -File System (basic) (0) | 2022.11.06 |