5 minute read

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에는 중의적의미가 있다.
    1. domain을 제외한 호스트 이름
    2. domain을 포함한 FQDN
  • FQDN : Fully Qualified Domain Name
    • fedora.redhat.com = hostname = FQDN
      • 도메인 내에서 유일하게 구별 가능한 이름
    • 도메인주소는 체계적인 구조를 가짐 (eg. devel.fclinux.or.kr)
      • kr : 한국 주소
      • or : 단체
      • fclinux : 단체 이름
      • devel : 단체 내에서 유니크한 컴퓨터 이름
  • special hostname
    • localhost
      • 항상 자기 자신을 의미하는 주소가 매핑된다.
      • IPv4 = 127.0.0.1
      • IPv6 = ::1
    • 유명한 인터넷 유머도 있다.
      • I hacked 127.0.0.1 - 무지함은 스스로를 해친다.

IP 주소

  • IPv4
    • version 4
    • 32bit 주소 체계 : 8bit 씩 끊어서 xxx.ooo.xxx.ooo 의 식으로 읽음
  • IPv6
    • version 6
    • 128bit 주소 체계
      • IPv4의 주소가 부족한 현상으로 인해서… Apple는 공식적으로 IPv6만 사용한다.

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

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 방식을 배우는 이듀

  1. 혹시나 레거시 설정 커스텀 리눅스를 사용할까봐
  2. 쓰면 안되는데 인터넷 검색해서 하다가 쓸까봐

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
  • 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 , device

      obo@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
      ...
    
    
  • 소문자로 되어있는건, 유저가 설정했던것, 대문자는 설정을 기반으로해서 만들어 진것

  • NAMEDEVICEE를 통일 시키자!

      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

Categories:

Updated: