學習筆記之linux網絡屬性配置及其命令用法

Linux網絡屬性配置

先來了解一點網絡的基礎知識:(這些只需記住)

TCP/IP:協議棧(使用中的模型)

ISO,OSI:協議棧(學習中的模型)

MAC:Media Access Control(介質訪問控制)

48bits:(48位二進制)

ICANN:24bits, 2^24(組織將這個地址做了定義)

地址塊:2^24

網橋(bridge):MAC地址表

   網橋自身特性:

        靜態指定:

        動態學習:根據原地址學習;

交換機(switch):多端口網橋;

IP(Internet protocol互聯網協議)地址:網絡號+主機號(後面會介紹這兩者)

A<-->B

IPv4:32bits

   8bits.8bits.8bits.8bits

0-255

        0.0.0.0-255.255.255.255

下面來看看ip的相關知識:

IP地址分類:

  A類:

     第一段爲網絡號,後三段爲主機號

        網絡號:

0 000 0000 - 0 111 1111:1-127

網絡數量:126(127被當做本地環回地址了),127

每個網絡中的主機數量:2^24-2

 #2:指全零的網絡地址和全1的主機地址

默認子網掩碼:255.0.0.0,/8

#掩碼用來做什麼?每一個通信的主機他都會拿着自己的掩碼來跟自己的地址做與運算並拿着掩碼與對方的地址做與運算來按位與

用於與IP地址按位進行“與”運算,從而取出其網絡地址;

eg:    

            1.3.2.1/255.0.0.0 = 1.0.0.0

    1.3.2.1/255.255.0.0= 1.3.0.0

私網地址:10.0.0.0/255.0.0.0

只能自己用,不能連在互聯網上與其他通信

  B類:

     前兩段爲網絡號,後兩段爲主機號

     網絡號:

10 00 0000 - 10 11 1111:128-191

     網絡數:2^14

     每個網絡中的主機數量:2^16-2

    默認子網掩碼:255.255.0.0/16

   私網地址:172.16.0.0-172.31.0.0  C類:

  前三段爲網絡號,最後一段爲主機號

      網絡號:

110 0 0000 - 110 1 1111:192-223

數:2^21

每個網絡中的主機數量:2^8-2

默認子網掩碼:255.255.255.0,  /24

 D類:組播

1110 0000 - 1110 1111:224-239

 E類:科研

240-255

IPv6:128bits

  路由器:router

  路由表:

      靜態指定

      動態學習:rip2, ospf

路由條目:

目標地址: 下一跳(nexthop)

目標地址的類別:

主機:主機路由

網絡:網絡路由

  0.0.0.0/0.0.0.0:默認路由

OS:多用戶,多任務

多任務:多進程

chrome:

QQ:

QQ Music:

通信時,進程的數字標識:

16bits:

0-65535:1-65535

1-1023:固定分配,而且只有管理員有權限啓用;

1024-4W:半固定,

4W+:臨時;

       進程地址:

          IP:PORT,  socket

套接字(socket)定義:源IP地址和目的IP地址以及源端口號和目的端口號的組合稱爲套接字。其用                       於標識客戶端請求的服務器和服務。

將Linux主機接入到網絡中:

   條件:

        IP/NETMASK:本地通信

路由(網關):跨網絡通信

DNS服務器地址:基於主機名的通信

主DNS服務器地址

備用DNS服務器地址

第三備份DNS服務器地址

    配置方式:(簡要說明,後面詳細給出細節)

      靜態指定:

命令:

ifcfg家族:

    ifconfig:配置IP,NETMASK

    route:路由

    netstat:狀態及統計數據查看

iproute2家族:

    ip OBJECT:

    addr:地址和掩碼;

    link:接口

    route:路由

    ss:狀態及統計數據查看

 CentOS 7:nm(Network Manager)家族

nmcli:命令行工具

nmtui:text window 工具

注意:

