Linux 網絡管理與配置
在學習linux的過程中,Linux網絡的管理和配置在後續學習中是很重要的,幾乎學習的後期都離不開網絡的概念和配置,如叢集中的使用。所有學習好Linux網絡至關重要。
Linux網絡配置有兩種方式:靜态指定和動态配置設定
動态配置設定就是利用DHCP伺服器,動态的給linux主機配置設定IP位址。靜态指定可以通過指令配置臨時的IP和相應的NETMASK,GATEWAY,DNS等,也可以通過修改配置檔案做相應的配置。
在CentOS6上的網絡配置
一.靜态指定,通過指令暫時配置linux網絡
CentOS6網絡接口命名方式:
以太網:eth[0,1,2,...]
ppp:ppp[0,1,2...]
1.ifconfig指令:ifconfig - configure a network interface
ifconfig [interface]
ifconfig:顯示目前系統上激活的網絡接口資訊
ifconfig interface:顯示指定的網絡接口資訊
ifconfg -a:顯示系統上的網絡接口資訊
ifconfig interface up|down:啟動或關閉一個網絡接口
ifconfig interface [aftype] options | address ...
ifconfig interface IP/mask [up]
ifconfig interface IP netmask MAKE
eg:

這些修改隻是暫時的,重新開機系統之後就會失效。
2.route指令:route - show / manipulate the IP routing table
route:顯示和操作IP路由表
a.檢視路由:route -n
b.添加路由:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
eg:目标位址為:192.168.1.8 網關為172.16.0.1,本地添加一條路由:
目标位址為192.168.0.0 網關為172.16.0.1:
c.删除路由:route del
route del [-net|-host] target [gw Gw] [net-mask Nm] [[dev] If]
eg:
route del -host 192.168.1.8
或者:route del -host 192.168.1.8 gw 172.16.0.1 dev eth1
routedel -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
d.将linux主機接入到網絡中,需要用到IP/MASK、路由裝置和DNS伺服器。而Linux系統中的DNS伺服器指定是在一個檔案中:
/etc/resolv.conf
nameserver NDS_SERVERIP
可以指定多個DNS伺服器的IP。檢視DNS伺服器的域名解析指令有:dig和host
正向解析:FQDN:完全合格域名-->IP
dig -t A FQDN
host -t A FQDN
反向解析:IP-->FQDN
dit -x IP
host -t PTR IP
3.netstat指令:
netstat - Print network connections, routing tables, interface statis-
tics, 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相關(raw socket原始套接字,和其他套接字不同之處在于它工作在網絡層和資料層,而其他套接字工作在傳輸層,隻能進行傳輸層資料操作。常使用raw socket 進行資料監聽)
-l:處于監聽狀态
-a:所有連接配接狀态
-n:以數字顯示IP和端口
-e:擴充格式
-p:顯示相關進行的PID:
顯示路由表:
netstat {--route|-r} [--verbose|-v] [--numeric|-n] [--continuous|-c]
-r:顯示核心路由
-n:數字格式顯示
-c:一直循環顯示路由表
顯示接口資訊:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] [--continuous|-c]
-i:顯示所有接口的資訊
-Iiface:顯示指定接口的資訊
4.ip指令:
ip - show / manipulate routing, devices, policy routing and tunnels
ip [OPTIONS] OBJECT {COMMAND|help}
學習中常用到的OBJECT有:link,addr,route
(1)ip link :
ip link set DEVICE {up|down|arp{on|off}
ip link set DEVICE | dev DEVICE up|down :表示啟使用者關閉此接口裝置。
ip link show [DEVICE|dev DEVICE]:顯示所有網絡接口裝置或顯示指定接口裝置。
(2)ip addr:
ip addr {add|del}IFADDR dev STRING:添加和删除網卡裝置
[label LABEL]:添加位址時指明網卡别名
[scope {global|link|host}]:指明網卡ip作用域
global:全局可用
link:僅連接配接可用
host:本機可用
[broadcast ADDRESS]:指明廣播位址:
ip addr {show|flush} [devSTRING] [scope COPE-ID ]
(3)ip route:
添加路由:ip route add TARGET via GW dev IFACE src
添加主機路由:
ip route add IP via GW dev IFACE
添加網絡路由:
ip route add NEWORK/MASK via GW dev IFACE
删除路由:
ip route del TARGET via GW del IFACE
顯示路由:
ip route show
清空路由:
ip route flush
[dev IFACE]
[via PREFIX]
5.ss指令:
ss指令與netstat的功能相似,但是比netstat功能更強大
ss - another utility to investigate sockets
ss [options] [ FILTER ]
常用選項:
-a:display all sockets:顯示所有
-t:tcp協定相關
-w:裸套接字相關
-x:Unix socket相關
-l:listen狀态的連接配接
-n:以數字格式顯示
-p:顯示相關的程式和PID
-e:擴充内容
-m:記憶體用量
-o:計時器資訊
常用組合選項:
-atn -tanl -tanlp -uan等
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)’
二.靜态指定,修改配置檔案配置linux網絡
Linux 中的網路配置要想永久有效,需要修改相應的配置檔案。其中IP,MASK,GW,DNS相關的配置檔案:/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相關的配置檔案為:/etc/sysconfig/network-scripts/route-IFACE 這個檔案預設是不存在的,要手動添加。先檢視配置檔案:
1.網絡位址配置檔案:
/etc/sysconfig/network-scripts/ifcfg-IFACE中的各個參數的含義:
DEVICE:此配置檔案應用到的裝置
HWADDR:對應裝置的MAC位址
BOOTPROTO:激活此裝置時使用的位址配置協定,常用的有:dhcp,static,none,bootp
NM_CONTROLLED:NM是NetworkManager的縮寫,表示此網卡是否接受NM的控制,CentOS建議關閉
ONBOOT:系統在引導時是否激活此裝置;
TYPE:接口類型:常見的有:Ethernet,Bridge
UUID:裝置的唯一辨別:
當BOOTPROTO的值為static時,要指定裝置的IP,NETMASK,GATEWAY和DNS,分别指裝置的IP位址,子網路遮罩,預設網關,DNS服務指向
USERCTL:普通使用者是否可控制此裝置
PEERDNS:如果BOOTPROTO的值為dhcp ,是否允許dhcp server配置設定的DNS服務指向資訊直接覆寫至/etc/resolv.conf檔案中。
2.路由配置檔案:
/etc/sysconfig/network-scripts/route-IFACE,這編寫路由規則時有兩種方法:
(1)TARGET via GW:如:
192.168.1.6 via 172.16.0.1
(2)每三行定義一條路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
如:
ADDRESS0=192.168.1.6
NETMASK0=255.255.255.0
GATEWAY0=172.16.0.1
3.通過指令和配置檔案進行配置網絡外還可以通過一個工具進行配置就是tui(text user interface)
system-config-network-tui即可打開此工具,或者使用setup也可打開。此種方法配置的網絡必須重新開機網絡服務方能生效。
4.配置目前主機的主機名:
配置主機名的方法也有兩種:通過指令配置,臨時有效。修改配置進行配置,永久有效。
(1)使用hostname指令:
hostnam [HISTNAME]
hostname:檢視目前系統的主機名
hostname HOSTNAME:修改主機名為HOSTNAME
(2)修改配置檔案:/etc/syconfig/network
HOSTNAME=NAME
5.給網絡接口重命名:
網絡接口識别并命名相關的udev配置檔案為:
/etc/udev/rules.d/70-presistent-net.roules
在此檔案中隻需修改NAME項,修改成自己指定接口名。如我們把NAME=”eth1” 修改為eth0 把NAME=”eth2” 修改為eth1。然後解除安裝網卡子產品:modprobe -r e1000 。 再加載網卡子產品:modprobe e1000。
再在網絡配置檔案中/etc/sysconfig/network-scripts/ifcfg-IFACE分别進行修改DEVICE=eth0 和DEVICE=eth1 。并把網絡配置檔案名修改為ifcfg-eth0和ifcfg-eth1。在重新開機網絡服務即可。
三.CentOS 7 的網絡屬性配置:
從CentOS 7開始網絡裝置的命名方式不再遵循傳統的命名方式(eth[0,1,2..]),而接口名稱被自動基于固件,拓撲機構和位置資訊來确定。現在即使添加移除網絡裝置,接口名稱仍然保持固定,而無需重新枚舉,和壞掉的硬體可以無縫替換。
CentOS 7網絡裝置名稱的組成格式:
en:Ethernet
wl:wlan
ww:wwan
名稱類型:
o<index>:內建裝置的裝置索引号命名:
s<slot>:擴充槽的索引号
x<MAC>:基于MAC位址命名
p<bus>s<slot>:enp2s1
雖然新的命名方式有很大的益處,但是也影響了不少使用者的操作,不便于讀和操作。修改網卡名稱:
1.編輯網絡配置檔案:/etc/sysconfig/network-scripts/ifcfg-eno16777736将NAME項修改為eth0.
2.重命名改配置檔案:
# mv ifcfg-eno16777736 ifcfg-eth0
3.編輯/etc/default/grub/配置檔案:加入“net.ifname=0 bisodevname=o”到GRUB_CMDLINE_LINUX。如:
4.運作grub2-mkconfig -o /boot/grub2/grub.cfg 重新生成GRUB配置并更新核心參數
5.重新開機系統
CentOS 7 網絡位址配置工具:nmcli
CentOS 7 中的預設網絡服務由NetworkManager提供,可以用指令工具nmcli來控制NetworkManager
nmcli - command?line tool for controlling NetworkManager
指令格式:
nmcli [OPTIONS]OBJECT{COMMAND|help}
OBJECT
g[eneral] NetworkManager's general status and operations
c[onnection] NetworkManager's connections
d[evice] devices managed by NetworkManager
1.general:
COMMAND := {status|hostname}
nmcli general status:顯示NM的所有狀态
nmcli general hostname:顯示系統目前的主機名
2.device:
device - show and manage network interfaces
COMMAND := {status|show|delete}
nmcli device status:顯示目前系統網絡裝置處于的狀态
nmcli device show [ifname]:顯示系統上的網絡裝置詳細資訊或指定網卡資訊
nmcli device delete:删除系統上的一個裝置。此裝置隻能是工作在系統上的軟體裝置,如bonds,bridges,teams
3.connection:
connection - start, stop, and manage network connections
COMMAND := {show|up|down|add|edit|modify|delete|reloa|load}
nmcli connection show :顯示指定網絡接口的詳細資訊
nmcli connection up:激活一個網絡接口
nmcli connection down:關閉一個網絡接口
這裡講一下modify:;
如何修改IP位址等屬性:
#nmcli connection modify IFACE [+|-]setting.property value
setting.property:
pv4.addresses
pv4.gateway
ipv4.dns1
ipv4.method
eg:
添加一個dns伺服器指向:
# nmcli connection modify eth0 + ipv4.dns 8.8.8.8
給網絡裝置添加一個ip位址:
# nmcli connection modify eth0 +ipv4.address 172.16.99.6
移除一個網絡裝置上的ip位址:
# nmcli connection modify eth0 -ipv4.address 172.16.99.6
CentOS 7 的網絡配置也可以工具nmtiu:他顯示的是一個圖形化操作界面。
CentOS7 配置主機名:hostnamectl
hostnamectl status:顯示目前系統的主機名以及相應資訊
hostnamctl set-hostname:設定主機名