天天看點

Linux網絡管理基礎

Linux網絡管理

涉及到的指令:

ifconfig、ifup、ifdown、ping、route、setup、chkconfig、reset、dig、ip、traceroute、mtr、netstat、ss、iftop、nethogs

==============================================================

ISO定義OSI模型(七層)

實體層    定義實體裝置規範及電氣信号特性

資料鍊路層    本地網絡通信,定義MAC位址

網絡層    定義網絡通信,定義IP位址

傳輸層    程序間通信,定義程序位址(端口号)    IP+端口号=套接字

會話層    會話建立和拆除   

表示層    資料表示方式

應用層    完成資料交換

TCP/IP模型(4層)

實體層

網際網路層

傳輸層

應用層

傳輸層:

    程序啟動時向核心注冊使用某端口,是以當網絡封包到達時,首先到達核心

應用層:

    程序負責處理應用層協定

修改主機IP方法:

1、ifconfig指令

2、ip指令

3、編輯配置檔案

4、GUI指令(不常用)

5、TUI指令(不常用)  setup指令,根據向導修改

網卡接口命名方式:

    以太網:ethx  (有些機器是emx)

    centos7的叫ensx

PPP網絡:pppx

本地換回接口:lo 接口

    僅用于本機上的程序間基于核心完成通信

==================================================================

ifconfig指令

檢視、修改網卡屬性

ifconfig輸出結果解釋:

eth0      Link encap:Ethernet  HWaddr 00:0C:29:21:F3:BE  

          inet addr:172.20.1.33  Bcast:172.20.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe21:f3be/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:266187 errors:0 dropped:0 overruns:0 frame:0

          TX packets:14251 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:25547336 (24.3 MiB)  TX bytes:1400737 (1.3 MiB)

大緻可以得到以下内容:

網絡類型是以太網、硬體位址(MAC)

IP、廣播位址、掩碼

IPV6位址

MTU:1500

接收包個數

發送包個數

收發包大小

collisions:0    沖突為0

txqueuelen:1000    傳送隊列為1000(包數量)

直接執行ifconfig,可以檢視到激活狀态接口的屬性,檢視所有的:

ifconfig -a

設定IP位址:

ifconfig  IF_NAME  IP/NETMASK(長度數字)   [up]

ifconfig IF_NAME IP netmask NETMASK

如:ifconfig  eth0 192.168.1.100/24 或者 ifconfig eth0 192.168.1.100 netmask 255.255.255.0

注意:此種修改方法可立即生效,但臨時有效,重新開機系統或服務丢失

禁用、啟用網卡接口

ifconfig  IF_NAME  down|up

ifup  IF_NAME

ifdown IF_NAME

====================================================================

ping指令

ping指令      用ICMP的ECHO _REQUEST封包,測試主機連通性

ping [options]  DESTINATION

-c  #    count  發送ping包次數

-s  #    發送探測封包的大小

-w  #   表示ping多久,-w 5 :  ping 5秒鐘後退出

[root@localhost ~]# ping -c 5 -s 128  www.baidu.com

指定ping 5次,包大小為128個位元組

[root@localhost ~]# ping -w 3 -s 128  www.baidu.com

指定ping 3秒鐘,包大小為128個位元組

=====================================================================

route指令

檢視路由:

route  -n,以數字方式顯示路由表,對結果不進行解析,比直接執行route檢視的要略快

添加路由:

route  add   {-host|-net}  Target[/prefix]  [gw Gw]    [[dev] IfNAME]

如:route add  -net 192.168.109.0/24 gw 192.168.101.1 dev eth2

-host 設定到某主機的路由,-net設定到某網段的路由

添加預設網關:

route add -net 0.0.0.0 gw 192.168.2.1 dev eth0   靜态路由

        route add default  gw  192.168.2.1  [dev eth0]根據實際情況,接口名可省略

删除路由

    route  del   {-host|-net}  Target[/prefix]  [gw Gw]    [[dev] IfNAME]

如:  route  del -net 0.0.0.0  gw 192.168.2.1

注意:添加路由後,立即生效,但也隻是臨時有效,重新開機服務或者系統就會消失

靜态路由配置檔案(永久生效):

 /etc/sysconfg/network-scripts/route-IFNAME        route-IFNAME檔案不存在,自建即可