(1) DNS服務器指定

    配置文件:/etc/resolv.conf

(2) 本地主機名配置

   hostname

   配置文件:/etc/sysconfig/network

CentOS 7:hostnamectl

   配置文件:

RedHat及相關發行版

/etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME

   動態分配:依賴於本地網絡中有DHCP服務(動態獲取)

DHCP:Dynamic Host Configure Procotol

網絡接口命名方式:

    傳統命名:

       以太網:ethX, [0,oo),例如eth0, eth1, ...

       PPP網絡:pppX, [0,...], 例如,ppp0, ppp1, ...

    可預測命名方案(CentOS):

支持多種不同的命名機制:

Fireware, 拓撲結構

(1) 如果Firmware或BIOS爲主板上集成的設備提供的索引信息可用,

    則根據此索引進行命名,如eno1, eno2, ...

(2) 如果Firmware或BIOS爲PCI-E擴展槽所提供的索引信息可用,且可預測,

     則根據此索引進行命名,如ens1, ens2, ...

(3) 如果硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0, ...

(4) 如果用戶顯式定義,也可根據MAC地址命名,例如enx122161ab2e10, ...

上述均不可用,則仍使用傳統方式命名;

     命名格式的組成:

en:ethernet

wl:wlan

ww:wwan

     名稱類型:

o<index>:集成設備的設備索引號;

s<slot>:擴展槽的索引號;

x<MAC>:基於MAC地址的命名;

p<bus>s<slot>:基於總線及槽的拓撲結構進行命名;

細說配置命令

ifcfg命令家族: ifconfig, route, netstat

     ifconfig命令:接口及地址查看和管理

ifconfig  [INTERFACE]

# ifconfig -a:顯示所有接口,包括inactive狀態的接口;

ifconfig interface [aftype] options | address ...

# ifconfig  IFACE  IP/MASK  [up|down]

# ifconfig  IFACE  IP  netmask  NETMASK  

options:

[-]promisc

       注意:立即送往內核中的TCP/IP協議棧,並生效;

       管理IPv6地址:

   add addr/prefixlen

    del  addr/prefixlen

     route命令:路由查看及管理

路由條目類型:

主機路由:目標地址爲單個IP;

網絡路由:目標地址爲IP網絡;

默認路由:目標爲任意網絡,0.0.0.0/0.0.0.0

查看:

 # route  -n

添加:

route  add  [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] If]

  示例:route add -net  10.0.0.0/8  gw  192.168.10.1  dev  eth1

route add  -net  0.0.0.0/0.0.0.0  gw 192.168.10.1  

route add  default  gw 192.168.10.1  

           

刪除:

 route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] If]

示例: route  del  -net  10.0.0.0/8  gw 192.168.10.1

  route  del  default

    

     netstat命令:Print network connections, routing tables, interface                         statistics, masquerade connections, and multicast  memberships

        顯示路由表:netstat  -rn

   -r:顯示內核路由表

   -n:數字格式

[root@bucktan ~]# netstat -rn

Kernel IP routing table

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

172.18.0.0      0.0.0.0         255.255.0.0     U         0 0          0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

0.0.0.0         172.18.0.1      0.0.0.0         UG        0 0          0 eth0

        顯示網絡連接:

netstat  [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--listening|-l] 

         [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]

-t:TCP協議的相關連接,連接均有其狀態;FSM(Finate State Machine);

-u:UDP相關的連接

        -w:raw socket相關的連接

        -l:處於監聽狀態的連接

-a:所有狀態

-n:以數字格式顯示IP和Port;

-e:擴展格式

-p:顯示相關的進程及PID;

eg:[root@bucktan ~]# netstat -tnl

常用組合:

-tan,  -uan,  -tnl,  -unl,  -tunlp

傳輸層協議:

 tcp:面向連接的協議;通信開始之前,要建立一個虛鏈接;通信完成後還要拆除連接;

 udp:無連接的協議;直接發送數據報文;

顯示接口的統計數據:

netstat {--interfaces|-I|-i}  [iface] [--all|-a] [--extend|-e] 

 [--verbose|-v] [--program|-p] [--numeric|-n]

所有接口:

netstat  -i

指定接口:

netstat  -I<IFace>

   ifup/ifdown命令:(啓用/禁用某接口)

注意:通過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口並

      完成配置;不在配置文件中則使用命令無效

配置主機名:

 hostname命令:

        查看:hostname

配置:hostname  HOSTNAME

當前系統有效,重啓後無效;

hostnamectl命令(CentOS 7):

hostnamectl  status:顯示當前主機名信息;

hostnamectl  set-hostname:設定主機名,永久有效;

    配置文件:/etc/sysconfig/network

       HOSTNAME=<HOSTNAME>

注意:此方法的設置不會立即生效; 但以後會一直有效;

配置DNS服務器指向:

    配置文件:/etc/resolv.conf

nameserver   DNS_SERVER_IP

如何測試(host/nslookup/dig):

 # dig  -t  A  FQDN

FQDN --> IP

         # dig  -x  IP

IP --> FQDN

iproute家族: 

   ip命令:show / manipulate routing, devices, policy routing and tunnels

      ip [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT := { link | addr | route | netns  }

注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫;

        ip  OBJECT:

   ip link: network device configuration

           ip link set - change device attributes

dev NAME (default):指明要管理的設備,dev關鍵字可省略;

up和down:

[root@bucktan ~]# ip link set eth0 down

multicast on或multicast off:啓用或禁用多播功能;

name NAME:重命名接口

mtu NUMBER:設置MTU的大小,默認爲1500;

netns PID:ns爲namespace,用於將接口移動到指定的網絡名稱空間;

          ip  link  show  - display device attributes

   ip  link  help -  顯示簡要使用幫助;

   ip netns:  - manage network namespaces.

   ip  netns  list:列出所有的netns

   ip  netns  add  NAME:創建指定的netns

eg:[root@bucktan ~]# ip netns add mynet

   ip  netns  del  NAME:刪除指定的netns

   ip netns exec NAME COMMAND:在指定的netns中運行命令

eg:[root@bucktan ~]# ip netns exec mynet ip link show

     #會將放在mynet中的設備顯示出來

   ip address - protocol address management.

   ip address add - add new protocol address

   ip  addr  add  IFADDR  dev  IFACE

[label NAME]:爲額外添加的地址指明接口別名;

[broadcast ADDRESS]廣播地址;會根據IP和NETMASK自動計算得到;

[scope SCOPE_VALUE]:

global:全局可用;

link:接口可用;

host:僅本機可用;              ip address delete - delete protocol address

   ip addr  delete  IFADDR  dev  IFACE 

   ip address show - look at protocol addresses

   ip  addr   list  [IFACE]:顯示接口的地址;

   ip address flush - flush protocol addresses

   ip  addr  flush  dev  IFACE

   ip route - routing table management

   ip route add - add new route

           ip route change - change route

   ip route replace - change or add new one

   ip  route   add  TYPE PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP]

示例:

     # ip route add 192.168.0.0/24  via 10.0.0.1  dev eth1 src  10.0.20.100

     # ip  route  add default  via  GW

   ip route delete - delete route

   ip  route  del  TYPE PRIFIX 

示例:

    # ip  route delete  192.168.1.0/24

ip route show - list routes

TYPE PRIFIX  

ip route flush - flush routing tables

TYPE  PRIFIX

ip route get - get a single route

ip  route  get  TYPE PRIFIX

示例:ip route  get  192.168.0.0/24

ss命令:

    ss  [options]  [ FILTER ]

選項:

-t:TCP協議的相關連接

-u:UDP相關的連接

-w:raw socket相關的連接

-l:監聽狀態的連接

-a:所有狀態的連接

-n:數字格式

-p:相關的程序及其PID

-e:擴展格式信息

-m:內存用量

-o:計時器信息

FILTER=[ state TCP-STATE ]  [ EXPRESSION ]

TCP的常見狀態:

TCP FSM:

LISTEN:監聽

ESTABLISEHD:建立的連接

FIN_WAIT_1:

FIN_WAIT_2:

SYN_SENT:

SYN_RECV:

CLOSED:

        EXPRESSION:

dport = 

sport = 

 示例:'( dport = :22 or sport = :22)'

~]# ss   -tan    '(  dport = :22 or sport = :22  )'

~]# ss  -tan  state  ESTABLISHED

     配置文件:

     IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE

IFACE:接口名稱;

     路由的相關配置文件:/etc/sysconfig/networkj-scripts/route-IFACE

     配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通過大量參數來定義接口的屬性;其可通過vim等文本編輯器直接修改,也可以使用專用的命令進行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)

     ifcfg-IFACE配置文件參數:

DEVICE:此配置文件對應的設備的名稱;與IFACE保持一致

ONBOOT:在系統引導過程中,是否激活此接口;

UUID:此設備的惟一標識;

IPV6INIT:是否初始化IPv6;

BOOTPROTO:激活此接口時使用什麼協議來配置接口屬性,常用的有dhcp、bootp、static、none;

TYPE:接口類型,常見的有Ethernet, Bridge;

DNS1:第一DNS服務器指向;

DNS2:備用DNS服務器指向;

DOMAIN:DNS搜索域;

IPADDR: IP地址;

NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼

        GATEWAY:默認網關;

USERCTL:是否允許普通用戶控制此設備;

PEERDNS:如果BOOTPROTO的值爲“dhcp”,是否允許dhcp server分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認爲允許;

HWADDR:設備的MAC地址;

NM_CONTROLLED:是否使用NetworkManager服務來控制接口;

網絡服務:

network

NetworkManager 

管理網絡服務:

CentOS 6:  service  SERVICE  {start|stop|restart|status}

CentOS 7:systemctl  {start|stop|restart|status}  SERVICE[.service]

配置文件修改之後,如果要生效,需要重啓網絡服務;

CentOS 6:# service  network  restart

CentOS 7:# systemctl  restart  network.service

用到非默認網關路由:/etc/sysconfig/network-scripts/route-IFACE

支持兩種配置方式,但不可混用;

(1) 每行一個路由條目:

TARGET  via  GW

(2) 每三行一個路由條目:

ADDRESS#=TARGET

NETMASK#=MASK

GATEWAY#=NEXTHOP

給接口配置多個地址:

ip addr之外,ifconfig或配置文件都可以;

(1) ifconfig  IFACE_LABEL  IPADDR/NETMASK

      IFACE_LABEL: eth0:0, eth0:1, ...

此方法只對當前有效,重啓系統或網絡服務就無效了

永久有效的方法是:修改配置文件,複製網卡配置文件然後修改名稱和IP即可

(2) 爲別名添加配置文件;

DEVICE=IFACE_LABEL

BOOTPROTO:網上別名不支持動態獲取地址;

static, none

nmcli命令:

nmcli  [ OPTIONS ] OBJECT { COMMAND | help }

    OBJECT:

     device - show and manage network interfaces

      COMMAND = { status | show | connect | disconnect | delete | wifi | wimax }

connection - start, stop, and manage network connections

   COMMAND = { show | up | down | add | edit | modify | delete | reload | load }

modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>

如何修改IP地址等屬性:

# nmcli  conn  modify  IFACE  [+|-]setting.property  value

ipv4.address

ipv4.gateway

ipv4.dns1

ipv4.method

eg:[root@bucktan network-scripts]# nmcli conn modify eno16777736  + ipv4.address 172.18.26.4/32

修改之後要重啓網卡或者使用nmcli中的(up|down)命令,才能在查看nmcli device show時顯示


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章