Linux網絡配置基礎二(網絡模塊與nmcli命令)

Linux網絡配置基礎二

相關命令

lsmod命令

lsmod命令用于顯示已經加載到內核中的模塊的狀態信息。執行lsmod命令后會列出所有已載入系統的模塊。Linux操作系統的核心具有模塊化的特性,應此在編譯核心時,務須把全部的功能都放入核心。您可以將這些功能編譯成一個個單獨的模塊,待需要時再分別載入。
Linux網絡配置基礎二(網絡模塊與nmcli命令)
第一列:表示模塊的名稱
第二列:表示模塊的大小
第三列:表示依賴模塊的個數
第四列:表示依賴模塊的內容
常用使用格式類似于:(查詢當前系統是否加載某些模塊)
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 將 不會 清除內核環緩沖區中的內容。 當同時使用以上兩個選項時,只有最后一個選項才會產生效果。
示例:
Linux網絡配置基礎二(網絡模塊與nmcli命令)
Linux網絡配置基礎二(網絡模塊與nmcli命令)

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命令顯示參數的來源,三者間的對應關系如下表所示:
Linux網絡配置基礎二(網絡模塊與nmcli命令)

由上可見,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可以由如下操作
Linux網絡配置基礎二(網絡模塊與nmcli命令)

我們現在需要啟動ospfd服務來開啟使用vtysh命令
注意:開啟sopfd服務之前要先將quagga的相關配置文件新建一下
Linux網絡配置基礎二(網絡模塊與nmcli命令)

然后開啟ospfs服務
Linux網絡配置基礎二(網絡模塊與nmcli命令)
然后就可以運行vtush命令進入類似思科管理界面,配置管理路由了
Linux網絡配置基礎二(網絡模塊與nmcli命令)

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
Linux網絡配置基礎二(網絡模塊與nmcli命令)
Linux網絡配置基礎二(網絡模塊與nmcli命令)

顯示路由表:
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
Linux網絡配置基礎二(網絡模塊與nmcli命令)
信息列:
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
Linux網絡配置基礎二(網絡模塊與nmcli命令)
Linux網絡配置基礎二(網絡模塊與nmcli命令)

說明參考/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"
Linux網絡配置基礎二(網絡模塊與nmcli命令)
(2) 為grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
Linux網絡配置基礎二(網絡模塊與nmcli命令)
(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操作
Linux網絡配置基礎二(網絡模塊與nmcli命令)
注意:此處由兩個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
示例:
Linux網絡配置基礎二(網絡模塊與nmcli命令)
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還是固定的
Linux網絡配置基礎二(網絡模塊與nmcli命令)
Linux網絡配置基礎二(網絡模塊與nmcli命令)
但是要想啟用或切換對應配置需要運行如下命令:
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 禁用網卡,訪止被自動激活

Linux網絡配置基礎二(網絡模塊與nmcli命令)

圖形工具
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

(2)
NameLessNameLess
上一篇 2016-09-09
下一篇 2016-09-09

相關推薦

  • 高級文件文件系統管理之btrfs系統

    一.概述 btrfs文件系統:     技術預覽版     btrfs (B-tree,Butter FS,Better FS),GPL,Oracle,2007,CoW     ext3/ext4,xfs 核心特性:  &nbsp…

    Linux干貨 2016-09-11
  • 文件的權限小結

    主要是setfacl 和chown的總結

    Linux干貨 2017-11-27
  • Linux基本知識之Vim編輯器

    vim文本編輯器:    vim是Linux系統上的最著名的文本/代碼編輯器,也是早年的vi編輯器的加強版,而gVim則是其windows版。它的最大特色是完全使用鍵盤命令進行編輯,脫離了鼠標操作雖然使得入門變得困難,但上手之后鍵盤流的各種巧妙組合操作卻能帶來極大幅度的效率的提升。 (1)打開文件與關閉文件:     …

    Linux干貨 2016-08-10
  • 冥界之王-第8周作業

       1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。     網橋:網橋(Bridge)是早期的兩端口二層網絡設備,用來連接不同網段。網橋的兩個端口分別有一條獨立的交換信道,        &nbs…

    Linux干貨 2016-10-23
  • 修復引導啟動

    修復MBR 備份MBR: dd if=/dev/sda of=/root/mbr.bak ?bs=1 ?count=512 ?破壞 dd if=/dev/zero of=/dev/sda ?bs=1?count=446 這里只要小于等于446即可。 借助安裝光盤修復 裝入光盤,在光盤引導界面選擇 然后全部默認進入救援命令界面 切換根目錄 使用grub-ins…

    2017-12-24
  • 幽默:程序員的進化

    高中時期 view plaincopy to clipboardprint? 10 PRINT "HELLO WORLD"   20 END 大學新生 view plaincopy to clipboardprint? …

    Linux干貨 2016-05-17
欧美性久久久久