Linux network system
Linux network system
Terminology : network system
- Network 설정에 필요한 기초 용어
- hostname : primary hostname, FQDN
- TCP/IP : IP address(IPv4, IPv6),subnet mask, gateway
- NIC : Network Interface Card == 랜카드
- Wired Network (Wired connection) : 유선 네트워크 (유선 연결)
- Wireless Network (Wirelss connection) : 무선 네트워크( 무선 연결)
- LAN : Local Area Network
- WAN : Wide Area Network
네트워크 이름 : host name
- 사람의 이름과 컴퓨터 이름 비교
- 사람의 이름 : Richard Stevens
- 컴퓨터 이름 : access.redhat.com
- 호스트이름
- 사람의 이름(given name + family name)에 해당
- access 또는 access.redhat.com
- Domain address
- 사람의 family name에 해당
- redhat.com
FQDN, hostname
- Hostname에는 중의적의미가 있다.
- domain을 제외한 호스트 이름
- domain을 포함한 FQDN
- FQDN : Fully Qualified Domain Name
- fedora.redhat.com = hostname = FQDN
- 도메인 내에서 유일하게 구별 가능한 이름
- 도메인주소는 체계적인 구조를 가짐 (eg. devel.fclinux.or.kr)
- kr : 한국 주소
- or : 단체
- fclinux : 단체 이름
- devel : 단체 내에서 유니크한 컴퓨터 이름
- fedora.redhat.com = hostname = FQDN
- special hostname
- localhost
- 항상 자기 자신을 의미하는 주소가 매핑된다.
- IPv4 = 127.0.0.1
- IPv6 = ::1
- 유명한 인터넷 유머도 있다.
I hacked 127.0.0.1
- 무지함은 스스로를 해친다.
- localhost
IP 주소
- IPv4
- version 4
- 32bit 주소 체계 : 8bit 씩 끊어서
xxx.ooo.xxx.ooo
의 식으로 읽음
- IPv6
- version 6
- 128bit 주소 체계
- IPv4의 주소가 부족한 현상으로 인해서…
Apple는 공식적으로 IPv6만 사용한다.
- IPv4의 주소가 부족한 현상으로 인해서…
IPv6 address
- 128bit address
- IPv4-mapped IPv6
::ffff:IPv4_addr
- ex :
58.232.1.100
==::ffff:58.232.1.100
- Link-local Unicast
FE80::/10
- Documentation IPv6 Address Prefix
2001:DB8::/32
- http://tools.ietf.org/html/rfc3849
- IPv4-mapped IPv6
dual stack
- 우리의 컴퓨터는 IPv4,6를 둘다 사용하기 위해 듀얼 스택을 쓰고 있다.
- 지원되는 OS : Linux , MacOSX, iOS, Window 7 이상
CIDR (Classless Inter-Domain Routing)
- IP 클래스와 상관없이 서브넷을 지정하여 자르는 것을 의미
xxx.ooo.xxx.ooo/##
으로 표기##
에는 서브넷 매스크의 on 비트의 개수를 표기- 예시 :
192.168.100.0/24
->192.168.100.0/255.255.255.0
, 255 -> 1이 8개 x 3 = 24개 - 예시 :
192.168.100.0/25
->192.168.100.0/255.255.255.128
Public IP / Private IP
- public IP : 공인주소, 인터넷에서 유일한 주소
- private IP : 사설 주소, 인터넷이 직접 연결되지 않는 유일하지 않은 주소, 공유기같은거 쓰면 받게 되는거!
- NIC : Network Interface Card = LAN 카드라고도 부름
SELinux와 네트워크 서비스
- Security Enhanced Linux
- 커널 레벨에서의 중앙 집중식 보안 기능 -> 자물쇠가 2단계..!
- 대부분의 리눅스는 default 설치, 우분투는 설치 되지 않음
- SELinux의 보안 레벨
- enforcing (강제) : SELinux를 이용, 보안 설저에 걸리면 강제로 막음
- permissive (허가) : SELinux를 이용. 보안 설저에 걸리면 허용하되 로그 출력
- disabled (비활성) : SELinux를 사용하지 않음
Network configuration( Debian)
Devian net. config : Legacy
- Network 설정은 Legacy 방식과 NetworkManager가 있다.
- Debian 계열과 RH 계열은 서로 설정 방식과 config 파일 포맷이 다르다.
하지만, NetworkManager로 인해 이제는 통일 되었다. - Debian 계열 legacy config :
/etc/network/interfaces
- RH 계열 legacy config :
/etc/sysconfig/network-scripts/*
Legacy 방식을 배우는 이듀
- 혹시나 레거시 설정 커스텀 리눅스를 사용할까봐
- 쓰면 안되는데 인터넷 검색해서 하다가 쓸까봐
NIC /etc/network/interfaces
- Debian network interface config.
eht0
를 사용하는 것은 다 옛날 버전들..echo lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
/etc/init.d/networking
== service networking
NetworkManager
- NetworkManager 장점
- NetworkManager는 에몬으로 작동하면서 network configuration을 수행하고, 자동으로 network connection을 관리(연결 감지, 해제, 재시도)를 수행한다.
- Dbus 기반으로 동적 상태를 감지할 수 있기 때문에 다른 애플리케이션이나 데몬들에게 네트워크 정보를 제공하거나, 관리를 위한 권한을 줄 수도 있다. 유기적으로 다른 네트워크 서비스 상태 교환
- 또한 통일된 명령어를 사용하여 systemd 기반의 다른 Linux distribution들에게도 동일한 방식의 경험을 제공할 수 있다.
- Ethernet, Wi-Fi, Mobile broadband 등 다양한 기능들에게 플랲폼을 제공하므로, 네트워크 연결관리가 좀 더 쉬워진다.
legacy :ifconfig, route, ip, nmcli
- UNIX standard command (POSIX)
- ifconfig :
query/control
–> old fashion! - route :
query/control
- ifconfig :
- Non-standard command (Linux specific)
- ip : net. command on EL6
- nmcli : new commmands on EL7 , 얘가 바로 네트워크 매니저의 CLI 커맨드!
- ethtool, pifconfig
nmcli : general
obo@obo-900X3L:~$ sudo nmcli g
[sudo] password for obo:
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
- 여기서 connected 는 플랫폼에서 허용한다는 의미!
nmcli : networking
- networking 상태 조회
obo@obo-900X3L:~$ nmcli n enabled
bash nmcli n on nmcli n connectivity
` -
net. device level 확인, OSI 7 layer 중 디바이스 관련된 레벨
nmcli dev # 또는 nmcli d DEVICE TYPE STATE CONNECTION wlp1s0 wifi connected OBO's iPhone enp2s0 ethernet unavailable -- lo loopback unmanaged --
network device naming
- 리눅스 옛날에는
eth1
,eth0
이런식으로 쓰였다. 올드 스타일!- 어떤 넷웤 카드가 몇번째인지 나중에는 헷갈리다.
- Consistend Network Device Naming (new naming)
- PCI 익스프레스 슬롯 번호를 따서 실질적으로 이름을 부여하자!
Consistent Network Device Naming
- prefix
- en : ethernet
- wl : wireless lan
- ww : wireless wan
-
following device name
name description o<index>
on-board device index number s<slot>[f<function>][d<dev_id>]
hotplug slot index number x<MAC>
MAC addr 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 - 위에서 나는 핸드폰 핫스팟을 써서
wlp1s0
로 앞이wl
로 시작하는구나! -
그리고
p
가 있으니 PCI 중 첫번째 버스를 쓰며 그중 슬롯 0번째를 사용하고 있구나! - BIOSEVNAME
-
새로운 이름짓기이다. 이전 구버전인 것과 비교해보자
Device Old name New name Embedded network interface eth[0123...]
em[1234...]
PCI card net. inf. eth[0123...]
p<slot>p<ethernet port>
virtual function eth[0123...]
p<slot>p<ethernet port>_<virtual interface>
-
nmcli commmand
-
nmcli <g | n | r | d>
: general , networking , radia , connection , deviceobo@obo-900X3L:~$ nmcli c NAME UUID TYPE DEVICE OBOs iPhone 5380e1d4-7911-4a57-9958-b5881335d2f5 802-11-wireless wlp1s0 I ♡ you 3000 f158a60b-7249-4e93-9d42-e8f99c46658a 802-11-wireless -- KT_GiGA_2G_3F79 185111c1-e312-41a5-a547-388df3866185 802-11-wireless -- Wired connection 1 783d06ce-1432-3459-b8ee-e6541b0ef473 802-3-ethernet --
obo@obo-900X3L:~$ sudo nmcli c s "OBO's iPhone" connection.id: OBOs iPhone connection.uuid: 5380e1d4-7911-4a57-9958-b5881335d2f5 ... 802-11-wireless.band: -- 802-11-wireless.channel: 0 802-11-wireless.bssid: -- ... GENERAL.DEFAULT6: yes GENERAL.VPN: no GENERAL.ZONE: -- GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/3 GENERAL.SPEC-OBJECT: /org/freedesktop/NetworkManager/AccessPoint/186 GENERAL.MASTER-PATH: -- IP4.ADDRESS[1]: 172.20.10.2/28 IP4.GATEWAY: 172.20.10.1 IP4.ROUTE[1]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000 IP4.DNS[1]: 172.20.10.1 DHCP4.OPTION[1]: requested_routers = 1 DHCP4.OPTION[2]: requested_domain_search = 1 DHCP4.OPTION[3]: server_name = OBOs-iPhone DHCP4.OPTION[4]: requested_time_offset = 1 DHCP4.OPTION[5]: requested_domain_name = 1 DHCP4.OPTION[6]: requested_rfc3442_classless_static_routes = 1 DHCP4.OPTION[7]: requested_broadcast_address = 1 DHCP4.OPTION[8]: requested_wpad = 1 DHCP4.OPTION[9]: requested_netbios_scope = 1 DHCP4.OPTION[10]: next_server = 172.20.10.1 DHCP4.OPTION[11]: expiry = 1608267190 ... DHCP6.OPTION[4]: requested_dhcp6_client_id = 1 DHCP6.OPTION[5]: requested_dhcp6_name_servers = 1 DHCP6.OPTION[6]: dhcp6_client_id = 0:4:ff:69:db:d6:6f:f7:9b:dc:4b:9d:13:c:a6:5:5:fe ...
-
소문자로 되어있는건, 유저가 설정했던것, 대문자는 설정을 기반으로해서 만들어 진것
-
NAME
과DEVICEE
를 통일 시키자!nmcli con modify "OBO's iPhone" connnection.id wlp1s0 # wlp1s0으로 변경 nmcli c s # 확인
-
IP를 변경해보자
nmcli c mod "OBO's iPhone" ipv4.method maual ipv4.addresses 192.168.XXX.110/24 \
ipv4.gateway 192.168.XXX.2 + ipv4.dns 8.8.8.8
# ip addr 을 192.168.XXX.110/24 로, gateway를 192.168.XXX.2 로, dns를 8.8.8.8로 바꾼다.
nmcli c s "OBO's iPhone" # 확인
## 확인해보면, 소문자로 되어있는애들은 설정이 변경되었다.
## 활성화시키기위해선 재연결을 해서, 대문자도 변경 시킬 수 있다.
- virual IP 추가 , 여러개의 IP를 할당하기
nmcli c mod "OBO's iPhone" +ipv4.addresses 192.168.110.181/24
nmcli c mod "OBO's iPhone" +ipv4.addresses 192.168.110.182/24
nmcli c up "OBO's iPhone"
nmcli c s "OBO's iPhone" # 확인
property
- ipv4.method
-
auto manual - auto = dhcp
- manual = static ip
-
- ipv4.addr
- IPv4 address CIDR 표기법 = 192.168.110.50./24
- ipv4.gateway
- Gateway IP
- ipv4.dns
- DNS server IP