Linux網絡基礎管理-1:
IPv4 地址分類:
點分十進制:0.0.0.0-255.255.255.255
A類:
0 0000000 - 0 1111111: 1-127
網絡數:126, 127開頭爲環回地址
每一個網絡中的主機數:2^24-2
默認子網掩碼:255.0.0.0
私網地址:10.0.0.0/8
B類:
10 000000 - 10 111111:128-191
網絡數:2^14
每一個網絡中的主機數:2^16-2
默認子網掩碼:255.255.0.0
私網地址:172.16.0.0/16-172.31.0.0/16
C類:
110 00000 - 110 11111: 192-223
網絡數:2^21
每一個網絡中的主機數:2^8-2
默認子網掩碼:255.255.255.0
私網地址:192.168.0.0/24-192.168.255.0/24
D類:組播
1110 0000 - 1110 1111: 224-239
E類:240-255linux
跨網絡通訊須要路由,通常主機上的路由有三種:主機路由、網絡路由、默認路由
將Linux主機接入到網絡中需配置如下信息:IP/mask、默認網關、DNS服務器(Linux能夠配置三個)
Linux下配置網絡方式:
靜態指定:
ifcfg系列:ifconfig、route、netstat
ip系列:ip {link, addr, route}、ss、tc
經過修改配置文件
system-config-network-tui圖形工具(setup工具)
CentOS 7配置工具:nmcli、nmtui
動態分配:DHCP(Dynamic Host Configuration Protocol)ios
配置網絡接口:
接口命名方式:
CentOS 6:
以太網:eth[0,1,2,...]
ppp:ppp[0,1,2,...]vim
IP地址配置及查看:
ifconfig命令:查看IP地址和配置IP地址命令
ifconfig [interface]
# ifconfig -a 查看全部網絡接口配置信息
# ifconfig eth0 [up|down] 查看指定網絡接口配置信息
ifconfig interface [aftype] options | address ...
# ifconfig eth0 192.168.1.1/24 [up] 配置指定網絡接口的ip地址
# ifconfig eth0 192.168.1.1 netmask 255.255.255.0
[-]promisc 啓用混雜模式(加-表示關閉),開啓混雜模式在抓包時若是收到的報文不是發給該接口的也能被抓到,就是抓取全部收到的報文
ifconfig eth0 promisc 開啓混雜模式
ifconfig eth0 -promisc 關閉混雜模式數組
route命令:路由管理命令
route -n 查看內核路由表信息(路由的標誌位:U表示啓用狀態,G表示默認網關,H表示主機路由 )
route add 手動添加路由
route add [-net|-host] target [netmask Nm] [gw Gw] [[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.1socket
route del 刪除路由
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
主機路由:192.168.1.3 網關:172.16.0.1
# route del -host 192.168.1.3tcp
網絡路由:192.168.0.0 網關:172.16.0.1
# route del -net 192.168.0.0 netmask 255.255.255.0工具
DNS服務器指定:
/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3ui
FQDN(Fully Qualified Domain Name)徹底合格域名/全稱域名
正向解析:FQDN—>IP
# dig -t A FQDN
# host -t A FQDN
反向解析:IP—>FQDN
# dig -x IP
# host -t PTR IP
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 {--route|-r} [--numeric|-n]
-r 顯示內核路由表
-n 數字格式(不進行反向解析)
顯示接口統計數據:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
# netstat -i 顯示全部接口統計
# netstat -Ieth0 顯示指定接口統計(注意選項和參數之間不能有空格)
ifup/ifdown [Interface_Name] 用來啓用/禁用一個接口
ethtool eth0 顯示接口設備屬性
ethtool -S eth0 顯示接口設備的統計數據
Linux網絡基礎管理-2:
ip命令:
ip - show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT = { link | addr | route }
ip link - network device configuration
ip link help 顯示配置幫助信息
ip link set eth0 [up|down] 激活或禁用指定接口
ip link set eth0 multicast [on | off] 開啓關閉接口組播功能(開啓關閉功能)
ip link set eth0 name New_Name 重命名接口(須要接口爲Down狀態)
ip link set eth0 mtu MTU_Number 設置接口的MTU
ip link set eth0 netns [PID | Name] 將接口移動至指定的網絡名稱空間中
ip link show 顯示全部接口狀態
ip link show eth0 顯示指定接口狀態
ip link show up 僅顯示處於激活狀態的接口
ip address - protocol address management
ip addr { add | del } IFADDR dev STRING
ip addr add 192.168.1.1/24 dev eth0 配置IP地址
ip addr add 192.168.1.1/24 dev eth0 broadcast 192.168.1.255 指定廣播地址
ip addr add 192.168.0.1/24 dev eth0 label eth0:0 配置地址時指明網卡標籤(標籤格式必須是這種格式)
ip addr add 192.168.0.1/24 dev eth0 scope {global|link|host} 指定做用域
global 全局可用(若是從另一個網卡進來的數據也能夠與該地址通訊)
link 僅連接可用(只能是該網卡直連的設備通訊,同一個廣播域)
host 本機可用(只能本身通訊,不能與其它任何地址通訊)
ip address show - look at protocol addresses
ip addr show 查看全部設備的IP
ip addr show dev eth0 查看指定設備IP
ip addr show label eth0:0 查看指定標籤設備IP
ip addr show dev eth0 primary 查看指定設備主IP
ip address flush - flush protocol addresses
ip addr flush dev eth0 清空指定設備的全部ip地址
ip route - routing table management
ip route add
ip route add 192.168.0.0/24 via 192.168.1.1 dev eth0 添加網段路由
ip route add 192.168.0.10 via 192.168.1.1 dev eth0 添加主機路由
ip route add defalt via 192.168.1.1 dev eth0 添加默認路由
ip route add 192.168.0.0/24 via 192.168.1.1 dev eth0 src 192.168.1.10 添加路由是指定發報文的源地址
ip route change 192.168.0.0/24 via 192.168.1.1 dev eth0 src 192.168.2.10 修改路由信息(若是路由不存在則提示不存在)
ip route replace 192.168.0.0/24 via 192.168.1.1 dev eth0 src 192.168.2.10 修改路由信息(若是路由不存在則直接建立)
ip route delete
ip route del 192.168.0.0/24 刪除路由
ip route show 查看路由表
ip route get 192.168.1.0/24 查看指定路由的詳細信息
ip route flush 清空全部路由,能夠經過dev清空指定設備
ip route flush 192.168.1.0/24 清空指定路由
ss命令:查看網絡套接字工具
ss [OPTION]... [FILTER]
-t 顯示tcp協議相關鏈接
-u 顯示udp協議相關鏈接
-w 顯示裸套接字相關鏈接
-x 顯示unix sock相關鏈接
-l 顯示listen狀態的鏈接
-a 顯示全部狀態的鏈接
-n 以數字格式顯示ip和port(不進行反向解析)
-p 顯示對應的程序名及PID
-e 以擴展格式顯示
-m 顯示內存用量
-o 顯示計時器信息
指定過濾狀態查看FILTER [ state TCP-STATE ] [ EXPRESSION ]
TCP的常見狀態(tcp finite state machine)
LISTEN 監聽
ESTABLISHED 已創建的鏈接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
ss -tan state established 顯示鏈接狀態爲ESTABLISHED的鏈接
指定表達式過濾EXPRESSION:
dport = :22
sport = :1025
ss -tan sport = :22 顯示源端口爲22的鏈接
ss -tan dport = :51471 顯示目的端口爲51417的鏈接
ss -tan dport = :51471 or sport = :22 顯示目的端口爲51417或源端口爲22的鏈接
ss -tan dport = :51471 and sport = :22 顯示目的端口爲51417且源端口爲22的鏈接
Linux網絡配置文件修改
IP、MASK、GW、DNS相關配置文件:/etc/sysconfig/network-scripts/ifcfg-Interface_Name
路由相關的配置文件(默認沒有須手動建立):/etc/sysconfig/network-scripts/route-Interface_Name
/etc/sysconfig/network-scripts/ifcfg-IFACE:
DEVICE=eth0 此配置文件應用到的設備
HWADDR=00:0C:29:3F:16:62 對應的設備的MAC地址
BOOTPROTO=static 激活此設備時使用的地址配置協議(dhcp, static, none, bootp)
NM_CONTROLLED=no NM是NetworkManager的簡寫,此網卡是否接受NM控制;CentOS6建議爲"no"
ONBOOT=yes 在系統引導時是否激活此設備
TYPE=Ethernet 接口類型,常見有的Ethernet, Bridge
UUID=6f404499-c071-4191-a5bd-fc29d8008783 設備的唯一標識
IPADDR=192.168.10.1 指明IP地址
NETMASK=255.255.255.0 子網掩碼
GATEWAY=192.168.10.254 默認網關
DNS1=202.96.134.133 第一個DNS服務器指向
DNS2=114.114.114.114 第二個DNS服務器指向
USERCTL=no 普通用戶是否可控制此設備
PEERDNS=yes 若是BOOTPROTO的值爲"dhcp",是否容許dhcp server分配的dns服務器信息直接覆蓋至/etc/resolv.conf文件中
/etc/sysconfig/network-scripts/route-IFACE
兩種風格:兩種不能混用,只能固定使用其中某一種
第一種:TARGET via GW
192.168.0.0/24 via 192.168.10.254
第二種:每三行定義一條路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
ADDRESS0=192.168.0.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.10.254
重啓網絡服務:
/etc/init.d/network restart或service network restart
/etc/init.d/NetworkManager restart或service NetworkManager restart
給網卡配置多地址:
ifconfig
ifconfig eth0:0 192.168.0.1/24
ip
ip addr add 192.168.0.1/24 dev eth0 label eth0:0
配置文件:
/etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
注意:網卡別名不能使用dhcp協議引導;
Linux網絡屬性配置工具tui(text user interface):
system-config-network-tui,也可使用setup命令調用system-config-network-tui;注意:記得重啓網絡服務方能生效;
修改當前主機的主機名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=New_Name
/etc/hosts
127.0.0.1 New_Name
網絡接口識別並命名相關的udev配置文件:能夠用於修改網卡的設備名稱,不過要從新裝載網卡驅動生效
/etc/udev/rules.d/70-persistent-net.rules
lsmod 查看內核裝載的模塊
卸載網卡驅動:
modprobe -r e1000
裝載網卡驅動:
modprobe e1000
Centos 7網絡配置:
一致性網絡設備命名(Consistent Network Device Naming),爲何須要這個:
服務器一般有多塊網卡,有板載集成的,同時也有插在PCIe插槽的。Linux系統的命名原來是eth0,eth1這樣的形式,可是這個編號每每不必定準確對應網卡接口的物理順序。爲解決這類問題,dell開發了biosdevname方案。systemd v197版本中將dell的方案做了進一步的拓展。目前的Centos既支持dell的biosdevname,也支持systemd的方案。
Centos7中的網卡命名策略:
Scheme 1:若是從Firmware或BIOS中可以取到可用的板載網卡的索引號,則使用這個索引號命名,例如: eno1,如不能則嘗試Scheme 2
Scheme 2:若是從Firmware或BIOS中可以取到能夠用的網卡所在的PCI-E熱插拔插槽的索引號,則使用這個索引號命名,例如: ens1,如不能則嘗試Scheme 3
Scheme 3:若是能拿到設備所鏈接的物理位置信息,則使用這個信息命名,例如:enp2s0,如不能則嘗試Scheme 5
Scheme 5:傳統的kernel命名方法,例如: eth0,這種命名方法的結果不可預知的,便可能第二塊網卡對應eth0,第一塊網卡對應eth1。
Scheme 4:使用網卡的MAC地址來命名,這個方法通常不使用。例如enx2387a1dc5607
biosdevname和net.ifnames兩種命名規範
net.ifnames的命名規範爲: 設備類型+設備位置+數字
設備類型:
en 表示Ethernet
wl 表示WLAN
ww 表示無線廣域網WWAN
設備位置:
實際的例子:
eno1 板載網卡
enp0s2 pci網卡(插槽上網卡適配器有多個接口)
ens33 pci網卡(插槽上網卡適配器只有一個接口)
wlp3s0 PCI無線網卡
wwp0s29f7u2i2 4G modem
wlp0s2f1u4u1 鏈接在USB Hub上的無線網卡
enx78e7d1ea46da pci網卡
biosdevname的命名規範爲:
實際的例子:
em1 板載網卡
p3p4 pci網卡
p3p4_1 虛擬網卡
前面的Scheme策略順序是系統默認的
若是系統BIOS符合要求且系統中安裝了biosdevname,同時biosdevname=1啓用,則biosdevname優先
若是BIOS不符合或biosdevname沒安裝或安裝了可是biosdevname=0,則仍然是systemd的規則優先
若是用戶本身定義了udev rule來修改內核設備名字,則用戶規則優先
內核參數組合使用的時候,其結果以下:
biosdevname=0,net.ifnames=1 網卡名 "enp5s2" systemd優先
biosdevname=1,net.ifnames=0 網卡名 "em1" biosdevname優先
biosdevname=0,net.ifnames=0 網卡名 "eth0" 傳統方式優先
網卡設備命名過程:
核心流程:linux內核啓動過程當中,會默認給網卡以ethX方式隨機命名,而後再經過systemd去rename成其它名稱;systemd按照以下順序執行udev的rule
/usr/lib/udev/rules.d/60-net.rules
/usr/lib/udev/rules.d/71-biosdevname.rules
/usr/lib/udev/rules.d/75-net-description.rules
/usr/lib/udev/rules.d/80-net-name-slot.rules
60-net.rules
使用/lib/udev/rename_device這個程序,去查詢/etc/sysconfig/network-scripts/下全部以ifcfg-開頭的文件,若是在ifcfg-xx中匹配到HWADDR=xx:xx:xx:xx:xx:xx參數的網卡接口則選取DEVICE=yyyy中設置的名字做爲網卡名稱。
71-biosdevname.rules
若是系統中安裝了biosdevname,且內核參數未指定biosdevname=0,且上一步沒有重命名網卡,則按照biosdevname的命名規範,從BIOS中取相關信息來命名網卡。主要是取SMBIOS中的type 9(System Slot) 和type 41(Onboard Devices Extended Information)不過要求SMBIOS的版本要高於2.6,且系統中要安裝biosdevname程序。
75-net-description.rules
udev工具經過檢查網卡屬性信息,填寫以下這些udev的屬性值
ID_NET_NAME_ONBOARD
ID_NET_NAME_SLOT
ID_NET_NAME_PATH
ID_NET_NAME_MAC
80-net-name-slot.rules
若是在60-net.rules、71-biosdevname.rules這兩條規則中沒有重命名網卡,且內核未指定net.ifnames=0參數則udev依次嘗試使用如下屬性值來命名網卡,若是這些屬性值都沒有(75-net-description.rules會填寫這些信息),則網卡不會被重命名。
ID_NET_NAME_ONBOARD
ID_NET_NAME_SLOT
ID_NET_NAME_PATH
上邊的71-biosdevname.rules是實際執行biosdevname的policy;75-net-description.rules和80-net-name-slot.rules實際執行Scheme 1,2,3
根據上述的過程,可見網卡命名受 biosdevname和net.ifnames這兩個內核參數影響;這兩個參數均可以在grub配置中提供。biosdevname=0是系統默認值(dell服務器默認是1),net.ifnames=1是系統默認值:
#cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_king/root rd.lvm.lv=rhel_king/swap crashkernel=auto net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
Centos 7網卡命名改成傳統模式:
若是不習慣使用新的命名規則,能夠恢復使用傳統的方式命名,編輯 grub 文件,增長兩個變量,再使用grub2-mkconfig 從新生成grub 配置文件便可。
一、編輯 grub 配置文件
vim /etc/sysconfig/grub(是/etc/default/grub的軟鏈接)
# 爲GRUB_CMDLINE_LINUX變量增長2個參數,具體內容以下(加粗):
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap net.ifnames=0 biosdevname=0 rhgb quiet"
二、從新生成 grub 配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
而後從新啓動 Linux 操做系統,經過 ip addr 能夠看到網卡名稱已經變爲eth0
三、修改網卡配置文件
原來網卡配置文件名稱爲ifcfg-ens33,這裏須要修改成ethx 的格式,並適當調整網卡配置文件。
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
# 修改ifcfg-eth0文件以下內容(其它內容不變)
NAME=eth0
DEVICE=eth0
# systemctl restart network.service # 重啓網絡服務
Centos 7 IP地址配置工具:nmcli、nmtui
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
nmcli device status 查看全部網卡狀態
nmcli device show 查看全部網卡信息
nmcli device show eth0 查看指定網卡信息
nmcli device connect eth0 鏈接指定網卡
nmcli device disconnect eth0 斷開指定網卡
connection - start, stop, and manage network connections
nmcli connection show 查看全部設備鏈接信息
nmcli c show eth0 查看指定設備詳細信息
如何修改IP地址等屬性:
#nmcli connection modify IFACE [+|-]setting.property value
nmcli c modify eth0 ipv4.addresses 192.168.1.1/24
nmcli c modify eth0 ipv4.gateway 192.168.1.254
nmcli c modify eth0 ipv4.dns1 202.96.134.133
nmcli c modify eth0 ipv4.method manual 指定網絡信息獲取方式,這裏爲手動指定
網絡配置tui工具:nmtui
主機名稱配置工具:hostnamectl
hostnamectl 查看系統主機名和相關信息
hostnamectl status 查看系統主機名和相關信息信息
hostnamectl set-hostname New_Hostname 配置新的主機名
網絡客戶端工具:lftp, ftp, lftpget, wget
# lftp [-p port] [-u user[,password]] SERVER
子命令:
get 下載單個文件
mget 下載多個文件
ls 顯示當前目錄文件
help 顯示幫助信息
# lftpget URL 直接跟URL地址下載文件到當前目錄
# ftp 傳統的ftp客戶端工具,能用lftp就不用這個
# wget
wget [option]... [URL]...
-q 靜默模式
-c 斷點續傳
-O 指定下載到指定路徑
--limit-rates= 限制傳輸速率
課外做業:nmap、ncat、tcpdump工具