配置方式一:每一行定義一個路由條目

 DESTINATION  via  GATEWAY

如:

 192.168.0.0/24 via 172.16.0.2

 192.168.1.1 via  172.16.0.3

配置方式二:

 每三行定義一個路由條目

 ADDRESS=

 NETMASK=

 GATEWAY=

  例如:

  ADDRESS=192.168.0.0

  NETMASK=255.255.255.0

  GATEWAY=172.20.0.2

注意:這兩種方式不可以混合使用,隻能選一種使用

========================================================================

setup指令、chkconfig指令

配置IP、掩碼、網關

    指令:setup   圖形界面下修改(如果語言亂碼可以export LANG=en)

        此種配置方式的配置結果是儲存至配置檔案

        生效方法:重新開機服務,比較繁瑣不常用

網絡管理的相關服務有兩個

 NetworkManager(建議停用)

 network

檢視服務是否開機啟動:

 chkconfig --list|grep "SERVICE_NAME"

禁止或者啟用開機啟動

 chkconfig  SERVICE_NAME  on|off

立即啟動或關閉服務

 service SERVICE_NAME start|stop|restart

 /etc/init.d/SERVICE_NAME  start|stop|restart

reset指令  當做一些設定是界面發生奇怪變化,可以嘗試初始化一下

 terminal initialization終端初始化

==============================================================================

通過修改配置檔案,進行修改ip、netmask、DNS

每個網絡接口都有一個配置檔案

    /etc/sysconfig/network-scripts/ifcfg-IFNAME

常用參數:

    DEVICE=eth0           裝置名(與ifcfg-IFNAME中的IFNAME一緻)

    HWADDR=00:0C:29:21:F3:BE  MAC位址,此位址不可更改,要跟網卡的ROM中固定位址一緻

    TYPE=Ethernet          接口類型

    UUID=            可以删掉,如果存在不可以修改其值

    ONBOOT=yes         開機時是否随機激活

    NM_CONTROLLED=yes    NM=networkmanager  ,是否受NetworkManager服務控制,建議選no

    BOOTPROTO=static        啟動時配置協定:static(手動配置)、none(手動配置)、dhcp(動态擷取)、bootp(動态擷取)

    IPADDR=172.20.1.33        IP位址

    NETMASK=255.255.255.0     掩碼位址

    GATEWAY=172.20.1.1        網關位址

    DNS1=192.168.1.13         主DNS

    DNS2=192.168.1.14         備用DNS

    IPV6INIT                  是否初始化IPV6協定位址            可以不存在

    USERCTL                   是否允許普通使用者管理此接口        可以不存在

    PEERDNS                   當BOOTPROTO的值為dhcp時,是否允許自動擷取的覆寫手動指定的

注意:不能立即生效,重新開機網絡服務生效

配置DNS伺服器指向(在網絡接口的配置檔案中或者在此檔案中修改DNS都可以)

/etc/resolv.conf

nameserver  DNSSERVER_IP

最多可以填寫3個dns伺服器

dig指令,   domain information groper

正向解析:

  dig  -t FQDN

  dig -t A  www.baidu.com

  dig  -t A  www.baidu.com  @8.8.8.8   指定使用某個DNS進行解析

反向解析:

  dig  -x    IP

ip指令

ip [ OPTIONS ] OBJECT { COMMAND | help }

    OBJECT := { link | addr  | route } 

        link    連結接口,如eth0

        addr    管理接口的IP位址

        route        管理路由

    link    設定接口屬性

        set     設定接口屬性

                ip  link set DEVICE {up|down}

                ip  link set  DEVICE  promisc  {on|off}  是否支援混雜模式

                ip  link set DEVICE  tx queuelen PACKETS   隊列長度

                ip  link set DEVICE  name NAME  修改接口名字

        show        顯示接口狀态

            如:ip  link show  [eth0]

   addr    接口位址管理

        add    添加位址

        del    删除位址    

   格式:ip addr {add|del} IFADDR dev STRING (添加的位址ifconfig看不到,可以ip addr show檢視)

   ip addr add  192.168.100.100/24   dev eth0

   ip addr del 192.168.100.100/24  dev eth0

        show  檢視位址

           ip  addr  show   [dev_name]

        flush  清空位址

            ip  addr flush  dev   DEV_NAME    清除指定網卡的所有位址

       如:ip addr flush dev eth0

  route

    list    列出路由

    ip  route  list == ip route show

    add    添加路由

    ip  route add DESINATION  via  GATEWAY  [ dev   IF_NAME]

    如:ip route add  default via 192.168.1.1  (預設網關)

       ip  route add 192.168.100.0/24 via  172.20.1.1  dev eth0

    del    删除路由

    ip route del DESINATION

    如:ip route del  192.168.100.0/24

