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"