Linux中的網路屬性配置
1、網路屬性配置方式
(1)靜態指定
1)ifcfg家族:(各發行版均適用)
ifconfig:配置IP,NETMASK
route:路由
netstat:狀態及統計資料檢視
2)iproute2家族:(各發行版均適用)
ip OBJECT:
addr:地址和掩碼;
link:介面;
route:路由;
ss:狀態及統計資料檢視(比netstat命令在網路連線數量眾多時效能更好);
3)CentOS 7:nm(Network Manager)家族
nmcli:命令列工具;
nmtui:text window 工具,文字視窗工具;
(2)動態分配:依賴於本地網路中有DHCP服務
DHCP:Dynamic Host Configure Procotol,動態主機配置協議;
(3)配置檔案
1)RedHat及相關發行版:/etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME
2)DNS伺服器指定
配置檔案:/etc/resolv.conf
3)本地主機名配置
臨時配置命令:hostname(CentOS 6),hostnamectl(CentOS 7)
配置檔案:/etc/sysconfig/network
2、網路介面命名方式
(1)傳統命名
乙太網:ethX,例如eth0,eth1,…
PPP網路:pppX,例如ppp0,ppp1,…
(2)可預測命名方案(CentOS 7):根據網路的韌體(Fireware)和拓撲結構預測名字。
1)如果Firmware或BIOS為主機板上整合的裝置提供的索引資訊可用,則根據此索引進行命名,如eno1,eno2, …
2)如果Firmware或BIOS為PCI-E擴充套件槽所提供的索引資訊可用,且可預測,則根據此索引進行命名,如ens1, ens2, …
3)如果硬體介面的物理位置資訊可用,則根據此資訊命名,如enp2s0, …
4)如果使用者顯式定義,也可根據MAC地址命名,例如enx122161ab2e10,…
5)上述均不可用,則仍使用傳統方式命名;
(3)命名格式的組成:
en代表ethernet,wl代表wlan,ww代表wwan。
(4)名稱型別:
o:整合裝置的裝置索引號;
s:擴充套件槽的索引號;
x:基於MAC地址的命名;
ps:基於匯流排及槽的拓撲結構進行命名。
3、ifcfg命令家族: ifconfig, route, netstat
(1)ifconfig命令:介面及地址檢視和管理
ifconfig [INTERFACE]
# ifconfig -a:顯示所有介面,包括inactive狀態的介面;
地址配置:
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/MASK [up|down]
# ifconfig IFACE IP netmask NETMASK
options:
[-]promisc
ifconfig eth1 promisc
:eth1介面啟用混雜模式;
ifconfig eth1 -promisc
立即送往核心中的TCP/IP協議棧,並生效;
ifconfig eth1 0
:刪除eth1上的IP地址;管理IPv6地址:
add addr/prefixlen
del addr/prefixlen
(2)route命令:路由檢視及管理
1)路由檢視:
# route -n
:以數字IP地址形式顯示,不反解IP地址和埠號;# route
:將數字IP地址形式反解成主機名;2)路由新增:
route add [-net|-host] target [netmask Nm] [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 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命令
顯示路由表:netstat -rn
-r:顯示核心路由表
-n:數字格式,而不要反解
netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-t:TCP協議的相關連線;
-u:UDP協議相關的連線;
–udplite:簡裝版的UDP;
–sctp:另一種流控協議,比tcp功能更強大;
–raw:裸套接字(raw socket)相關的連線;
–all:所有狀態的連線;
-n:以數字格式顯示IP和Port;
–extend:顯示擴充套件格式;
–program:顯示相關的程序及PID;
,連線均有其狀態;FSM(Finate State Machine);
常用組合:-tan, -uan, -tnl, -unl, -tunlp
顯示介面的統計資料:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n]
所有介面:netstat -i
指定介面:netstat -I<IFace>
(4)ifup/ifdown命令
通過配置檔案/etc/sysconfig/network-scripts/ifcfg-IFACE來識別介面並完成配置。
4、配置主機名和DNS
(1)配置主機名
hostname命令:
檢視主機名:hostname
配置主機名:hostname HOSTNAME
(當前系統有效,重啟後無效)
hostnamectl命令(CentOS 7):
顯示當前主機名資訊:hostnamectl status
設定主機名,永久有效:hostnamectl set-hostname
配置檔案:/etc/sysconfig/network
HOSTNAME=<HOSTNAME>
(此方法的設定不會立即生效,但以後會一直有效)
(2)配置DNS伺服器指向:(最多可以有三臺主機被指為DNS伺服器)
配置檔案:/etc/resolv.conf
nameserver DNS_SERVER_IP
測試DNS(host/nslookup/dig):
# dig -t A FQDN
:把FQDN主機名解析為IP,能解析不一定能訪問;
# dig -x IP
:把IP解析為FQDN主機名;
5、ip route家族
(1)ip命令
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns },OBJECT可簡寫,各OBJECT的子命令也可簡寫。
uname -r
: 顯示核心版本;
rpm -qi iproute
:顯示iproute版本,與核心版本相同;
1)ip link
ip link set:
dev NAME (default):指明要管理的裝置,dev關鍵字可省略;
up和down:啟用和禁用
multicast on或multicast off:啟用或禁用多播功能;
name NAME:重新命名介面,先停止介面
mtu NUMBER:設定MTU的大小,預設為1500;
netns PID:ns為namespace,用於將介面移動到指定的網路名稱空間;
ip link show=ip link list
ip link help:顯示簡要使用幫助;
2)ip netns
:管理網路名稱空間;
ip netns list:列出所有的netns;
ip netns add NAME:建立指定的netns;
ip netns del NAME:刪除指定的netns
ip netns exec NAME COMMAND:在指定的netns中執行命令
ip netns list
ip netns add mynet
ip link set eno33554984 netns mynet
ip netns exec mynet ip link show
3)ip address
ip address add
ip addr add IFADDR dev IFACE
[label NAME]:為額外新增的地址指明介面別名;有label的話,secondary address可以在ifconfig中顯示,沒有label不顯示;
[broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算得到;
[scope SCOPE_VALUE]: 地址作用範圍;
global:全域性可用;
link:介面可用;
host:僅本機可用;
ip address delete:
ip addr delete IFADDR dev IFACE
ip address show:
ip addr list [IFACE]:顯示介面的地址;
ip address flush:清空介面上的所有地址;
ip addr flush dev IFACE
4)ip route
ip route add
ip route change
ip route replace
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
ip route delete:
ip route del TYPE PRIFIX
ip route show TYPE PREFIX
ip route flush TYPE PREFIX
ip route get:
ip route get TYPE PRIFIX
ip route get 192.168.0.0/24
6、ss命令
該命令是設計用來取代netstat命令的。
ss [options] [ FILTER ]
選項:
-t:TCP協議的相關連線
-u:UDP相關的連線
-w:raw socket相關的連線
-l:監聽狀態的連線
-a:所有狀態的連線
-n:數字格式
-p:相關的程式及其PID
-e:擴充套件格式資訊
-m:記憶體用量
-o:計時器資訊
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常見狀態:
LISTEN(監聽)、ESTABLISEHD(建立的連線)、FIN_WAIT_1、FIN_WAIT_2、SYN_SENT、SYN_RECV、CLOSED。
EXPRESSION:
dport=目的埠,sport = 源埠;
'( dport = :22 or sport = :22 )'
~]# ss -tan '( dport = :22 or sport = :22 )'
~]# ss -tan state ESTABLISHED 所有-tan中狀態為ESTABLISHED的連線
7、nmcli命令
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
nmcli device disconnect eno33554984
nmcli device status
connection - start, stop, and manage network connections
COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
nmcli conn down eno33554984
modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
如何修改IP地址等屬性?
# nmcli conn modify IFACE [+|-]setting.property value
ipv4.address
ipv4.gateway
ipv4.dns1
ipv4.method
manual
eg. nmcli conn modify eno33554984 + ipv4.address 192.168.30.100
nmtui(CentOS7)和setup(CentOS6)命令修改的是配置檔案,要想立即生效需要重啟網路服務。
8、配置檔案
IP/NETMASK/GW/DNS等屬性的配置檔案:/etc/sysconfig/network-scripts/ifcfg-IFACE;
路由的相關配置檔案:/etc/sysconfig/network-scripts/route-IFACE;
配置檔案/etc/sysconfig/network-scripts/ifcfg-IFACE通過大量引數來定義介面的屬性,他們可以通過vim等文字編輯器直接修改,也可以使用專用的命令進行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)
ifcfg-IFACE配置檔案引數:
DEVICE:此配置檔案對應的裝置的名稱;
ONBOOT:在系統引導過程中,是否啟用此介面;
UUID:此裝置的惟一標識;
IPV6INIT:是否初始化IPv6協議棧;
BOOTPROTO:啟用此介面時使用什麼協議來配置介面屬性,常用的有dhcp、bootp、static、none;
TYPE:介面型別,常見的有Ethernet, Bridge;
DNS1:第一DNS伺服器指向;
DNS2:備用DNS伺服器指向;
DOMAIN:DNS搜尋域;
DEFROUTE:是否為預設路由所用介面;
IPADDR: IP地址;
NETMASK:子網掩碼;CentOS 7支援使用PREFIX以長度方式指明子網掩碼;
GATEWAY:預設閘道器;
USERCTL:是否允許普通使用者控制此裝置,啟用或停掉;
PEERDNS:如果BOOTPROTO的值為“dhcp”,是否允許dhcp server分配的dns伺服器指向覆蓋本地手動指定的DNS伺服器指向,預設為允許;
HWADDR:裝置的MAC地址;
NM_CONTROLLED:是否使用NetworkManager服務來控制介面;
網路服務:network或NetworkManager。
管理網路服務:
CentOS 6:service SERVICE {start|stop|restart|status}
CentOS 7:systemctl {start|stop|restart|status} SERVICE[.service]
chkconfig --list
:檢查哪些服務是開啟或關閉的;
配置檔案修改之後,如果要生效,需要重啟網路服務;
CentOS 6:# service network restart
CentOS 7:# systemctl restart network.service
非預設閘道器路由配置檔案:/etc/sysconfig/network-scripts/route-IFACE
支援兩種配置方式,但不可混用:
1)每行一個路由條目:TARGET via GW
2)每三行一個路由條目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
給介面配置多個地址:ip addr,ifconfig或配置檔案都可以;
設定介面別名,以用於顯示多個地址:
1)ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL: eth0:0, eth0:1, …
2)為別名新增配置檔案
DEVICE=IFACE_LABEL
BOOTPROTO:網絡卡別名不支援動態獲取地址,獲取地址方式為static或none。