第12章,網絡管理(下)網絡基礎配置
Linux學習從入門到打死也不放棄,完全筆記整理(持續更新,求收藏,求點贊~~~~)
http://blog.51cto.com/13683480/2095439
筆記整理開始時間:2018年5月2日18:52:09
第12章,網絡管理(下)網絡基礎配置
本章內容
IP地址配置
路由管理
配置文件管理
DNS配置
基本網絡配置
將linux主機接入到網絡,需要配置網絡相關設置。
一般包括如下操作:
主機名
IP/netmask
路由:默認網關
DNS服務器
主DNS服務器
次DNS服務器
第三DNS服務器
centos6網卡名稱:
接口命名方式:centos 6
以太網:eth[0,1,2,...]
ppp: ppp[0,1,2,...]
網絡接口識別並命名相關的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看網卡驅動:
dmesg dmesg | grep -i eth
ethtool ethtool -i eth0
卸載網卡驅動:
modprobe modprobe -r e1000
rmmod rmmod e1000
裝載網卡驅動:
modprobe e1000
網絡配置方式:
靜態指定:
ifconfig,route,netstat
ip:object{link,addr.route},ss,rc
system-config-network-tui,setup
配置文件
動態分配:
DHCP:Dynamic Host Configuration Protlcol
ifconfig:
ifconfig [interface] 查看網絡接口
ifconfig -a 顯示所有網絡接口(包含狀態為down)
ifconfig InterFace [up|down] 啟用、關閉網絡接口(網卡)
ifconfig interface [aftype] options | address
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK 配置IP地址
註意:
修改立即生效
啟用混雜模式:[-]promisc
route:
路由記錄類型:
主機路由 -host
網絡路由 -net netmask
默認路由
查看:
route -n
添加路由:route add
route add [-host|-net] target [netmask NM] [gw GW] [dev IFACE]
添加主機路由:
目標192.168.1.3 網關 172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 [dev eth0]
添加網絡路由:
目標:192.168.0.0 網關 172.16.0.1
route add -net 192.168.0.0/24 gw 172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
添加默認路由:
默認路由網關: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
刪除路由:route del
route del [-host|-net] target [gw GW] [netmask NM] [dev IF]
刪除主機路由:
目標:192.168.1.3 網關 172.16.0.1
route del -hos 192.168.1.3 gw 172.16.0.1
刪除網路路由:
目標:192.168.0.0 網關 172.16.0.1
route -net 192.168.0.0 netmask 255.255.255.0
刪除默認路由:
route del default gw 172.16.0.1
###配置動態路由:
通過守護進程獲取動態路由
### 安裝quagga包
### 主持多種路由協議:rip,ospf。bgp
### 命令vtysh配置
netstat:
print network connections,routing tables,interface statistics,
masquerade connections,and multicast memberships
顯示網路連接:
netstat [--tcp|-t][--udp|-u][--raw|-w][--listening|-l][--all|-a]
[--numeric|-n][--extend|-e][--program|-p]
-t|--tcp tcp協議
-u|--udp udp協議
-w|--raw raw socket相關
-l|--listen 處於監聽狀態
-a|--all 所有狀態
-n|--numeric 以數字顯示IP和端口
-e|--extend 擴展格式
-p|--program 顯示相關進程及PID
常用組合:
-tan ,-uan,-tnl -unl
顯示路由表:
netstat {--route|-r}[--numeric|-n]
-r 顯示內核路由表
-n 數字格式
顯示接口統計數據:
netstat {--interface|-l}[iface][--all|-a][--extend|-e]
[--program|-p][--numeric|-n]
netstat -i
netstat -I=IFACE
ifconfig -s iface
ip:
配置Linux網絡屬性:ip命令
ip - show / manipulate routing,devices,policy routing and tunnels
顯示/操作路由、設備、策略路由和隧道
格式:
ip [options] objecet {command|help}
object: {link|addr|route..}
PS: centos6 默認不支持ip等命令補全,需安裝輔助包 epel源中
yum install bash-completion
ip link:
ip link -network device configuration 網絡設備配置
ip link set IFACE up|down == ifconfig IFACE up|down
down掉之後ifconfig 需要加-a選項查看,ip a, ip link 可直接看到狀態down
ifup/ifdown:
需要由配置文件,且down掉之後ifconfig可以查看網卡
ip link 狀態也依然up
ip link show iface 單獨查看某一網卡
ip addr:
address|ad|a...:
ip addr {add | del} IFADDR dev STRING
[label LABEL] 添加地址時指明網卡別名如(:#)
[scope{global,link,host}] 指明作用域
globel:全局可用
link:僅鏈接可用
host:本機可用
[broadcast ADDRESS]:指明廣播地址
ip addr show|flush dev IFACE 查看清空IP地址
ip route:
ip route add 添加路由
ip route add TARGET via GW dev IFACE src SOURCE-IP
TARGET:
主機路由:IP
網絡路由:NET/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.6.6 via 172.16.0.1
添加網關:
ip route add default via GW
ip route add default via 172.16.0.1
ip route delete 刪除路由
ip route delete TARGET
ip route show|list 顯示路由
ip route flush [dev IFACE][via PREFIX]
清除路由
ss:命令
格式:ss [option]...[FILTER]
netstat 通過遍歷proc來獲取socket信息,ss使用netlink與內核tcp_diag模塊
通信獲取socket信息
選項:
-t tcp協議先關
-u udp協議相關
-w 裸套接字相關
-l listen狀態的連接
-a 所有
-n 數字格式
-p 相關的程序及PID
-e 擴展的信息
-m 內存用量
-o 計時器信息
-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)'
ss state ESTABLISHED sport = :ssh
常用組合:
-tan ,-tanl, -tanlp,-uan
常見用法:
ss -l 顯示本地打開的所有端口
ss -pl 顯示每個進程具體打開的socket
ss -ta 顯示所有的tcp socket
ss -ua 顯示所有的udp socket
ss -o state established '( dport = :ssh or sport = :ssh )'
顯示所有已建立的ssh連接
ss -o state established '( dport = :http or spout = :http )'
顯示所有已建立的http連接
ss -s 列出當前socket的詳細信息
網絡配置文件:
ip,mask,gw,dns相關配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相關的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
NDS配置文件:
/etc/resolv.conf
參考說明:
centos6.9 /usr/share/doc/initscripts-9.03.58/sysconfig.txt
centos7.4 /usr/share/doc/initscripts-9.49.39/sysconfig.txt
ifcfg-IFACE:
DEVICE 此配置文件應用到的設備
HWADDR 對應的設備的MAC地址,如修改,可改為MACADDR=
BOOTPROTO 激活此設備時使用的地址配置協議,常用的dhcp,static,none,bootp
NM_CONTROLLED: NM為:NetworkManager的簡寫,此網卡是否接受NM控制
ONBOOT 在系統引導時是否激活此設備
TYPE 接口類型;常見的有Ethernet,Bridge
UUID uuid
IPADDR ip地址
NETMASK 子網掩碼
PREFIX netmask 使用/24 寫法
GATEWAY 默認網關
DNS1 第一個DNS服務器指向
DNS2 第二個DNS服務器指向
USERCTL 普通用戶是否可控制此設備
PEERDNS 如果BOOTPROTO的值為dhcp ,是否允許dhcp server分配的dns
服務器指向信息直接覆蓋/etc/resolv.conf
DEFROUTE 是否把這個eth設置為默認路由
PEERROUTES 是否從DHCP服務器獲取用於定義接口的默認網關的信息的路由表條目
IPV6INIT 是否啟用IPv6接口
IPV4_FAILURE_FATAL=yes 如果ipv4配置失敗禁用設備
IPV6_FAILURE_FATAL=yes 如果ipv6配置失敗禁用設備
route-IFACE:
兩種書寫風格:
1. TARGET via GW
如:192.167.10.0/24 via 192.168.65.1
192.168.8.8 via 192.168.65.1
2. 每三行定義一條路由
ADDRESS#=ip
NETMASK#=mask
GATEWAY#=gw
PS: #:為數字 必須從0開始
如需添加主機路由 mask 255.255.255.255
如需添加默認路由 ip 和mask 都為 0.0.0.0
配置文件修改之後生效:
service network restart centos6
systemctl restart network centos7
主機名和本地解析器:
配置當前主機的主機名:
hostname HOSTNAME
立即生效,如果想要提示符修改需重新登錄,重啟失效
/etc/sysconfig/network
重啟生效
解析器執行正向和逆向查詢
/etc/hosts
本地主機名數據庫和ip地址的映像
對小型獨立網絡有用
通常,在使用DNS前檢查
getent hosts 查看/etc/hosts內容
dns名字解析:
/etc/resolv.conf DNS記錄配置文件
nameserver DNS-SERVER-ip1
nameserver DNS-SERVER-ip2
nameserver DNS-SERVER-ip3
/etc/nsswitch.conf
優先於/etc/hosts 且可以設置/etc/hosts 優先級
38 hosts: files dns
將files 和 dns 跟換順序即可降低hosts優先級
正向解析:name--> ip
dig dig [-t A] name [+trace]
host host -t A name
反向解析:ip--> name
dig -x ip
host -t PTR ip
網卡別名:
對虛擬主機有用
將多個IP地址綁定到一個網卡(NIC)上
eth0:1 , eth0:2 ,eth0:3
使用ifconfig添加:
ifconfig eth0:1 192.168.8.8/24
ifconfig eth0:1 down
使用ip命令添加:
ip add add 172.16.1.2/24 dev eth0
ip a a 172.16.1.3/16 dev eth0 label eth0:1
ip addr del 172.16.1.2/24 dev eth0
ip a flush dev eth0 label eth0:0
設備別名:
為每個設備別名生成獨立的接口配置文件:
關閉NetworkManager服務
ifcfg-ethX:xxx
必須使用靜態聯網
DEVICE=eth0:xxx
IPADDR=ip
NETMASK=mask
PREFIX=
ONPARENT=yes 表明從屬關系
網絡接口配置-bonding
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接口上傳送所有的報文,提供容錯能力
active-backup、balance-tlb和balance-alb模式不需要交換機的任何特殊配置。
其他綁定模式需要配置交換機以便整合鏈接。如:
Cisco交換機需要在模式0、2、3中使用EtherChannel,但在模式4中需要LACP
和EtherChannel
創建bonding設備的配置文件:
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS="miimon=100 mode=0"
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eht0
BOOTPROTO=none
MASTE=bond0
SLAVE=yes
USERCTL=no
查看bond0狀態: /proc/net/bonding/bond0
miimon是用來進行鏈路監測的。如果miimon=100,那麽系統每100ms監測一次鏈路
狀態,如果一條線路不通就轉入另一條線路
刪除bond0
ifconfig bond0 down
rmmod rmmod bonding
詳細幫助:
https://www.kernel.org/doc/Documentation/networking/bonding.txt
CentOS 7 網絡屬性配置
Centos 6之前,網絡接口使用連續號碼命名:eth0、eth1等,當增加或刪除網卡時,名稱
可能會發生變化
CentOS7使用基於硬件,設備拓撲和設置類型命名
1 網卡命名機制:
systemd對網絡設備的命名方式:
a 如果Fireware或BIOS為主板上集成的設備提供的索引信息可用,且
且可預測,則根據此索引進行命名,例如eno1
b 如果Fireware或BIOS 為PCI-E擴展槽提供的索引信息可用,且可預測,則
根據此索引進行命名,例如ens1
c 如果硬件接口的物理位置信息可用,則根據此信息進行命名,例如enp2s0
d 如果用戶顯示啟動,也可根據MAC地址進行命名,如enx2387...
e 上述均不可用時,則使用傳統命名機制
基於BIOS支持啟用biosdevname軟件:
內置網卡: em1,em2
pci卡: pYpX Y:slot,X:port
2 名稱組成格式:
en: Ethernet 有限局域網
wl: wlan 無限局域網
ww: wwan 無線廣域網
名稱類型:
o <index>: 集成設備的設備索引號
s <soft>: 擴展槽的索引號
x <MAC>: 基於MAC地址的命名
p<bus>s<slot>: enp2s1
采用傳統命名方式:
1 編輯/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0
2 為grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
3 重啟系統
或者直接修改/boot/grub2/grub.cfg
在linux16.* 行尾添加 net.ifnames=0
Centos 7修改主機名:
配置文件:/etc/hostname,默認沒有此文件,通過DNS反向解析獲取主機名,
默認為:localhost.localdomain
顯示主機名信息:
hostname
hostamectl status
設置主機名:
hostnamectl set-hostname centos7.4
Centos7網絡配置工具:
nm-connection-editor 圖形工具:nm-connection-editor
nmtui 字符配置tui工具:nmtui
nmcli 命令行工具:nmcli
nmcli:
由NetworkManager 提供的地址配置工具,必須開啟NM服務
設備(device)即網絡接口
連接(connection)是對網絡接口的配置。
添加連接(nmcli con add)使一個網絡接口可有多個連接配置,但同時只有一個連接配置生效
格式:
nmcli []options] object {command|help}
device - show and manage network interface
connection - start,stop,and manager network connections
nmcli device help | show | modify|..
配置網卡屬性,現在進行
nmcil connection help | show |add |modify |del|up|down|..
PS:使用nmcli dev status 查看之後最後一項 CONNECTION 值,即為連接的
connection名稱,
使用nmcli con modify CONNECTION
或者 nmcli con show CONNECTION
需註意
修改ip地址等屬性:
nmcli connection|device modify CONNECTION [+|-]setting.property value
setting.property
ipv4.addresses
ipv4.gateway
ipv4.dns1|2
ipv4.method 值為:manual(靜態)|auto(dhcp)
+|- 用於多條記錄情況
直接修改配置文件之後執行生效:
systemctl restart network
nmcli con|connection reload
nmcli命令生效:
nmcli con down eth0;nmcli con up eth0
顯示所有連接:
nmcli connection show
顯示所有活動連接:
nmcli con show --active
顯示網絡連接配置:
nmcli con show "System eth0" | CONNECTION
顯示設備狀態:
nmcli dev status
顯示網絡接口屬性:
nmcli dev show IFACE
創建新連接:
nmcli con add con-name NAME type Ethernet ifname ens37
添加連接NAME,ip自動通過dhcp獲取,配置在ens37網卡接口下
nmcli con add con-name STATIC ifname ens37 autoconnect no type
Ethernet ipv4.addresses IP/MASK ipv4.gateway GW
添加新連接STATIC ,指定靜態ip 不自動連接
刪除連接:
nmcli con del NAME
切換連接:
nmcli con up STATIC|NAME
DNS和路由相關setting.property
ipv6.ignore-auto-dns yes 相當於PEERDNS
ipv6.ignore-auto-routes yes 相當於PEERROUTES
網絡配置文件:
使用nmcli con add 添加連接會生成新的網卡配置文件:
ifcfg-<ifname>
修改連接配置文件之後,需要重新加載配置:
nmcli con reload
nmcli con down/up CONNECTION 可被自動激活
nmcli dev dis|diconnect eth0 禁用網卡,防止被自動激活
然而實測無效,還是可以被up激活
nmcli實現bonding:
添加bonding接口:
nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup、balance-tlb和balance-alb模式不需要交換機的任何特殊配置。
添加從屬接口:
nmcli con add type bond-slave ifname ens33 master mybond0
nmcli con add type bond-slave ifname ens37 master mybond0
要啟動綁定,則必須首先啟動從屬接口
nmcli con up bond-slave-ens33
nmcli con up bond-slave-ens37
啟動綁定:
nmcli con up mybond0
網絡組Networking Teaming
網絡組:是將多個網卡聚合在一起的方式,從而實現容錯和提供吞吐量
網絡組不同於舊版中bonding技術,提供更好的性能和擴展性
網絡組由內核驅動和teamd守護進程實現
多種方式runner
broadcast
roundrobin
activebackup
loadbalance
lacp(implements the 802.3ad Link Aggregation Control Protocol)
網絡組:
啟動網絡組接口(team0)不會自動啟動網絡組中的port接口(team0-ens37)
啟動網絡組接口中的port接口總會自動啟動網絡組接口
禁用網絡組接口會自動禁用網絡組中的port接口
沒有port接口的網絡組接口可以啟動靜態ip鏈接
啟用dhcp連接時,沒有port接口的網絡組會等待port接口的加入
創建網絡組接口:
nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME 連接名,INAME 接口名
JOSN:指定runner方式
格式 '{"runner":{"name":"METHOD"}}'
METHOD:broadcast, roundrobin,activebackup, loadbalance, lacp
nmcli con add type team con-name team0 ipv4.addresses
185.170.161.160/16 ipv4.method manual config '{"runner":{"name":"activebackup"}}'
創建port接口:
nmcli con type team-slave con-name CNAME ifname INAME master TEAM
CNAME: 連接名(如team0-ens37)
INAME: 接口名(指明網卡如 ens37)
TEAM: 組接口名 (如team0)
例:nmcli connection add type team-slave con-name team0-ens37
ifname ens37 master team0
nmcli connection add type team-slave con-name team0-ens38
ifname ens38 master team0
連接名若不指定,默認為team-slave-IFACE
啟動網絡組:
nmcli con up team0
nmcli con up team0-ens37
nmcli con up team0-ens38
查看網絡組:
teamdctl teamdctl team0 state
關閉網絡組:
nmcli con down team0 可再次開啟
刪除網絡組
先down
nmcli con del team0
nmcli con del team0-ens37
nmcli con del team0-ens38
PS: 創建或刪除,會自動生成或刪除配置文件
nmcli-實現網橋:
此小段為復制粘貼內容,以便後期查找,沒有操作復現。
橋接:
把一臺機器上的若幹個網絡接口“連接”起來。其結果是,其中一個網
口收到的報文會被復制給其他網口並發送出去。以使得網口之間的報文能夠互
相轉發。網橋就是這樣一個設備,它有若幹個網口,並且這些網口是橋接起來
的。與網橋相連的主機就能通過交換機的報文轉發而互相通信。
? 主機A發送的報文被送到交換機S1的eth0口,由於eth0與eth1、eth2橋接在一
起,故而報文被復制到eth1和eth2,並且發送出去,然後被主機B和交換機S2
接收到。而S2又會將報文轉發給主機C、D。
配置實現網橋
? 創建軟件網橋
nmcli con add type bridge con-name br0 ifname br0
nmcli connection modify br0 ipv4.addresses 192.168.74.100/24
ipv4.method manuall
nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master
br0
查看網橋
cat /etc/sysconfig/network -scripts/ifcfg-br0
cat /etc/sysconfig/network -scripts/ifcfg-br0-port0
brctl show
刪除網橋 brctl delbr br0
刪除網橋中網卡 brctl delif eth0
註意:NetworkManager只支持以太網接口接口連接到網橋,不支持聚合接口
測試網絡工具:
hostname 顯示主機名
ping 測試網絡連通性
-s 65507 最大包
-f 強制發送,不等回復包
-c 5 幾次
-w 5 指定時間
mtr 測試網路連通性
nslookup 確定名稱服務器使用
host
dig
traceroute 跟蹤路由
tracepath
tcmdump icmp -nn 抓包
tcpdump -i eth1
網絡客戶端工具:
ftp 默認賬號ftp 或者anonymous
lftp 子命令:get(下載)、put 、mget(同時下載多個)、ls、cd、help
!cmd表示執行本機命令
lftpget URL 下載ftp資源
wget[options] URL
-q 靜默模式
-c 斷點續傳
-P 保存在指定目錄
-O 保存為指定的文件名
--limit-rate= 指定傳輸速率,K,M 默認為Byte
links URL 字符版瀏覽器
--dump 查看文字
--source 查看源碼
筆記整理完成時間:2018年5月5日15:48:27
第12章,網絡管理(下)網絡基礎配置