==================================================================================

給接口配置多個IP的其他方式

    ifconfig    臨時生效,立即生效

        ethX:Y        如:ifconfig eth0:1 192.168.1.100/24 [up] 

    配置檔案  永久生效,不會立即生效

        /etc/sysconfig/network-scripts/ifcfg-IF_ALIAS   如ifcfg-eth0:0

            DEVICE=IF_ALIAS

            BOOTPROTO=static|none

            ONBOOT=yes

            IPADDR=XXXXXXX

            NETMASK=XXXXXXX

    ip指令如:ip addr add 192.168.100.100/24 dev  eth0:0

    也是臨時生效

配置主機名:

        hostname  HOSTNAME      其結果儲存在/proc/sys/kernel/hostname  echo “HOSTNAME”  > /proc/sys/kernel/hostname

        配置檔案

            修改:/etc/sysconfig/network   其中NETWORKING=yes  網絡總開關,關閉後主機不能聯網

網絡管理的幾個常用工具

ping

traceroute   路由跟蹤

    traceroute   www.baidu.com

mtr

    融合了ping和traceroute功能的診斷工具

        mrt  HOST

網絡狀态探測工具

netstat

    -r 顯示路由表

    -n  numeric 數字顯示,不反解IP或者主機名、端口等

    -l    listening,處于監聽狀态

    -t    tcp相關連接配接

    -u    udp相關連接配接

    -a    all,顯示所有連接配接(針對于TCP而言,處于各種狀态)

    -p    process ,顯示相關連接配接的程式名和程序名

常用組合:

    -rn  -tnl  -nul  -tunl  -tan  -tanlp

ss        跟netstat很像,但效率更高

    -n    數字格式

    -l    處于監聽狀态

    -a    顯示所有連接配接,針對tcp

    -e    擴充資訊

    -m    記憶體使用資訊

    -o  state  { established|fin_wait_1|fin_wait_2|listening }  狀态過濾

常用組合

    -tnl  -unl  -tan  -tunl  -tnlp

iftop    以連接配接為中心,顯示帶寬占用情況

   iftop -i eth0

nethogs   按照程序為中心,顯示帶寬占用情況

    nethogs   [IF_NAME]

練習:

寫一個腳本,使用ping指令探測172.16.250.1-172.16.250.254之間所有主機的線上狀态

不線上的主機使用紅色顯示,線上的使用綠色顯示

#!/bin/bash

for i in {1..254};do

if ping 172.16.250.$i -w 1 -c 1 &> /dev/null ;then

echo -e "\033[32m 172.16.250.$i is exist  \033[0m"

    else

echo -e "\033[31m 172.16.250.$i is not exist  \033[0m"

fi

done

echo -e "\033[30m 黑色字 \033[0m"

echo -e "\033[31m 紅色字 \033[0m"

echo -e "\033[32m 綠色字 \033[0m"

echo -e "\033[33m ×××字 \033[0m"

echo -e "\033[34m 藍色字 \033[0m"

echo -e "\033[35m 紫色字 \033[0m"

echo -e "\033[36m 天藍字 \033[0m"

echo -e "\033[37m 白色字 \033[0m"

echo -e "\033[40;37m 黑底白字 \033[0m"

echo -e "\033[41;37m 紅底白字 \033[0m"

echo -e "\033[42;37m 綠底白字 \033[0m"

echo -e "\033[43;37m 黃底白字 \033[0m"

echo -e "\033[44;37m 藍底白字 \033[0m"

echo -e "\033[45;37m 紫底白字 \033[0m"

echo -e "\033[46;37m 天藍底白字 \033[0m"

echo -e "\033[47;30m 白底黑字 \033[0m"

繼續閱讀