linux網絡相關

網卡命名規則

centos6和之前,網絡接口使用連續號碼命名,eth0,eth1.
Centos7,採用dmidecode採集命名方案,採集主板信息,實現網卡命名唯一化

如果firmware(固件)或BIOS爲主板集成的設備提供的索引信息可用時,以此命名,例如:ifcfg-ens33
如果firmware(固件)或BIOS爲PCI-E擴展槽可用時,以此命名,例如,ifcfg-enp33
如果硬件接口的物理位置可用時,以此命名,例如:enp2s0
如果都不可用時,採用舊版本命名方法
en*
  O:主板板載網卡,集成設備的設備索引號
  P:獨立網卡,PCI網卡
  S:熱插拔網卡,usb之類,擴展槽的索引號
後面的數字表示:MAC地址+主板信息計算出唯一的序列

查看網卡物理連接是否正常

[root@localhost ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

查看ip相關信息

ifconfig命令被用於配置和顯示linux內核中網絡接口的網絡參數

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.162  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::7511:1afa:bc50:a085  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:7a:44:ce  txqueuelen 1000  (Ethernet)
        RX packets 11084  bytes 9447213 (9.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4704  bytes 455830 (445.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到網卡名稱是ens33
那麼它的配置文件就是ifcfg-ens33

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"					#設備類型是以太網
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"    #static靜態ip或者dhcp,或none(不指定), 當是none時,配上ip之後效果適合static效果一樣的
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"    #網卡名字(名稱可以更改,一般和設備名字相同)
UUID="d3afb034-7430-4460-b891-f18f2cf7465c"     #網卡uuid,全球唯一
DEVICE="ens33"     #設備名字(在內核中識別的名字,不是隨便更改的)
ONBOOT="yes"      #啓用該設備,如果是no, 表示不啓動網絡設備
IPADDR="192.168.1.162"   #ip地址
PREFIX="24"      #子網掩碼,相當於255.255.255.0
GATEWAY="192.168.1.1"      # 默認網關 
DNS1="8.8.8.8"     #首選dns,如果要配置兩個dns,則再加一行,DNS2='114.114.114.114'
IPV6_PRIVACY="no"

爲虛擬機添加一塊網卡

步驟關機 > 設置 > 添加設備 > 網絡適配器 > 添加 > 選擇橋接模式 > 開機

選項-a : 查看所有網絡設備, 包括沒有啓動的網卡設備

[root@localhost ~]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.162  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::7511:1afa:bc50:a085  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:7a:44:ce  txqueuelen 1000  (Ethernet)
        RX packets 80  bytes 10900 (10.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 75  bytes 9260 (9.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::81fc:e69e:c455:db43  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:7a:44:d8  txqueuelen 1000  (Ethernet)
        RX packets 4  bytes 240 (240.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 2592 (2.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
        可以看到,新增加的網卡名稱是ens37,這是由內核識別出來的

生成網卡配置文件

進入網卡配置文件目錄
cd /etc/sysconfig/network-scripts/

複製出一個ens37的網卡配置文件
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37

修改配置文件
將
NAME="ens33"
UUID="d3afb034-7430-4460-b891-f18f2cf7465c" 
DEVICE="ens33"
IPADDR="192.168.1.162"
改爲
NAME="ens37"
DEVICE="ens37"
IPADDR="192.168.1.131"
更改網卡名稱,設備名稱,由於不知道uuid,所以將uuid刪除, 注意ip不要衝突
保存退出

重啓網卡服務

[root@localhost network-scripts]# service network restart
薑還是老的辣(從centos5到至今)

現在可以遠程連接到這臺虛擬機了
ssh [email protected]

臨時修改ip地址

臨時修改ip地址 
[root@localhost network-scripts]# ifconfig ens37 192.168.1.32
[root@localhost network-scripts]# ifconfig ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.32  netmask 255.255.255.0  broadcast 192.168.1.255
給一個網卡配置多個臨時ip地址
[root@localhost network-scripts]# ifconfig ens37:1 192.168.1.123
[root@localhost network-scripts]# ifconfig ens37:1
ens37:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.123  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:7a:44:d8  txqueuelen 1000  (Ethernet)

現在實驗了一下,物理機通過ssh [email protected]和 ssh [email protected]都是可以遠程連接的
當我們重啓服務的時候,臨時ip就不生效了

查看端口的監聽狀態

netstat 命令: 查看系統中網絡連接狀態信息
常用參數格式: netstat -anutp
-a, --all   顯示本機所有連接和監聽的端口
-n, --numeric 以數字形式顯示當前建立的有效鏈接和端口
-u, 顯示utp協議鏈接
-t, 顯示tcp協議鏈接
-p, --programs 顯示鏈接對應的PID與程序名
[root@localhost ~]# netstat -anutp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      829/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      983/master          
tcp        0      0 192.168.1.162:22        192.168.1.110:50471     ESTABLISHED 2280/sshd: sss@pts/ 
tcp6       0      0 :::22                   :::*                    LISTEN      829/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      983/master          
udp        0      0 127.0.0.1:323           0.0.0.0:*                           540/chronyd         
udp6       0      0 ::1:323                 :::*                                540/chronyd      
解釋
Proto       鏈接協議的種類
Recv-Q  	接收的字節數
Send-Q  	從本服務器,發出去的字節數
Local Address  		本地的ip地址,可以是ip,也可以是主機名
Foreign Address  	遠程主機的ip地址

網絡的連接狀態
CLOSED 			初始(無連接)狀態
LISTEN 			偵聽狀態,等待遠程機器的連接請求
ESTABLISHED  	完成tcp三次握手後,主動連接端進入ESTABLISHED狀態,此時連接已經建立,可以進行通信
TIME_WAIT; 		在tcp四次揮手時,主動關閉端發送了ack包之後,等待最多MSL時間,讓被動關閉端收到ACK包

擴展:MSL,一個數據報文在網絡中能夠生存的最長時間,超過兩分鐘即認爲這個報文已經在網絡中被拋棄了,
對於tcp連接,在雙方進入TIME_WAIT狀態後,通常會等待兩倍的MSL時間,再關閉連接,作用是爲了防止由於FIN報文丟包,對端重發導致與後續的TCP鏈接請求產生順序混亂
  • 實戰:服務騎上有大量的TIME_WAI連接,如何優化TCP連接,快速釋放tcp連接
解決
linux下默認的MSL等待時間是60秒
[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout 
60
通過縮短time_wait時間來快速釋放連接
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout 

更改主機名

vim /etc/hostname

配置ip與主機名(域名)的對應關係(優先級高於DNS)

vim /etc/hosts

查看路由信息

route -n
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 ens37
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     101    0        0 ens37

Destination: 目標網絡或者目標主機
Gateway: 網關,網關地址,如果是本地網段IP,就顯示0.0.0.0
Genmask: 子網掩碼

添加路由條目

route add -net 192.168.2.0 netmask 255.255.255.0 dev ens37

刪除路由條目

route del -net 192.168.2.0 netmask 255.255.255.0 

場景:多個網卡,多個網段,實現不同數據走不同網卡,比如網絡管理和生產數據分開管理

路由跟蹤

路由跟蹤:查看經過多少個路由器到達目標網址
traceroute
[root@localhost ~]# traceroute sunlizhao.cn
traceroute to sunlizhao.cn (162.159.211.80), 30 hops max, 60 byte packets
 1  gateway (192.168.1.1)  5.478 ms  5.216 ms  5.018 ms
 2  100.74.48.1 (100.74.48.1)  4.882 ms  4.766 ms  16.547 ms
 3  * * *
 4  * * *
 5  221.183.12.61 (221.183.12.61)  15.753 ms 221.183.24.237 (221.183.24.237)  15.658 ms  15.466 ms
 6  221.183.22.97 (221.183.22.97)  58.331 ms 221.183.22.93 (221.183.22.93)  100.722 ms  100.528 ms
 7  221.176.22.162 (221.176.22.162)  45.762 ms 221.176.24.10 (221.176.24.10)  45.639 ms 221.176.22.162 (221.176.22.162)  45.457 ms
 8  221.176.24.138 (221.176.24.138)  48.924 ms 221.176.24.142 (221.176.24.142)  45.099 ms 221.176.24.230 (221.176.24.230)  52.561 ms
 9  223.118.10.2 (223.118.10.2)  48.500 ms  48.391 ms  48.364 ms
10  223.119.6.105 (223.119.6.105)  60.036 ms  59.825 ms  59.622 ms
11  162.159.211.80 (162.159.211.80)  75.074 ms  68.747 ms  74.574 ms

場景:新上線的服務器sunlizhao.cn 某個地域的用戶需要經過幾條才能到達服務器

ping

 ping 命令的一般格式爲
-c 數目 在發送指定數據的包後停止
-i 描述 設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次

arping 查看ip地址是否用衝突

例子:查看網關是否有衝突
[root@localhost ~]# arping -I ens33 192.168.1.1
ARPING 192.168.1.1 from 192.168.1.162 ens33
Unicast reply from 192.168.1.1 [34:BD:F9:3B:54:28]  4.477ms
Unicast reply from 192.168.1.1 [34:BD:F9:3B:54:28]  4.823ms
Unicast reply from 192.168.1.1 [34:BD:F9:3B:54:28]  4.557ms

注意:如果一個ip,得到兩個mac,那麼就有人冒充網關了

watch

 作用:實時監測命令的運行結果,可以看到所有變化數據包的大小
-d 高亮顯示指令輸出信息不同之處
-n 指定指令執行的間隔時間(秒)
每隔一秒高亮差異顯示網卡ens33的相關信息
 watch -d -n 1 'ifconfig ens33'

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