Linux 第17天: (09月02日) Linux網絡配置

Linux 第17天: (09月02日) Linux網絡配置

 

 

 

本章內容


配置網絡
實現網絡組
測試網絡
網絡工具

 

 

基本網絡配置
將Linux主機接入到網絡,需要配置網絡相關設置。
一般包括如下內容:
主機名
IP/netmask
路由:默認網關
DNS服務器
主DNS服務器
次DNS服務器
第三DNS服務器


網絡配置方式
靜態指定:
ifcfg: ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
system-config-network-tui(setup)
配置文件
CentOS 7:網絡配置工具
nmcli, nmtui, nm-connection-editor
動態分配:
DHCP: Dynamic Host Configuration Protocol


配置網絡接口
接口命名方式:CentOS 6:
以太網:eth[0,1,2,...]
ppp:ppp[0,1,2,...]
ifconfig命令
ifconfig [interface]
# ifconfig-a
# ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/mask [up]
# ifconfig IFACE IP netmask MASK
注意:立即生效;
啓用混雜模式:[-]promisc


route命令
路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gwGw] [[dev] If]
目標: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 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


默認路由,網關: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 [-net|-host] target [gwGw] [netmask Nm] [[dev] If]
目標:192.168.1.3 網關:172.16.0.1
# route del -host 192.168.1.3
目標:192.168.0.0 網關:172.16.0.1
# route del -net 192.168.0.0 netmask 255.255.255.0


配置動態路由
通過守護進程獲取動態路由
安裝quagga包,支持多種格式的RIP、OSPF和BGP
命令vtysh配置


netstat命令
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[--extend|-e]] [--program|-p]
-t: tcp協議相關
-u: udp協議相關
-w: raw socket相關
-l: 處於監聽狀態
-a: 所有狀態
-n: 以數字顯示IP和端口;
-e:擴展格式
-p: 顯示相關進程及PID


