-
基本網絡配置:
將Linux主機接入到網絡,需要配置網路相關設置。
IP/NETMASK:本地通信
路由(網關):跨網絡通信
DNS服務器地址:基于主機名的通信
主DNS服務器
次DNS服務器
第三DNS服務器
2.網絡配置方式:
(1)靜態指定:
①命令:
CentOS 5 6 7 都可用:
ifcfg家族:
ifconfig:配置IP,NETMASK
route:路由
netstat:狀態及統計數據查看
iproute2家族:
ip OBJECT:
addr:地址和掩碼
link:接口
route:路由
ss:查看狀態和統計數據,性能比netstat 好很多
CentOS 7專屬
nm家族:
nmcli:命令行工具
nmtui:圖形界面工具
注意:
(1)DNS服務器指定
配置文件:/etc/resolv.conf
(2)本地主機名配置
hostname
配置文件:/etc/sysconfig/network
CentOS7:hostnamectl
②配置文件:
RedHat及其相關發行版:
/etc/sysconfig/network-scripts/ifcfg-*
(2)動態分配:依賴于本地網絡中的DHCP服務
DHCP: Dynamic Host Configuration Protocol
3.網絡接口命名方式:
傳統命名:CentOS 5 6 7
以太網:eth[0,1,2,…]
ppp :ppp[0,1,2,…]
可預測命名方案(CentOS 7 )
支持多種不同的命名機制:
firmware,拓撲結構
(1)如果firmware或BIOS為主板上面集成的設備提供的索引信息可用,則根據此索引進行命名:如eno1,eno2
(2)如果firmware或BIOS為PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1,ens2
(3)如果硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0,…
(4)如果用戶顯式定義,也可以根據MAC地址命名,例如enx122161ab2e10,…
上述均不可用,則使用傳統命名方式命名;
命名格式的組成:
en:Ethernet
wl:wlan
ww:wwan
名稱類型:
o<index>:集成設備的設備索引號
s<slot>:擴展槽的索引號
x<MAC>:基于MAC地址的命名
p<bus>s<slot>: 基于總線級槽的拓撲結構進行命名;
4.ifconfig 命令
ifconfig [interface]
# ifconfig -a :顯示所有接口,包括inactive狀態的接口
# ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address …
# ifconfig IFACE IP/mask [up]
#ifconfig eth1 192.168.12.12/24 [up]
# ifconfig IFACE IP netmask MASK
#ifconfig eth1 192.168.12.13 netmask 255.255.255.0 [up]
注意:立即送往內核中的TCP/IP協議棧,并生效,遠程連接的終端會立即斷掉。
啟用混雜模式:[-]promisc
#ifconfig eth1 [-]promisc
ifconfig管理IPv6的地址:
添加 #ifconfig add addr(網絡地址)/prefixlen(掩碼長度)
刪除 #ifconfig del addr(網絡地址)/prefixlen(掩碼長度)
5.route命令:路由查看及管理
路由條目類型:
主機路由:目標地址為單個IP
網絡路由:目標地址為IP網絡
默認路由:目標為任意主機,0.0.0.0/0.0.0.0
(1)查看當前系統的路由表:
route -n
Destination:目標路由的ip地址
Gateway:目標路由的網關地址
Genmask:目標路由的子網掩碼
Flags:代表現在的狀態(U代表的是up啟用,G代表的它現在是一個網關)
Iface:代表的是本機的哪塊網卡向外連接路由的,哪塊網卡發送出去
(2)添加路由表:
route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
gw:代表的是下一跳地址
網關和本地的網絡地址在同一個網段之內。
添加路由表實例:
a.目標:192.168.1.3 網關:172.16.0.1
# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
b.目標:192.168.0.0 網關:172.16.0.1
# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
c.默認路由,網關:172.16.0.1
# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
# route add default gw 172.16.0.1
(3)刪除路由表:
route del
route del [-net|-host] target [gw Gw] [netmask Nm] [dev] If]
刪除路由表實例:
a.目標:192.168.1.3 網關:172.16.0.1
# route del -host 192.168.1.3
b.目標:192.168.0.0 網關:172.16.0.1
# route del -net 192.168.0.0 netmask 255.255.255.0
c.刪除默認路由:
#route del default
6.netstat命令:顯示網絡連接
網路中每當建立一個連接時,都會生成一個套接字服務(socket)進行遠程連接。
netstat – Print network connections, routing tables, interface statistics, masquerade connections, and multicast membership
(1)netstat -rn :以數字格式顯示內核路由表(相當于使用route -n)
Destination:目標路由的ip地址
Gateway:目標路由的網關地址
Genmask:目標路由的子網掩碼
Flags:代表現在的狀態(U代表的是up啟用,G代表的它現在是一個網關)
Iface:代表的是本機的哪塊網卡向外連接路由的,哪塊網卡發送出去
(2)netstat命令詳解:
-t: tcp協議相關:面向連接的協議:通信開始之前,要建立一個虛鏈路;通信完成后還有拆除連接;
-u: udp協議相關;無連接的協議;直接發送數據報文;
<應用層上面的協議一般式通過TCP或者UDP協議實現的,或者裸套接字實現的>
-w: raw socket 相關(裸套接字)
-l: 處于監聽狀態的連接,服務程序一般式監聽狀態
-a: 所有狀態的連接;
-n: 以數字顯示IP和端口;
-e :擴展格式;
-p: 顯示相關進程及PID
netstat -lp:顯示處于監聽狀態程序的進程管理和PID
※netstat常用組合:
Proto:協議類型
Recv-Q:接收隊列長度(隊列長度代表的是隊列中請求數量的個數)
Send-Q:發送隊列長度
Local Address:本機地址
Foreign Address: 遠程地址(使用哪個地址和端口連接進來的(地址:端口))
State:現在的連接處于一個什么樣的狀態(FSM)
LISTEN:通常用在服務的監聽part,使用"-l"參數進行查閱
ESTABLISHED:已經建立連接的狀態
SYN-SENT:發出主動連接(SYN標志)的連接數據包
SYN_RECV:接收到一個要求連接的主動連接數據包
FIN_WAIT1:該套接字服務(socket)已中斷,該連接正在斷線中
FIN_WAIT2:該連接已經掛斷,但正在等待對方主機響應斷線確認的數據包。
TIME_WAIT:該連接已經掛斷,但socket還在網絡上面等待
netstat -tan:以數字形式顯示tcp協議連接的所有IP和端口
netstat -uan:以數字形式顯示udp協議連接的所有IP和端口
netstat -tnl:以數字形式顯示tcp協議監聽的所有IP和端口
netstat -unl:以數字形式顯示udp議監聽的所有IP和端口(UDP雖然處于監聽狀態,但是在state下面不會顯示LISTEN狀態)
(3)顯示接口統計數據:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p] [–numeric|-n]
a.所有接口:# netstat -i (顯示所有網卡接口的統計數據)
b.指定接口:# netstat -IIFACE(netstat -Ieno16777736) (顯示指定網卡的接口的統計數據)
7.啟用和關閉端口:ifup ifdown
該命令會讀?。?etc/sysconfig/network-scripts/ifcfg-*(eth0 eth1 eno1677736等網卡的配置文件)
#ifup eth1
#ifdown eth2
8.主機名知識:
(1)配置網絡主機名:
CentOS6.x:主機名配置文件的路徑:/etc/sysconfig/network
CentOS7.x:主機名配置文件的路徑:/etc/hostname
默認是沒有這個文件的,通過DNS反向解析獲取主機名,主機名默認為: localhost.localdomain
(2)查看主機名信息:
hostname(CentOS6.x CentOS7.x通用的命令)
hostnamectl status(CentOS7.x的專用命令,查看更加詳細的主機信息)
(3)設置主機名:
a.CentOS6.x
hostname 主機名:暫時生效,重啟機器之后就會失效
/etc/sysconfig/network:修改配置文件的設置不會立即生效,但會一直有效,重讀(source/.)就會生效。
b.CentOS7.x
hostnamectl set-hostname 主機名:立即生效
CentOS7.x一般情況下不用修改配置文件,使用hostnamectl set-hostname進行修改主機名。
(4)配置DNS服務器指向:
DNS配置文件的位置: /etc/resolv.conf
nameserver DNS_SERVER_IP
DNS服務器知識:
DNS服務配置需要指明 nameserver 10.1.0.1 (DNS的服務地址一定是使用IP去配置的,不要使用路徑名)
Linux系統最多識別三個DNS服務
DNS服務器解析的時候,先解析本地的/ets/hosts配置文件,后解析DNS服務器
DNS服務配置測試實例:
解釋:當時開始ping www.sjsir.cn 因為本地的10.1.252.234的CentOS6.8系統沒有去連接互聯網,所以無法識別www.sjsir.cn的網站,我們在/etc/hosts的配置文件中,添加名稱地址解析 10.1.1.100 www.sjsir.cn sjsir.cn 當繼續ping www.sjsir.cn 或者ping sjsir.cn 都會自動解析到10.1.1.100這個IP地址。發現/etc/hosts文件已經生效。
測試DNS服務器:
①dig -t A FQDN
dig -t A www.sjsir.cn (以主機名為www.sjsir.cn的個人網站來說)
※使用dig解析的時候是通過解析網絡中的DNS服務器得到真正的對應ip,www.sjsir.cn對應的主機ip為123.206.51.70,而不會去讀取/etc/hosts文件
②dig -x IP 將網絡IP轉化為主機名,但是互聯網上的主機名(域名)一般不支持反向解析,只可從主機名解析成IP,不支持IP解析成主機名
9.iproute2家族:
(1)ip命令:配置Linux網絡屬性
ip – show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
ip OBJECT : { link | addr | route }
①ip link – network device configuration(網絡設備配置)
a.ip link set dev IFACE:可設置屬性
ip liink set [dev] name
up/down:是否啟用該網卡 ip link set eth1 up/down
multicast on/off:啟用或者禁用多播功能
name NAME:重命名網絡接口名稱(重命名網絡接口時應該提前將網口禁用(down),修改完成之后再啟用(up))
mtu NUMBER:設置MTU(以太網接口)的大小,默認為1500
netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間
b.ip link show [dev IFACE] :查看的鏈接屬性,看二層設備的相關屬性,和IP地址的相關屬性無關(ip link show<—>ip link list)
[up] :僅顯示處于激活狀態的接口
c.ip link help:顯示簡要的使用幫助
②ip netns:ip -manage network namespace
ip netns list:列出所有的netns
ip netns add NAME:創建指定的netns
ip netns del NAME:刪除指定的netns
ip netns exec NAME COMMAND:在指定的netns中運行命令
③ip address – protocol address management
ip address add :添加新的ip address
ip addr add IFADDR dev IFACE:可以為同一網卡添加多個IP地址,但是在同一網段內的網卡需要區分主次網卡等。
ip addr add 10.1.100.100/8 dev eth1
※注意:在已有的網卡添加IP地址時,添加后的地址分區主次等地址,ifconfig命令默認顯示eth1網卡添加的第一個地址,但是對eth1:0網卡指明卷標之后的網卡,也會在ifconfig中顯示,即使eth1:0在 ip addr show顯示為次網卡,也回顯示在ifconfig中。
可以省略的選項:
ip addr add label NAME:為額外添加的地址指明接口別名
ip addr add 10.1.100.100/8 dev eth1 label eth1:0
ip addr add broadcast ADDRESS:廣播地址,會根據IP和NETMASK自動計算得到,是正確的廣播地址。
ip addr add scope {global|link|host}:指明作用域
global: 全局可用;
link: 僅鏈接可用;
host: 本機可用;
ip address delete:刪除原有的ip address 用法相同于ip address add
ip addr delete IFADDR dev IFACE
ip addr delete 10.1.1.100/8 dev eth1
ip address show:查看系統上面的ip address
[IFACE]:顯示系統指定IFACE的接口的詳情
ip address flush :清空所有的ip address
④ip route – routing table management
ip route add – add new route
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET代表的是目標路由
GW代表下一跳的路由
IFACE代表的是指定的哪張網卡
SOURCE_IP代表的是本地網卡的原地址
#ip route default via GW dev IFACE 添加默認路由
ip route change – change route 改變路由和添加路由的使用格式相似
ip route replace – change or add new one 和添加路由的使用格式相似
ip route delete – delete route 刪除路由
ip route del TYPE-PRIFIX
#ip route del 192.168.10.1/24 :刪除到192.168.10.1的路由條目
※:當一個條目上面有多個默認路由時,需要制定刪除的路由的地址
ip route show – list routes 顯示路由
ip route flush – flush routing tables
ip route get-get a single route
#ip route get 192.168.10.1/24 :默認到192.168.10.1的詳細信息
10.網絡路由實戰:
①為網卡eth1添加兩個指定的ip地址:
ip addr add 10.1.100.100/8 dev eth1
ip addr add 10.1.100.200/8 dev eth1
ip addr list dev eth1
② 配置路由,要想到達172.16.100.200需要經由10.1.100.100
ip route add 172.16.100.200/16 via 10.1.100.100 dev eth1
③查看配置完的ip路由
ip route list (ip route list dev eth1)
※默認未指出src,即自動選擇10.1.100.200或者10.1.100.100中的任意一個
11.CentOS7上面采用傳統命名方式:
(1)編輯/etc/default/grup配置文件:GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
或修改/boot/grub2/grub.cfg
(2)為grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3)重啟系統
(4)修改網卡的配置文件
cd /etc/sysconfig/network-scripts/
mv ifcfg-eno16777736 ifcfg-eth0
修改里面的的:
DEVICE=eth0
name=eth0
12.ss命令:
ss和netstat的命令區別:
netstat 通過遍歷proc 來獲取socket 信息
ss 使用netlink 與內核tcp_diag模塊通信獲取socket 信息。
格式:ss [OPTION]… [FILTER]
選項:
-t: TCP協議相關的連接
-u: UPD協議相關的連接
-w: 裸套接字相關
-l: 監聽狀態的連接
-a: 所有狀態的鏈接
-n: 數字格式
-p: 相關的程序及PID
-e: 擴展的信息
-m :內存用量
-o :計時器信息
-x :unix sock 相關
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 )’
常用組合:
-tan, -tanl, -tanlp, -uan
常見用法
ss -l 顯示本地打開的所有端口
ss -pl 顯示每個進程具體打開的socket
ss -t -a 顯示所有tcp socket
ss -u -a 顯示所有的UDP Socekt
ss -o state established '( dport = :ssh or sport = :ssh)' 顯示所有已建立的ssh 連接
ss -o state established '( dport = :http or sport =:http )' 顯示所有已建立的HTTP 連接
ss -s 列出當前socket
13.網卡接口的配置文件(IP/NETMASK/GW/DNS): /etc/sysconfig/network-scripts/ifcfg-IFACE
使網卡重啟有效的兩種方法:
①使用文本編輯器(vim/nano)修改配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE
②通過專用的系統命令進行修改:
CentOS6.x:system-config-network / setup
CentOS7.x:nmtil
※配置文件修改之后,若想生效,需要重啟網絡服務。
重啟網路服務的方法:
CentOS6.x:service network {start|stop|status|restart}
CentOS7.x:systemctl {start|stop|restart|status} network.service
通過配置文件進行修改文件:
vim /etc/sysconfig/network-scripts/ifcfg-IFACE 說明參考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
DEVICE:此配置文件應用到的設備(和ifcfg-IFACE相同)
ONBOOT:在系統引導時是否激活此設備
UUID :設備的惟一標識
HWADDR:對應的設備的MAC 地址
BOOTPROTO:激活此設備時使用的地址配置協議,常用的dhcp, static, none, bootp
NM_CONTROLLED :NM 是NetworkManager 的簡寫,此網卡是否接受NM 控制;建議CentOS6 為“no”
TYPE :接口類型;常見有的Ethernet, Bridge
IPADDR :指明IP 地址
NETMASK :子網掩碼
GATEWAY: 默認網關
DNS1:第一個DNS 服務器指向
DNS2:備用DNS 服務器指向
DOMAIN:DNS搜索域
USERCTL :普通用戶是否可控制此設備
PEERDNS :如果BOOTPROTO 的值為“dhcp” ,是否允許dhcp server 分配的dns 服務器指向信息直接覆蓋至/etc/resolv.conf 文件中
14.配置路由的相關配置文件:/etc/sysconfig/network-scripts/route-IFACE
支持兩種配置方式,但不能混用:
(1)每行定義一個路由條目:
TARGET via GW
例如:10.0.0.0/8 via 172.16.0.1
(2)每三行定義一個路由條目:
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
15.網卡名稱
網絡接口識別并命名相關的udev 配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看網卡:
dmesg |grep –i eth
ethtool -i eth0
卸載網卡驅動:
modprobe -r e1000
rmmod e1000
裝載網卡驅動:
modprobe e1000
16.網絡接口配置-bonding(CentOS6)
Bonding
就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC 地址。
Bonding 的工作模式
Mode 0 (balance-rr)
輪轉(Round-robin )策略:從頭到尾順序的在每一個slave接口上面發送數據包。本模式提供負載均衡和容錯的能力
Mode 1 (active-backup)活動- 備份(主備)策略:在綁定中,只有一個slave 被激活。當且僅當活動的slave 接口失敗時才會激活其他slave 。為了避免交換機發生混亂此時綁定的MAC 地址只有一個外部端口上可見
Mode 3 (broadcast)廣播策略:在所有的slave 接口上傳送所有的報文。本模式提供容錯能力。
miimon是用來進行鏈路監測的。如果miimon=100,那么系統每100ms監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路
詳細幫助參看:/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
Bonding配置(Bonding實戰)
①創建bonding 設備的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-bond0
②在配置文件中添加下面的內容(ifcfg-bond0)
DEVICE=bond0
IPADDR=10.1.37.37
PREFIX=16
GATEWAY=10.1.37.37
DNS1=8.8.8.8
BONDING_OPTS= “miimon=100 mode=1”
③修改第一塊網卡的配置文件(ifcfg-eth0)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
MASTER=bond0
SLAVE=yes
④修改第二塊網卡的配置文件(ifcfg-eth1)
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
MASTER=bond0
SLAVE=yes
⑤查看bond0 狀態:cat /proc/net/bonding/bond0
例,當前系統對外的是那塊網卡生效。(假設第一塊網卡(eth0)生效)
⑥測試Bonding是否生效的
物理將第一塊網卡eth0 down掉,然后查看第二塊網卡eth1是不是自動啟動,在短暫的時間之內是否啟動起來,若第二塊網卡能啟動起來,則bonding設置成功。
⑦刪除bonding
ifconfig bond0 down
rmmod bonding
原創文章,作者:sjsir,如若轉載,請注明出處:http://www.www58058.com/44413