Linux網絡配置基礎二
相關命令
lsmod命令
lsmod命令用于顯示已經加載到內核中的模塊的狀態信息。執行lsmod命令后會列出所有已載入系統的模塊。Linux操作系統的核心具有模塊化的特性,應此在編譯核心時,務須把全部的功能都放入核心。您可以將這些功能編譯成一個個單獨的模塊,待需要時再分別載入。
第一列:表示模塊的名稱
第二列:表示模塊的大小
第三列:表示依賴模塊的個數
第四列:表示依賴模塊的內容
常用使用格式類似于:(查詢當前系統是否加載某些模塊)
lsmod |grep -i <模塊名稱>
例如:ext4、bonging
相關文件:
按照/proc/modules的格式顯示加載的內核模塊
rmmod命令
rmmod命令用于從當前運行的內核中移除指定的內核模塊。執行rmmod指令,可刪除不需要的模塊。
標準使用格式:
rmmod [ -f ] [ -w ] [ -s ] [ -v ] [ modulename ]
即:rmmod [options] [ modulename ]
-f:強制移除模塊,該選項是非常危險:除非編譯內核時,CONFIG_MODULE_FORCE_UNLOAD被設置該命令才有效果,否則沒效果。用該選項可以刪除正在被使用的模塊,設計為不能刪除的模塊,或者標記為unsafe的模塊。
-w –wait:等待著,直到模塊能夠被除時在移除模塊,rmmod拒絕刪除正在被使用的模塊。使用該選項后,指定的模塊會被孤立起來,直到不被使用。
-s:向系統日志(syslog)發送錯誤信息。將錯誤信息寫入syslog,而不是標準錯誤(stderr)。
-v:顯示指令執行的詳細信息,顯示程序正在做些什么,一般只顯示執行時的錯誤信息。
用rmmod命令主要用于卸載正在使用的Linux內核模塊,與modprobe -r命令相似,如下所示:
[root@localhost boot]# lsmod | grep raid1 raid1 25153 0 [root@localhost boot]# rmmod raid1 [root@localhost boot]# lsmod | grep raid1
注意:大多數用戶使用modprobe -r去刪除模塊。
以上文bonding實驗為例:
刪除bond0
[root@centos6 ~]# ifconfig bond0 down [root@centos6 ~]# rmmod bonding
并刪除ifcfg-bond0文件
modprobe命令
modprobe命令用于智能地向內核中加載模塊或者從內核中移除模塊。 modprobe可載入指定的個別模塊,或是載入一組相依的模塊。modprobe會根據depmod所產生的相依關系,決定要載入哪些模塊。若在載入過程中發生錯誤,在modprobe會卸載整組的模塊。(為簡便起見,模塊名中'_'和'-'是一樣的)。modprobe會查看模塊目錄/lib/modules/'uname -r'里面的所有模塊和文件,除了可選的/etc/modprobe.conf配置文件和/etc/modprobe.d目錄外。
modprobe需要一個最新的modules.dep文件,可以用depmod來生成。該文件列出了每一個模塊需要的其他模塊,modprobe使用這個去自動添加或刪除模塊的依賴。
標準使用格式:
modprobe [ -v ] [ -V ] [ -C config-file ] [ -n ] [ -i ] [ -q ] [ -b ] [ -o modulename ] [ modulename ] [ module parame-ters… ]
modprobe [ -r ] [ -v ] [ -n ] [ -i ] [ modulename… ]
modprobe [ -l ] [ -t dirname ] [ wildcard ]
modprobe [ -c ]
modprobe [ –dump-modversions ]
選項:
-v –verbose 顯示程序在干什么,通常在出問題的情況下,modprobe才顯示信息。
-C –config 重載(^_^,意思取C++的重載)默認配置文件(/etc/modprobe.conf或/etc/modprobe.d)。
-c –showconfig 顯示所有模塊的設置文件信息并退出
-n –dry-run 可以和-v選項一起使用,調試非常有用
-i –ignore-install –ignore-remove 該選項會使得modprobe忽略配置文件中的,在命令行上輸入的install和remove命令。
-q –quiet 一般modprobe刪除或插入一個模塊時,若沒有找到會提示錯誤。使用該選項,會忽略指定的模塊,并不提示任何錯誤信息。
-r –remove 該選項會導致modprobe去刪除,而不是插入一個模塊。通常沒有沒有理由去刪除內核模塊,除非是一些有bug的模塊。你的內核也不一定支持模塊的卸載;模塊閑置不用時,即自動卸載模塊; 。
-w –wait:等待著,直到模塊能夠被除時(引用計數為0)在移除模塊,rmmod拒絕刪除正在被使用的模塊。使用該選項后,指定的模塊會被孤立起來,直到不被使用。
-f –force 和同時使用–force-vermagic ,–force-modversion一樣。使用該選項是比較危險的。
-l –list 列出所有可用模塊
-a –all 載入所有命令行中的模塊
-t –type 強制 -l 顯示dirname中的模塊;指定模塊類型;
-s –syslog 錯誤信息寫入syslog
示例:
查看moddules的配置文件
[root@centos6 ~]# modprobe -c
這里,可以查看modules的配置文件,比如模塊的alias別名是什么等。會打印許多行信息,例如其中的一行會類似如下:
alias char-major-109-* lvm-mod
列出內核中所有已經或者未掛載的所有模塊:
[root@centos6 ~]# modprobe -l |grep -i bond kernel/drivers/net/tulip/winbond-840.ko kernel/drivers/net/bonding/bonding.ko kernel/drivers/media/rc/winbond-cir.ko
這里,我們能查看到我們所需要的模塊,然后根據我們的需要來掛載;其實modprobe -l讀取的模塊列表就位于/lib/modules/uname -r
目錄中;其中uname -r是內核的版本,例如輸出結果的其中一行是:
[root@centos6 ~]# cd /lib/modules/`uname -r`/kernel/net/netfilter
由于
[root@centos6 ~]# uname -r 2.6.32-642.el6.x86_64
相當于
[root@centos6 ~]# cd /lib/modules/2.6.32-642.el6.x86_64/kernel/net/netfilter
掛載vfat模塊:
modprobe vfat
這里,使用格式modprobe 模塊名來掛載一個模塊。掛載之后,用lsmod可以查看已經掛載的模塊。模塊名是不能帶有后綴的,我們通過modprobe -l所看到的模塊,都是帶有.ko或.o后綴。
移除已經加載的模塊:
[root@centos6 ~]# modprobe -r 模塊名
這里,移除已加載的模塊,和rmmod功能相同。
dmesg命令
dmesg命令用于顯示或控制內核環緩沖區;kernel會將開機信息存儲在ring buffer中。您若是開機時來不及查看信息,可利用dmesg來查看。開機信息保存在/var/log/dmesg文件里。
所以dmesg用來幫助用戶了解系統的啟動信息。用戶只需使用命令:dmesg > boot.messages
然后將文件 boot.messages 郵寄給某些可以幫你調試系統的人。而無須手工拷貝系統啟動信息。
標準使用格式:
dmesg [-c] [-r] [-n level] [-s bufsize]
選項:
-c:顯示信息后,清除ring buffer(內核環緩沖區)中的內容
-r:顯示原始的消息緩沖區,即不帶i.e.前綴級別的日志
-s 緩沖區大小:默認大小為 8196(此大小與 2.0.33 和 2.1.103 內核的默認 syslog 緩沖區大小一致), 如果你設置了一個大于默認值的環緩沖區, 那你就可以用這個選項定義一個相當的緩沖區 來查看完整的環緩沖區內容。
-n 級別 :設置級別為記錄控制臺啟動信息的級別。比如, -n 1 指的就是將此級別設為最低級, 除了內核恐慌信息之外不會向控制臺顯示信息。 所有級別的啟動信息還將記錄到 /proc/kmsg, 文件中,因此, syslogd(8) 同樣可以用來對信息的輸出進行控制。當使用 -n 選項時, dmesg 將 不會 清除內核環緩沖區中的內容。 當同時使用以上兩個選項時,只有最后一個選項才會產生效果。
示例:
ethtool命令
ethtool命令由于查詢或控制網絡驅動程序和硬件設置
使用格式示例:
ethtool eth* #查詢eth*網口基本設置
ethtool –h #顯示ethtool的命令幫助(help)
ethtool –i eth* #查詢eth*網口的相關信息
ethtool –d eth* #查詢eth*網口注冊性信息
ethtool –r eth* #重置eth*網口到自適應模式
ethtool –S eth* #查詢eth*網口收發包統計
ethtool –s eth* [speed 10|100|1000]\ #設置網口速率10/100/1000M
[duplex half|full]\ #設置網口半/全雙工
[autoneg on|off]\ #設置網口是否自協商
[port tp|aui|bnc|mii]\ #設置網口類型
常用選項:
-a 查看網卡中 接收模塊RX、發送模塊TX和Autonegotiate模塊的狀態:啟動on 或 停用off。
-A 修改網卡中 接收模塊RX、發送模塊TX和Autonegotiate模塊的狀態:啟動on 或 停用off。
-i 顯示網卡驅動的信息,如驅動的名稱、版本等。
-d 顯示register dump信息, 部分網卡驅動不支持該選項。
-e 顯示EEPROM dump信息,部分網卡驅動不支持該選項。
-E 修改網卡EEPROM byte。
-k 顯示網卡Offload參數的狀態:on 或 off,包括rx-checksumming、tx-checksumming等。
-K 修改網卡Offload參數的狀態。
-p 用于區別不同ethX對應網卡的物理位置,常用的方法是使網卡port上的led不斷的閃;N指示了網卡閃的持續時間,以秒為單位。
-r 如果auto-negotiation模塊的狀態為on,則restarts auto-negotiation。
-S 顯示NIC- and driver-specific 的統計參數,如網卡接收/發送的字節數、接收/發送的廣播包個數等。
-t 讓網卡執行自我檢測,有兩種模式:offline or online。
-s 修改網卡的部分配置,包括網卡速度、單工/全雙工模式、mac地址等。
數據來源
Ethtool命令顯示的信息來源于網卡驅動層,即TCP/ip協議的鏈路層。該命令在Linux內核中實現的邏輯層次為: 最重要的結構體struct ethtool_ops,該結構體成員為用于顯示或修改以太網卡配置的一系列函數指針,見下表中的第二列。 網卡驅動負責實現(部分)這些函數,并將其封裝入ethtool_ops結構體,為網絡核心層提供統一的調用接口。因此,不同的網卡驅動會給應用層返回不同的信息。Ethtool命令選項、struct ethtool_ops成員函數、Ethtool命令顯示參數的來源,三者間的對應關系如下表所示:
由上可見,ethtool命令用于顯示/配置網卡硬件(寄存器)。
實例
查看機器上網卡的速度:百兆還是千兆,請輸入:
[root@centos6 ~]# ethtool eth1 Settings for eth1: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on MDI-X: off (auto) Supports Wake-on: d Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes
操作完畢后,輸出信息中Speed:這一項就指示了網卡的速度。
停止網卡的發送模塊TX,請輸入:
[root@centos6 ~]# ethtool -A tx off eth1
操作完畢后,可輸入ethtool -a eth0查看tx模塊是否已被停止。
[root@centos6 ~]# ethtool -a eth1 Pause parameters for eth1: Autonegotiate: on RX: off TX: off
查看網卡eth0采用了何種驅動,請輸入:
[root@centos6 ~]# ethtool -i eth1 driver: e1000 version: 7.3.21-k8-NAPI firmware-version: bus-info: 0000:02:01.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: no
操作完畢后,顯示 driver: bnx2;version: 1.4.30 等信息。關閉網卡對收到的數據包的校驗功能,請輸入:
[root@centos6 ~]# ethtool -K eth2 rx off
操作完畢后,可輸入ethtool –k eth0,查看校驗功能是否已被停止。
[root@centos6 ~]# ethtool -k eth2 Features for eth2: rx-checksumming: off tx-checksumming: on tx-checksum-ipv4: off tx-checksum-unneeded: off tx-checksum-ip-generic: on tx-checksum-ipv6: off tx-checksum-fcoe-crc: off [fixed] tx-checksum-sctp: off [fixed] scatter-gather: on tx-scatter-gather: on tx-scatter-gather-fraglist: off [fixed] tcp-segmentation-offload: on tx-tcp-segmentation: on tx-tcp-ecn-segmentation: off tx-tcp6-segmentation: off udp-fragmentation-offload: off [fixed] generic-segmentation-offload: on generic-receive-offload: on large-receive-offload: off [fixed] rx-vlan-offload: on [fixed] tx-vlan-offload: on [fixed] ntuple-filters: off [fixed] receive-hashing: off [fixed] highdma: off [fixed] rx-vlan-filter: on [fixed] vlan-challenged: off [fixed] tx-lockless: off [fixed] netns-local: off [fixed] tx-gso-robust: off [fixed] tx-fcoe-segmentation: off [fixed] tx-gre-segmentation: off [fixed] tx-udp_tnl-segmentation: off [fixed] fcoe-mtu: off [fixed] loopback: off [fixed]
如果機器上安裝了兩塊網卡,那么eth0對應著哪塊網卡呢?輸入:
[root@centos6 ~]# ethtool -p eth2 10
操作完畢后,看哪塊網卡的led燈在閃,eth0就對應著哪塊網卡。
查看網卡,在接收/發送數據時,有沒有出錯?請輸入:
[root@centos6 ~]# ethtool -S eth2 NIC statistics: rx_packets: 253023 tx_packets: 32 rx_bytes: 28024224 tx_bytes: 2384 rx_broadcast: 0 tx_broadcast: 0 rx_multicast: 0 tx_multicast: 0 rx_errors: 0 tx_errors: 0 tx_dropped: 0 multicast: 0 collisions: 0 rx_length_errors: 0 rx_over_errors: 0 rx_crc_errors: 0 rx_frame_errors: 0 rx_no_buffer_count: 0 rx_missed_errors: 0 tx_aborted_errors: 0 tx_carrier_errors: 0 tx_fifo_errors: 0 tx_heartbeat_errors: 0 tx_window_errors: 0 tx_abort_late_coll: 0 tx_deferred_ok: 0 tx_single_coll_ok: 0 tx_multi_coll_ok: 0 tx_timeout_count: 0 tx_restart_queue: 0 rx_long_length_errors: 0 rx_short_length_errors: 0 rx_align_errors: 0 tx_tcp_seg_good: 0 tx_tcp_seg_failed: 0 rx_flow_control_xon: 0 rx_flow_control_xoff: 0 tx_flow_control_xon: 0 tx_flow_control_xoff: 0 rx_long_byte_count: 28024224 rx_csum_offload_good: 127055 rx_csum_offload_errors: 0 alloc_rx_buff_failed: 0 tx_smbus: 0 rx_smbus: 0 dropped_smbus: 0
將千兆網卡的速度降為百兆,請輸入:
[root@centos6 ~]# ethtool -s eth2 speed 100
綜合示例:
卸載網卡驅動:
[root@centos6 ~]# modprobe -r e1000 [root@centos6 ~]# rmmod e1000
裝載網卡驅動:
[root@centos6 ~]# modprobe e1000
注意:e1000為網卡驅動模塊由 ethtool -i eth2 獲得
最后重啟網絡服務,網卡就會重新識別
查看當前系統網卡驅動模塊存儲位置
[root@centos6 ~]# locate e1000.ko /lib/modules/2.6.32-642.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
配置動態路由
通過守護進程獲取動態路由;linux系統中quagga程序包支持多格式的RIP、OSPF和BGP。
通過yum安裝quagga
注意:安裝前請確認由可靠并配置正確的yum
[root@centos6 ~]# yum -y install quagga
quagga會將運行的腳本文件存放在/etc/rc.d/init.d/目錄下
而/etc/rc.d/init.d/中存放有很多服務的運行腳本
早期linux系統中沒有service命令,都是靠直接運行腳本來完成服務的管理的
所以我們有時管理某些服務如autofs可以由如下操作
我們現在需要啟動ospfd服務來開啟使用vtysh命令
注意:開啟sopfd服務之前要先將quagga的相關配置文件新建一下
然后開啟ospfs服務
然后就可以運行vtush命令進入類似思科管理界面,配置管理路由了
netstat命令
netstat命令顯示網絡連接,路由表,接口狀態,偽裝連接,網絡鏈路信息和組播成員組等Linux中網絡系統的狀態信息,可讓你得知整個Linux系統的網絡情況。
但是此命令有些過時并且相較于相同功能但更新的ss命令來說,在運行時對于資源的占用更多,所以推薦使用ss命令
常用語法格式:
顯示網絡連接:
netstat [–tcp|-t] [–udp|-u] [–raw|-w] [–listening|-l] [–all|-a] [–numeric|-n] [–extend|-e[–extend|-e]] [–program|-p]
選項:
-t: tcp協議相關
-u: udp協議相關
-w: raw socket(裸套接字)相關
-l: 處于監聽狀態
-a: 所有狀態
-n: 以數字顯示IP和端口;
-e:擴展格式
-p: 顯示相關進程及PID
常用組合:
-tan, -uan, -tnl, -unl
顯示路由表:
netstat {–route|-r} [–numeric|-n]
-r: 顯示內核路由表
-n: 數字格式
[root@localhost ~]# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.1.0.10.0.0.0 UG0 0 0 eno16777736 10.1.0.00.0.0.0 255.255.0.0 U 0 0 0 eno16777736 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
顯示接口統計數據:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p] [–numeric|-n]
查看所有端口
netstat -i
ifconfig
查看指定端口
netstat –I=IFACE
ifconfig -s eno16777736
信息列:
Iface:接口
MTU:數據包大小
OK/接收發送數據包正常
ERR/接收發送數據包報錯
DRP/接收發送數據包拋棄
OVR/接收發送數據包過載
ss命令
ss命令用來顯示處于活動狀態的套接字信息。ss命令可以用來獲取socket統計信息,它可以顯示和netstat類似的內容。
但ss的優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。 當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢。當服務器維持的連接達到上萬個的時候,,用ss節省時間。ss快的秘訣在于,它利用到了TCP協議棧中tcp_diag和netlink。tcp_diag是一個用于分析統計的模塊,可以獲得Linux 內核中第一手的信息,這就確保了ss的快捷高效。當然,如果你的系統中沒有tcp_diag,ss也可以正常運行,只是效率會變得稍慢。
標準使用格式:
ss [options] [ FILTER ]
選項:
-n:不解析服務名稱,以數字方式顯示;
-a:顯示所有的套接字(網絡連接);
-l:顯示處于監聽狀態(LISTEN)的套接字網路連接;
-o:顯示計時器信息(TCP定時器x);
-e:擴展的信息
-m:顯示套接字的內存使用情況;
-p:顯示使用套接字的進程信息;
-i:顯示內部的TCP信息;
-s:連接統計
-4:只顯示ipv4的套接字;
-6:只顯示ipv6的套接字;
-t:只顯示tcp套接字(等同于 -A tcp);
-u:只顯示udp套接字(等同于 -A udp);
-d:只顯示DCCP套接字(等同于 -A dccp);
-w:僅顯示RAW套接字(等同于 -A raw);
-x:僅顯示UNIX域套接字(等同于 -A unix)。
常用組合:
-tan, -tanl, -tanlp, -uan
常用用法:
ss -l 顯示本地打開的所有端口
ss -pl 顯示每個進程具體打開的socket
ss -t -a 顯示所有tcp socket
ss -u -a 顯示所有的UDP Socekt
ss -s 列出當前socket詳細信息
顯示信息項
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
TCP的常見狀態:
tcp finite state machine:
LISTEN: 監聽
ESTABLISHED:已建立的連接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
支持過濾
EXPRESSION:
dport =
sport =
示例:’ ( dport = :ssh or sport = :ssh )’
顯示所有已建立的ssh連接
ss -o state established '( dport = :ssh or sport = :ssh)'
顯示所有已建立的HTTP連接
ss -o state established '( dport = :http or sport =:http )'
網絡配置文件
使用命令進行的配置網絡多數只是臨時生效,永久生效則要配置相關文件
IP、 MASK、 GW、 DNS相關配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相關的配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
相關行:
DEVICE:此配置文件應用到的設備
HWADDR:對應的設備的MAC地址
BOOTPROTO:激活此設備時使用的地址配置協議,常用的dhcp, static, none, bootp
NM_CONTROLLED: NM是NetworkManager的簡寫,此網卡是否接受NM控制;建議CentOS6為“no”
ONBOOT:在系統引導時是否激活此設備
TYPE:接口類型;常見有的Ethernet, Bridge
UUID:設備的惟一標識
IPADDR:指明IP地址
NETMASK:子網掩碼
GATEWAY: 默認網關
DNS1:第一個DNS服務器指向
DNS2:第二個DNS服務器指向
USERCTL:普通用戶是否可控制此設備
PEERDNS:如果BOOTPROTO的值為“dhcp”,是否允許dhcp server分配的dns服務器指向信息直接覆蓋至/etc/resolv.conf文件中(設置為no,則當IP自動獲取時,dns手動配置)
/etc/sysconfig/network-scripts/route-IFACE
注意:需service network restart 生效
配置route-IFACE兩種風格:
(1) TARGET via GW
如: 10.0.0.0/8 via 172.16.0.1
(2) 每三行定義一條路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
示例:
route add -net 192.168.0.0/24 gw 172.16.0.2 dev eth1
可以在
/etc/sysconfig/network-scripts/route-eth1文件(沒有手動創建)中
192.168.0.0/24 via 172.16.0.2
10.0.0.0/8 via 172.16.0.2
或
ADDRESS1=192.168.0.0
NETMASK1=255.255.255.0
GATEWAY1=172.16.0.2
ADDRESS2=10.0.0.0
NETMASK2=255.0.0.0
GATEWAY2=172.16.0.2
本地解析器host
解析器執行正向和逆向查詢/etc/hosts
本地主機名數據庫和IP地址的映像
對小型獨立網絡有用
通常,在使用DNS前檢查
getent hosts 查看/etc/hosts 內容
格式:IP 域名
例如:
192.168.0.1 www.baidu.com
DNS域名解析
/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
/etc/nsswitch.conf
與/etc/hosts相比優先于DNS
正解: FQDN–>IP
# dig -t A FQDN
# host -t A FQDN
反解: IP–>FQDN
# dig -x IP
# host -t PTR IP
正常情況下本地解析器host的優先級高于DNS,但是在linux中可以通過修改/etc/nsswitch.conf
說明參考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
網卡名稱
rhel6之前,網絡接口使用連續號碼命名: eth0、 eth1等,當增加或刪除網卡時,名稱可能會發生變化
rhel7使用基于硬件,設備拓撲和設置類型命名:
(1) 網卡命名機制systemd對網絡設備的命名方式
(a) 如果Firmware或BIOS為主板上集成的設備提供的索引信息可用,且可預測則根據此索引進行命名,例如eno1
(b) 如果Firmware或BIOS為PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,則根據此信息進行命名,例如enp2s0
(d) 如果用戶顯式啟動,也可根據MAC地址進行命名,enx2387a1dc56
(e) 上述均不可用時,則使用傳統命名機制
基于BIOS支持啟用biosdevname軟件
內置網卡: em1,em2
pci卡: pYpX (Y:slot插槽 ,X:port接口)
(2) 名稱組成格式
en: Ethernet 有線局域網
wl: wlan 無線局域網
ww: wwan無線廣域網
名稱類型:
o: 集成設備的設備索引號
s: 擴展槽的索引號
x: 基于MAC地址的命名
ps: enp2s1
網卡設備的命名過程:
第一步:
udev
輔助工具程序/lib/udev/rename_device
/usr/lib/udev/rules.d/60-net.rules
第二步:
biosdevname 會根據/usr/lib/udev/rules.d/71-biosdevname.rules
第三步:
通過檢測網絡接口設備,根據
/usr/lib/udev/rules.d/75-net-description
ID_NET_NAME_ONBOARD
ID_NET_NAME_SLOT
ID_NET_NAME_PATH
CentOS6網卡名稱
eth#(0,1,2,….)
CentOS7網卡名稱
eno16777736
eno########
CentOS7以前網卡名稱有時會因為物理網卡的變動而發生變化(例如原先eth0,添加一塊新網卡就變成eth1,但是配置文件沒有改變,所以并不穩定)因此7以后改為eno########的命名方式
但是我們在有些時候希望使用傳統的命名方式的名稱,則可以如下操作:
使用傳統命名方式:
(1) 編輯/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="rhgb quiet"后面添加net.ifnames=0即:
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
(2) 為grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3) 重啟系統
由于grub2-mkconfig -o /etc/grub2.cfg是按照/etc/default/grub為模板更新/etc/grub2.cfg,而/etc/grub2.cfg其實是/boot/grub2/grub.cfg的符號鏈接文件所以可以直接修改–>/boot/grub2/grub.cfg已達到上面1、2操作
注意:此處由兩個linux16的行,另外一個是救援系統的!而且其它信息不要亂動,因為是內核參數,如果亂動會造成無法啟動的后果
以上操作針對所有網卡的名稱,但是網卡各自對應的配置文件名和當中的命名選項沒有改動,需要額外手動設置。
注意:建議生產環境下還是使用穩定的默認命名方式
nmcli命令
地址配置工具: nmcli
推薦在CentOS7上使用,6上不建議
注意:NeworkManager是管理和監控網絡設置的守護進程,運行此命令需要NetworkManager服務開啟
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device – show and manage network interfaces
nmcli device help
connection – start, stop, and manage network connections
nmcli connection help
修改IP地址等屬性:
#nmcli connection modify IFACE [+|-]setting.property value
setting.property:
ipv4.addresses ipv4.gateway ipv4.dns1 ipv4.method manual | auto
修改配置文件執行生效:
systemctl restart network重啟服務
或
nmcli con reload重新加載配置文件
nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0
示例:
connection可以簡寫
注意:圖中的名稱對應于/etc/sysconfig/network-scripts/ifcfg-###網卡文件中的“NAME=”這一項,修改此項就可以修改名稱
設備即網絡接口,連接是對網絡接口的配置。一個網絡接口
可有多個連接配置,但同時只有一個連接配置生效。
顯示所有包括不活動連接
[root@localhost ~]# nmcli connection show 名稱UUID 類型設備 eth0ab4ee136-d703-4d37-9339-085beec3e181 802-3-ethernet eth0 eth150f31347-a405-47c5-b4d3-c52e79ecdcf1 802-3-ethernet -- eth0e44ae173-22c3-479b-a2be-16df771e9ce7 802-3-ethernet -- eth1df090843-cd20-470b-8126-dbbc9a89fe16 802-3-ethernet eth1 virbr0 8a92c72b-3520-4a69-bc3d-2b467a17558e bridge virbr0
顯示所有活動連接
[root@localhost ~]# nmcli connection show --active 名稱UUID 類型設備 eth0ab4ee136-d703-4d37-9339-085beec3e181 802-3-ethernet eth0 eth1df090843-cd20-470b-8126-dbbc9a89fe16 802-3-ethernet eth1 virbr0 8a92c72b-3520-4a69-bc3d-2b467a17558e bridge virbr0
顯示網絡連接配置
nmcli connection show "網卡名稱" 顯示當前對應網卡的詳細信息
[root@localhost ~]# nmcli connection show "eth1" connection.id: eth1 connection.uuid:50f31347-a405-47c5-b4d3-c52e79ecdcf1 connection.interface-name: eth1 connection.type:802-3-ethernet ... GENERAL.MASTER-PATH:-- IP4.地址[1]:10.1.253.94/16 IP4.地址[2]:10.1.249.44/16 IP4.網關: 10.1.0.1 IP4.路由器[1]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1003 IP4.DNS[1]: 10.1.0.1 IP4.域[1]: magedu.com DHCP4.選項[1]: requested_ms_classless_static_routes = 1 ... DHCP4.選項[30]: dhcp_server_identifier = 10.1.0.1 IP6.地址[1]:fe80::20c:29ff:fe43:6497/64 IP6.網關:
顯示設備狀態
nmcli dev status
[root@localhost ~]# nmcli dev status 設備類型 狀態CONNECTION virbr0 bridge連接的 virbr0 eth0ethernet 連接的 eth0 eth1ethernet 連接的 eth1 lo loopback 未管理 -- virbr0-nic tap 未管理 --
顯示網絡接口屬性
nmcli dev show eth1
[root@localhost ~]# nmcli dev show eth1 GENERAL.設備: eth1 GENERAL.類型: ethernet GENERAL.硬盤: 00:0C:29:43:64:97 GENERAL.MTU:1500 GENERAL.狀態: 100 (連接的) GENERAL.CONNECTION: eth1 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2 WIRED-PROPERTIES.容器: 開 IP4.地址[1]:10.1.253.94/16 IP4.地址[2]:10.1.249.44/16 IP4.網關: 10.1.0.1 IP4.路由器[1]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1003 IP4.DNS[1]: 10.1.0.1 IP4.域[1]: magedu.com IP6.地址[1]:fe80::20c:29ff:fe43:6497/64 IP6.網關:
創建新連接default, IP自動通過dhcp獲取
nmcli con add con-name default type Ethernet ifname eth0
示例:
[root@localhost ~]# nmcli connection add con-name home type ethernet ifname eth1 autoconnect no [root@localhost ~]# nmcli connection add con-name office type ethernet ifname eth1 autoconnect no
創建新連接static ,指定靜態IP,不自動連接
nmcti con add con-name static ifname eth0 autoconnect no type Ethernet ip4 172.25.X.10/24 gw4 172.25.X.254
示例:
[root@localhost ~]# nmcli connection add con-name home type ethernet ifname eth1 autoconnect yes ip4 10.1.100.100/24 gw4 10.1.0.254 [root@localhost ~]# nmcli connection add con-name office type ethernet ifname eth1 autoconnect yes ip4 10.1.100.200/24 gw4 10.1.0.254
注意:以上命令執行過程中會自動生成/etc/sysconfig/network-scripts/ifcfg-,并且相關內容已經添加進文件內部,無論其dhcp還是固定的
但是要想啟用或切換對應配置需要運行如下命令:
nmcli connection up home
[root@localhost ~]# nmcli connection up home #或切換office配置 [root@localhost ~]# nmcli connection up office
刪除對應網卡配置連接
nmcli con del default
示例:
[root@localhost ~]# nmcli connection delete home
注意:此刪除操作會刪除對應網卡的配置文件
查看幫助
nmcli con add help
修改連接設置
nmcli con mod “static” connection.autoconnect no
nmcli con mod “static” ipv4.dns 172.25.X.254
nmcli con mod “static” +ipv4.dns 8.8.8.8
nmcli con mod “static” -ipv4.dns 8.8.8.8
nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”
nmcli con mod “static” +ipv4.addresses 10.10.10.10/16
修改連接配置后,需要重新加載配置
nmcli con reload
nmcli con down “system eth0” 可被自動激活
nmcli con up “system eth0”
nmcli dev dis eth0 禁用網卡,訪止被自動激活
圖形工具
nm-connection-editor
網絡組Network Teaming
網絡組:是將多個網卡聚合在一起方法,從而實現冗錯和提高吞吐量
網絡組不同于舊版中bonding技術,提供更好的性能和擴展性
網絡組由內核驅動和teamd守護進程實現.
多種方式runner
broadcast(廣播)
roundrobin(輪流)
activebackup(活動備份)
loadbalance(負載均衡)
lacp (implements the 802.3ad Link Aggregation Control Protocol)鏈路聚合控制協議:需要匯聚層交換機支持
網絡組
啟動網絡組接口不會自動啟動網絡組中的port接口
啟動網絡組接口中的port接口不會自動啟動網絡組接口
禁用網絡組接口會自動禁用網絡組中的port接口
沒有port接口的網絡組接口可以啟動靜態IP連接
啟用DHCP連接時,沒有port接口的網絡組會等待port接口的加入
創建網絡組接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME 連接名, INAME 接口名
JSON 指定runner方式
格式: '{"runner": {"name": "METHOD"}}'
METHOD 可以是broadcast, roundrobin,
activebackup, loadbalance, lacp
示例:
[root@localhost ~]# nmcli connection add con-name team0 type team ifname team0 config '{"runner"{"name":"activebackup"}}'
創建port接口
nmcli con add type team-slave con-name CNAME
ifname INAME master TEAM
CNAME 連接名
INAME 網絡接口名
TEAM 網絡組接口名
連接名若不指定,默認為team-slave-IFACE
示例:
[root@localhost ~]# nmcli connection add con-name team0 -eth1 type team-slave ifname eth1 master team0 [root@localhost ~]# nmcli connection add con-name team0 -eth2 type team-slave ifname eth2 master team0
然后配置team0網絡組的ip地址
設置IP
# nmcli con mod team0 ipv4.addresses 192.168.1.100/24
設置固定IP模式
# nmcli con mod team0 ipv4.method manua
INAME 設備名 CNAME 網絡組接口名或port接口
對應生成以下文件
管理網絡組配置文件
# /etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}"
BOOTPROTO=none
IPADDR0=172.25.5.100
PREFIX0=24
NAME=team0
網絡組成員文件(一個或多個)
# /etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes
ONBOOT=yes
啟用網絡組
# nmcli con up team0
# nmcli con up team0-eth1
# nmcli con up team0-eth2
查看網絡組狀態
#teamdctl team0 state
使用nmcli命令配置主機名
rhel6之前主機名配置文件: /etc/sysconfig/network
rhel7.0主機名配置文件:/etc/hostname ,默認沒有這個文件, 通過DNS反向解析獲取主機名, 主機名默認為:localhost.localdomain
顯示主機名信息
hostname
hostnamectl status
[root@localhost ~]# hostname localhost.localdomain [root@localhost ~]# hostnamectl status Static hostname: localhost.localdomain Icon name: computer-vm Chassis: vm Machine ID: 6bac7ebde6464025ad032e7509ed872a Boot ID: da759007bf444c96bb86ed3148c68888 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-327.el7.x86_64 Architecture: x86-64
創建并修改文件并生效
hostnamectl set-hostname HOSTNAME
立刻生效而且對應配置文件/etc/hostname也會更改
刪除文件,恢復主機名localhost.localdomain
DNS設置,存放在/etc/resolv.conf文件中
PEERDNS=no 表示當IP通過dhcp自動獲取時, dns仍是手動設置,不自動獲取。等價于下面命令:
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes
測試網絡
在命令行下測試網絡的連通性
測試網絡連通性
ping
mtr
顯示正確的路由表
ip route
確定名稱服務器使用:
nslookup
host
dig
跟蹤路由
traceroute
Tracepath
網絡客戶端工具
lftp, ftp, lftpget, wget
# lftp [-p port] [-u user[,password]] SERVER
子命令:
get、 mget(下載多個文件)、 ls、 help、lcd(跳轉目錄)、passive模式切換
# ftp
# lftpget URL [URL…](非交互式下載一個地址一個文件(支持多地址))
lftpget ftp://10.1.0.1/pub….iso
# wget(支持下載ftp或http資源)
wget [option]… [URL]…[DIR]
-q: 靜默模式
-c: 斷點續傳
-O: 保存位置
–limit-rates=: 指定傳輸速率
注意:
!COMMAND:表明在本機運行
COMMAND:表明在ftp服務器上運行
links瀏覽器
抓取網站文件
links –dump > FILE.txt
抓取網站腳本
links –source
curl瀏覽器
curl
原創文章,作者:NameLess,如若轉載,請注明出處:http://www.www58058.com/45025