netstat命令
常用組合:
-tan, -uan, -tnl, -unl
顯示路由表:
netstat{--route|-r} [--numeric|-n]
-r: 顯示內核路由表
-n: 數字格式
顯示接口統計數據:
netstat{--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
# netstat-i
# netstat–I=IFACE
# ifconfig -s eno16777736


ip命令
配置Linux網絡屬性:ip命令
ip-show / manipulate routing, devices, policy routing and tunnels
ip[ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr| route }
iplink -network device configuration
setdev IFACE
可設置屬性:
up and down:激活或禁用指定接口
ifup/ifdown
show[dev IFACE]:指定接口
[up]:僅顯示處於激活狀態的接口


ip命令
ipaddr{ add | del } IFADDR dev STRING
[label LABEL]:添加地址時指明網卡別名
[scope {global|link|host}]:指明作用域
global: 全局可用;
link: 僅鏈接可用;
host: 本機可用;
[broadcast ADDRESS]:指明廣播地址
ipaddress show -look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
ipaddress flush -使用格式同show
ipaddradd 172.16.100.13/16 dev eth0 label eth0:0
ipaddrdel 172.16.100.13/16 dev eth0 label eth0:0
ipaddrflush dev eth0 label eth0:0


ip命令
iproute -routing table management
添加路由:iproute add
iproute add TARGET via GW dev IFACE srcSOURCE_IP
TARGET:
主機路由:IP
網絡路由:NETWORK/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1
添加網關:iproute add default via GW dev IFACE
iproute add default via 172.16.0.1
刪除路由:iproute delete
iproute del TARGET
顯示路由:iproute show|list
清空路由表:iproute flush[dev IFACE] [via PREFIX]
iproute flush dev eth0


ss命令
格式:ss[OPTION]... [FILTER]
netstat通過遍歷proc來獲取socket信息,ss使用netlink與內核tcp_diag模塊通信獲取socket信息。
選項:
-t: tcp協議相關
-u: udp協議相關
-w: 裸套接字相關
-x:unixsock相關
-l: listen狀態的連接
-a: 所有
-n: 數字格式
-p: 相關的程序及PID
-e: 擴展的信息
-m:內存用量
-o:計時器信息


ss命令
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常見狀態:
tcpfinite state machine:
LISTEN: 監聽
ESTABLISHED:已建立的連接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport=
sport =
示例:’( dport= :sshor 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詳細信息:


網絡配置文件
IP、MASK、GW、DNS相關配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相關的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
/etc/sysconfig/network-scripts/ifcfg-IFACE:
說明參考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
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文件中


本地解析器
解析器執行正向和逆向查詢
/etc/hosts
本地主機名數據庫和IP地址的映像
對小型獨立網絡有用
通常,在使用DNS前檢查
getent hosts 查看/etc/hosts 內容

dns名字解析
/etc/resolv.conf
nameserverDNS_SERVER_IP1
nameserverDNS_SERVER_IP2
nameserverDNS_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


網絡配置文件
/etc/sysconfig/network-scripts/route-IFACE
注意:需service network restart生效
兩種風格:
(1) TARGET via GW
(2) 每三行定義一條路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW

網卡別名
對虛擬主機有用
將多個IP地址綁定到一個NIC上
eth0:1
eth0:2
eth0:3
ifconfig命令:
ifconfigeth0:0 192.168.1.100/24 up

ifconfigeth0:0 down

ip命令:
ipaddradd 172.16.1.2/16 dev eth0
ipaddradd 172.16.1.1/16 dev eth0 label eth0:0
ipaddrdel 172.16.1.1/16 dev eth0 label eth0:0
ipaddrflush dev eth0 label eth0:0


設備別名
爲每個設備別名生成獨立的接口配置文件
關閉NetworkManager服務
ifcfg-ethX:xxx
必須使用靜態聯網
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes
注意:service network restart 生效
參考/usr/share/doc/initscripts-*/sysconfig.txt


網絡配置
Linux網絡屬性配置的tui(text user interface):
system-config-network-tui
setup
注意:記得重啓網絡服務方能生效
配置當前主機的主機名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=


網卡名稱
網絡接口識別並命名相關的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules

查看網卡:

dmesg|grep -i eth

ethtool|-i eth0

卸載網卡驅動:
modprobe-r e1000
裝載網卡驅動:
modprobee1000


網絡接口配置-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接口上傳送所有的報文。本模式提供容錯能力。


Bonding配置
創建bonding設備的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS=“miimon=100 mode=0”
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
miimon是用來進行鏈路監測的。如果miimon=100,那麼系統每100ms 監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路
查看bond0狀態:/proc/net/bonding/bond
關於bonding的詳細配置請參照
/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt

 

CentOS 7網絡屬性配置
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卡:pYpXY:slot ,X:port
(2) 名稱組成格式
en: Ethernet 有線局域網
wl: wlan無線局域網
ww: wwan無線廣域網
名稱類型:
o<index>: 集成設備的設備索引號
s<slot>: 擴展槽的索引號
x<MAC>: 基於MAC地址的命名
p<bus>s<slot>: 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


網卡名稱

採用傳統命名方式
使用傳統命名方式:
(1) 編輯/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="net.ifnames=0 rhgbquiet"
或:修改/boot/grub2/grub.cfg
(2) 爲grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3) 重啓系統

 

nmcli命令
地址配置工具:nmcli
nmcli[ OPTIONS ] OBJECT { COMMAND | help }
device -show and manage network interfaces
nmclidevice help
connection -start, stop, and manage network connections
nmcliconnection help
修改IP地址等屬性:
#nmcliconnection modify IFACE [+|-]setting.propertyvalue
setting.property:
ipv4.addressesipv4.gateway
ipv4.dns1 ipv4.methodmanual | dhcp
修改配置文件執行生效:

systemctlrestart network
nmclicon reload
nmcli命令生效:

nmclicon down eth0 ;nmclicon up eth0

 

相關工具
網絡接口配置tui工具:nmtui
主機名稱配置工具:hostnamectl
status
set-hostname


使用nmcli配置網絡

NeworkManager是管理和監控網絡設置的守護進程
設備即網絡接口,連接是對網絡接口的配置。一個網絡接口可有多個連接配置,但同時只有一個連接配置生效。
顯示所有包括不活動連接
nmclicon show
顯示所有活動連接
nmclicon show –active
顯示網絡連接配置
nmclicon show "System eth0“
顯示設備狀態
nmclidev status
使用nmcli配置網絡


顯示網絡接口屬性
nmclidev show eno16777736
創建新連接default,IP自動通過dhcp獲取
nmclicon add con-name default type Ethernet ifnameeth0
刪除連接
nmclicon del default
創建新連接static ,指定靜態IP,不自動連接
nmcticon add con-name static ifnameeth0 autoconnectno type Ethernet ip4 172.25.X.10/24 gw4 172.25.X.254

使用nmcli配置網絡

啓用static連接配置
nmclicon up static
啓用default連接配置
nmclicon up default
查看幫助
nmclicon add help

使用nmcli配置網絡

修改連接設置
nmclicon mod“static” connection.autoconnectno
nmclicon mod “static” ipv4.dns 172.25.X.254
nmclicon mod “static” +ipv4.dns 8.8.8.8
nmclicon mod “static” -ipv4.dns 8.8.8.8
nmclicon mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”
nmclicon mod “static” +ipv4.addresses 10.10.10.10/16


nmcli命令

nmclicon mod
ifcfg-* 文件
ipv4.method manual
BOOTPROTO=none
ipv4.method auto
BOOTPROTO=dhcp
ipv4.addresses “192.0.2.1/24 192.0.2.254”
IPADDR0=192.0.2.1
PREFIX0=24
GATEWAY0=192.0.2.254
ipv4.dns 8.8.8.8
DNS0=8.8.8.8
ipv4.dns-search example.com
DOMAIN=example.com
ipv4.ignore-auto-dns true
PEERDNS=no
connection.autoconnectyes
ONBOOT=yes
connection.id eth0
NAME=eth0
connection.interface-name eth0
DEVICE=eth0
802-3-ethernet.mac-address . . .
HWADDR= . . .

 

網絡配置文件
設備配置被保存在文本文件中
/etc/sysconfig/network-scripts/ifcfg-<name>
幫助文檔列出完整選項列表:/usr/share/doc/initcripts-*/sysconfig.txt
動態配置
靜態配置
DEVICE=ethXHWADDR=0:02:8A:A6:30:45 BOOTPROTO=dhcpONBOOT=yes Type=Ethernet
DEVICE=ethXHWADDR=0:02:8A:A6:30:45 IPADDR=192.168.0.123 NETMASK=255.255.255.0 GATEWAY=192.168.0.254 ONBOOT=yes
Type=Ethernet


nmcli命令

修改連接配置後,需要重新加載配置
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接口的加入
網絡組


nmclicon add type team con-name CNAMEifnameINAME[configJSON]
CNAME連接名,INAME接口名
JSON指定runner方式
格式:'{"runner": {"name": "METHOD"}}'
METHOD可以是broadcast,roundrobin,
activebackup,loadbalance, lacp.


創建網絡組接口

# nmcli con add type team con-name team0 ifname team0 config ‘{"runner": {"name": "loadbalance"}}'
# nmcli con mod team0 ipv4.addresses 192.168.1.100/24
# nmcli con mod team0 ipv4.method manual


創建網絡組接口實例

nmcli con add type team-slave con-name CNAMEifnameINAMEmaster TEAM
CNAME連接名,

INAME網絡接口名,

TEAM網絡組接口名.
連接名若不指定,默認爲team-slave-IFACE.
nmclidev dis INAME
nmclicon up CNAME
INAME設備名CNAME網絡組接口名或port接口


創建port接口

# nmcli con add type team-slave ifname eth1 master team0 con-name team0-eth1
# nmcli con add type team-slave ifname eth2 master team0 con-name team0-eth2
# nmcli con up team0
# nmcli con up team0-eth1
# nmcli con up team0-eth2
# nmcli dev dis eth2
# teamdctl team0 state


網絡組實例

#ip link
# nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
# nmcli con mod team0 ipv4.addresses '192.168.0.100/24'
# nmcli con mod team0 ipv4.method manual
# nmcli con add type team-slave con-name team0-port1 ifname eno1 master team0
# nmcli con add type team-slave con-name team0-port2 ifname eno2 master team0
# teamdctl team0 state


實驗:創建網絡組

#ping -I team0 192.168.0.254
# nmcli dev dis eno1
# teamdctl team0 state
# nmcli con up team0-port1
# nmcli dev dis eno2
# teamdctl team0 state
# nmcli con up team0-port2
# teamdctl team0 state


網絡組實驗

# /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
ONBOOT=yes


管理網絡組配置文件

# /etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes


管理網絡組配置文件

rhel6之前主機名配置文件:/etc/sysconfig/network
rhel7.0主機名配置文件:/etc/hostname ,默認沒有這個文件,通過DNS反向解析獲取主機名,主機名默認爲:localhost.localdomain
顯示主機名信息
hostname
hostnamectlstatus
創建並修改文件並生效
hostnamectlset-hostname desktopX.example.com
刪除文件,恢復主機名localhost.localdomain
DNS設置,存放在/etc/resolv.conf文件中
PEERDNS=no 表示當IP通過dhcp自動獲取時,dns仍是手動設置,不自動獲取。等價於下面命令:
nmclicon mod “system eth0” ipv4.ignore-auto-dns yes
使用nmcli配置主機名

 

測試網絡
在命令行下測試網絡的連通性
顯示主機名
hostname
測試網絡連通性
ping
mtr
顯示正確的路由表
iproute
確定名稱服務器使用:
nslookup
host
dig
跟蹤路由
traceroute
Tracepath

 

網絡客戶端工具
lftp, ftp, lftpget, wget
# lftp[-p port] [-u user[,password]] SERVER
子命令:
get、mget、ls、help
# lftpgetURL
# ftp
# wget
wget[option]... [URL]...
-q: 靜默模式
-c: 斷點續傳
-O: 保存位置
--limit-rates=: 指定傳輸速率

 

 

 

 

 

 

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