一、Linux網絡屬性配置
1.Linux主機接入到網絡方式
IP/NETMASK:實現本地網絡通信
路由(網關):可以進行跨網絡通信
DNS服務器地址:基於主機名的通信,Linux可以有三個DNS地址
當第一個地址本身掛了,才會查找其備用地址;若第一個地址無法解析則停止
2.網絡屬性配置方式
(1)靜態指定
1)命令方式
ifcfg系列命令:
ifconfig:配置IP,NETMASK
route:配置路由相關信息
netstat:狀態及統計數據查看
iiproute2系列命令:
ip OBJECT:
addr:地址和掩碼;
link:接口
route:路由
ss:狀態及統計數據查看
CentOS 7:nm(Network Manager)家族
nmcli:命令行工具
nmtui:text window 工具
hostname/hostnamectl:主機名配置
2) 配置文件:
RedHat及相關發行版:/etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME
DNS服務器指定配置文件:/etc/resolv.conf
本地主機名配置文件:/etc/sysconfig/network
注:命令配置能及時生效,但時關閉當前進程之後配置失效,為一次性配置方式
通過配置文件配置網絡屬性,無法立即生效,需要重啟服務、重新加載配置文件或者重啟進程
(2)動態分配:依賴於本地網絡中有DHCP服務
DHCP:Dynamic Host Configure Procotol, 動態主機配置協議,此時不能固定IP地址
3.網絡接口命名
(1)傳統命名
以太網:eth#,例如eth0, eth1, ...
PPP網絡:ppp#, 例如,ppp0, ppp1, ...
(2)可預測命名方案(CentOS 7)
支持多種不同的命名機制,根據Fireware, 拓撲結構等信息自動配置
1) Firmware或BIOS為主板上集成的設備提供的索引信息可用,則根據此索引進行命名,如eno1,eno2, ...
2) Firmware或BIOS為PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1, ens2, ...
3) 如果硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0, ...
4) 如果用戶顯式定義,也可根據MAC地址命名,例如eno16777736(十六進制MAC), ...
5)上述均不可用,則仍使用傳統方式命名;
(3)命名格式的組成
en:ethernet,表示因特網網卡接口
wl:wlan,表示無線網網卡接口
ww:wwan,Wireless Wide Area Network,表示無線廣域網網卡
(4)名稱類型:
o
s
x
p
二、ifcfg系列:fconfig, route, netstat
1.ifconfig:配置查看網絡接口,默認不能顯示第二地址,只能顯示主地址
指明標簽(接口別名)就能夠顯示了
(1)ifconfig[INTERFACE] 默認只會顯示激活狀態的網卡信息
# ifconfig -a:顯示所有接口,包括inactive非激活狀態接口;
注意:CentOS 6和CentOS 7顯示結果有所不同
CentOS 7:
顯示含義解析:
eno1677736:網卡接口名稱:
flags:標志位,UP表示網卡啟用激活狀態
mtu:maximum transmission unit,網卡最大傳輸單元為1500字節
inet:IPv4地址; netmask:子網掩碼; broadcast:廣播地址
inet6:IPv6地址
HWaddr :以太網地址,對應於CentOS 6中的HWaddr硬件地址
txqueuelen 1000 (Ethernet):以太網傳輸隊列長度
RX packets 7526 bytes 631299 (616.5 KiB):此次網卡激活後接搜到的報文數量,總大小
RX errors :接收時錯誤的個數;dropped:丟包個數;overruns:溢出個數; frame:幀
TX packets 162 bytes 18461 (18.0 KiB):傳輸的報文數量
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0:傳輸的錯誤、丟包、溢出、幀
CentOS 6:
eh0:網卡接口,其表現形式和CentOS 7有很大區別
HWaddr 00:0C:29:46:14:98硬件地址
(2)ifconfig[-v] interface [aftype] options | address … 更改網卡IPv4地址
立即送往內核中的TCP/IP協議棧,並生效,遠程連接修改,原來的地址會沒有導致掉線
# ifconfigINTERFACE IP/MASK
# ifconfig INTERFACE IP netmask NETMASK :用netmask關鍵字
options: ifconfig INTERFACE OPTIONS
[-]promisc:混雜模式,-表示關閉混雜模式,直接加表示進入混雜模式
… …
管理IPv6地址:add|del addr/prefixlen
(3)啟用/關閉網卡
1)# ifconfig INTERFACE up|down
2)ifup/ifdown命令:
注意:此命令是通過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口並完成配置;
(4)刪除指定接口網卡 的地址:
# ifconfig INTERFACE 0
2.route命令:路由查看及管理
路由條目類型(三種):
主機路由:目標地址為單個IP;
網絡路由:目標地址為IP網絡;
默認路由:目標為任意網絡,0.0.0.0/0.0.0.0
(1)查看:
# route -n
-n: 表示以數字形式顯示信息,不反向解析地址和端口號
若有很多路由信息的時候,反向解析為主機名和端口名會占用很多資源開銷
顯示解析:
Destination:目標地址
Gateway:下一跳網管地址
0.0.0.0:表示本地主機的網絡地址,自己的主機就在網絡上無需網關,直連路由,
Genmask:目標網絡的掩碼地址
Flags:路由條目的標志
U (route is up):up,表示啟用狀態
H (target is a host):目標地址是一個主機地址
G (use gateway):使用一個網關
R (reinstate route for dynamic routing):為路由恢復動態路徑選擇
D (dynamically installed by daemon or redirect)
M (modified from routing daemon or redirect)
A (installed by addrconf)
C (cache entry)
! (reject route)
G:表示是一個網關,但不一定是目標網關,只有目標地址是0.0.0.0的才是默認網關
Metric:度量值,表示到達這個網絡中間要進過的開銷
Ref:Number of references to this route. (Not used in the Linux kernel.)
Use:Count of lookups for the route
Iface:通過本主機的哪塊網卡接口對發送數據
(2)添加:
route add [-net|-host] target [netmask Nm] [gw GW] [dev] If]
-net|-host :網絡路由| 主機路由,默認路由為網絡路由
target [netmask Nm] :目標地址,可以用簡寫子網掩碼格式,也可以用關鍵字netmask完整格式
[gw GW] :gw為關鍵字,GW表示真正的下一跳地址
下一跳必須與自己的某塊網卡在同一網段內,且存在
[dev] If]:進由哪塊網卡,可以省略,能自動判斷
示例:
route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1
route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1 === route add default gw 192.168.10.1
(3)刪除:
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
示例: route del -net 10.0.0.0/8 gw 192.168.10.1
route del default
3.netstat命令:查看網絡狀態及統計數據
Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
顯示網絡連接、路由表、接口連接、偽裝連接和多播成員關系
(1)顯示路由表:# netstat -rn
-r:顯示內核路由表
-n:以數字形式顯示信息,不反向解析地址
(2)顯示網絡連接信息:# netstat OPTIONS(常用組合:-tan, -uan, -tnl, -unl, -tunlp)
-t,--tcp:TCP協議的相關連接,連接均有其狀態;FSM(Finate State Machine);
通信開始之前,要建立一個虛鏈路;通信完成後還要拆除鏈接
-u,--udp:UDP相關的連接;無連接的協議;直接發送數據報文
-w:raw socket裸套接字相關的連接
-l:處於監聽狀態的連接
-a:所有狀態的連接
-n:以數字格式顯示IP和Port;
-e:擴展格式
-p:顯示相關的進程及PID;
tcp狀態:LISTEN、ESTABLISEHD、FIN_WAIT_1等待狀態、FIN_WAIT_2、SYN_SENT、SYN_RECV、CLOSED
注意:傳輸 層協議區別(TCP|UDP)
tcp:面向連接的協議;通信開始之前,要建立一個虛鏈路;通信完成後還要拆除連接;
udp:無連接的協議;直接發送數據報文;
(3)顯示接口的統計數據:
netstat {--interfaces|-I|-i} [iface][--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n]
所有接口:netstat -I
指定接口:netstat -I
4.配置主機名hostname/hostnamectl命令:
(1)hostname
查看:hostname
配置:hostname HOSTNAME,當前系統有效,重啟後無效;
(2)hostnamectl命令(CentOS 7):該命令會直接修改配置文件生效
hostnamectl status:顯示當前主機名信息;
hostnamectl HOSTNAME:設定主機名,永久有效;
三、iproute系列:ip、ss
iproute2系列和內核關系緊密,直接放置到內核生效,其版本號和內核的版本號會保持一致
Advanced IP routing and network device configuration tools :提供網絡工具
1.ip命令:show / manipulate routing, devices, policy routing and tunnels 策略路由、隧道、路由、設備
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫;
(1)iplink:network device configuration,網絡設備配置
1)ip link set :change device attributes,修改設備屬性
dev NAME (default):指明要管理的設備,默認配置,dev關鍵字可省略;
up和down:啟用,禁用
multicast on或multicast off:啟用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:設置MTU的大小,默認為1500;
netns PID:ns為namespace,用於將接口移動到指定的網絡名稱空間;
實例:
修改eth1名稱,注意在修改前要先停用
[root@localhost ~]# ip link set eth1 down
[root@localhost ~]# ip link set eth1 name ethtest
[root@localhost ~]# ip link show
2)ip link show/list :display device attributes,顯示設備屬性
3)ip link help:顯示簡要使用幫助;
(2)ip netns:manage network namespaces.管理網絡名稱空間
ip netns list:列出所有的netns
ip netns add NAME:創建指定的netns
ip netns del NAME:刪除指定的netns
ip netns exec NAME COMMAND:在指定的netns中運行命令
(3)ip address: protocol address management. 協議地址管理
1)ip address add :add new protocol address,增加新的協議地址
ip addr add INTERFACEADDR dev INTERFACE
[label NAME]:為額外添加的地址指明接口別名;
[broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算得到;
[scope SCOPE_VALUE]:范圍變量
global:全局可用;
link:接口可用;
host:僅本機可用;
2)ip address delete :delete protocol address,刪 除協議地址
# ip addr delete INTERFACEADDR dev IFACE
3)ip address show:look at protocol addresses,查看協議地址
# ip addr list [IFACE]:顯示接口的地址;
4)ip address flush:flush protocol addresses,刪 除指定接口上所有的的地址
# ip addr flush dev IFACE
(4)ip route :outing table management,管理路由表
1)ip route add - add new route增加
ip route change - change route修改
ip route replace - change or add new one修改或者增加
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
示例:
# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
# ip route add default via GW
2)ip route delete - delete route
ip route del TYPE PRIFIX
3)ip route show - list routes
4)ip route flush - flush routing tables
5)ip route get - get a single route
ip route get TYPE PRIFIX
2.ss命令:查看網絡狀態及統計數據 ss [options] [ FILTER ]
(1)[OPTION]:
-t:TCP協議的相關連接
-u:UDP相關的連接
-w:raw socket相關的連接
-l:監聽狀態的連接
-a:所有狀態的連接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息
(2)FILTER := [ state TCP-STATE ] [ EXPRESSION ] 狀態過濾功能
可以過濾端口、狀態等信息來查看
EXPRESSION:
dport =
sport =
示例:'( dport = :22 or sport = :22)'
~]# ss -tan '( dport = :22 or sport = :22 )'
~]# ss -tan state ESTABLISHED
四、nmcli命令:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
(1)device: show and manage network interfaces顯示管理網絡接口
COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
(2)connection:start, stop, and manage network connections,
COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
(3)modify [ id | uuid | path ]
如何修改IP地址等屬性:
# nmcli conn modify IFACE [+|-]setting.property value
ipv4.address
ipv4.gateway
ipv4.dns1
ipv4.method
manual
五、配置文件:
1.IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
ifcfg-IFACE:實際接口名稱;
(1)vim編輯配置文件
配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通過大量參數來定義接口的屬性,可直接修改
1)fcfg-IFACE配置文件參數:
DEVICE:此配置文件對應的設備的名稱;
ONBOOT:在系統引導過程中,是否激活此接口;
UUID:此設備的惟一標識;
IPV6INIT:是否初始化IPv6;
BOOTPROTO:激活此接口時使用什麼協議來配置接口屬性,常用的有dhcp、bootp、static、none;
TYPE:接口類型,常見的有Ethernet, Bridge;
DNS1:第一DNS服務器指向;
DNS2:備用DNS服務器指向;
DOMAIN:DNS搜索域;
IPADDR: IP地址;
NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼;
GATEWAY:默認網關;
USERCTL:是否允許普通用戶控制此設備;
PEERDNS:如果BOOTPROTO的值為“dhcp”,是否允許dhcp server分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認為允許;
HWADDR:設備的MAC地址;
NM_CONTROLLED:是否使用NetworkManager服務來控制接口
在CentOS 6上networkManager不完善,集群、虛擬化橋接在此網絡服務下無法使用
網絡服務有兩種:network、NetworkManager
2)管理網絡服務:
CentOS 6: service SERVICE {start|stop|restart|status}
CentOS 7:systemctl {start|stop|restart|status} SERVICE[.service]
配置文件修改之後,如果要生效,需要重啟網絡服務;
CentOS 6:# service network restart
CentOS 7:# systemctl restart network.service
(2)專用的命令的進行修改
CentOS 6:system-config-network (setup)
# setup
#system-config-network
CentOS 7: nmtui
2.路由的相關配置文件:/etc/sysconfig/network-scripts/route-IFACE
用到非默認網關路由:/etc/sysconfig/network-scripts/route-IFACE
支持兩種配置方式,但不可混用;
(1) 每行一個路由條目: TARGET via GW
(2) 每三行一個路由條目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
3.給接口配置多個地址:
(1)ip addr add INTERFACEADDR dev INTERFACE label LABELNAME
(2)ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL: eth0:0, eth0:1, ...
(3)為別名添加配置文件;
DEVICE=IFACE_LABEL
BOOTPROTO:網上別名不支持動態獲取地址;
static, none
4.hostname配置文件:/etc/sysconfig/network
命令:HOSTNAME=
注意:此方法的設置不會立即生效; 重讀配置文件或者重啟系統後後會一直有效;
5.配置DNS服務器指向:
配置文件:/etc/resolv.conf,添加 nameserver DNS_SERVER_IP
6./etc/hosts 別名,名稱解析,事先生效,先查看此文件。