前言:
這篇博客的主旨就想文章題目說的那樣,當我們拿到一台新的系統時,我們怎么實現讓你的主機連接到網絡中。配置網絡就是給你的系統配置IP地址,子網掩碼,網關以及DNS。也就是說配置好這幾項計算機上網的主要條件,就能實現你的系統聯網了。此外,配置網絡總結來講有兩種方法;一是通過命令直接配置。通過命令配置的網絡知識暫時實現系統聯網,想要游泳聯網就要通過把配置內容寫入配置文件來實現了。配置網絡雖然步驟並不復雜但是其背后的知識量還是相當龐大的,我們只有了解其中的配置原理才能正確高效的去配置網絡從而實現計算機聯網。這篇博客主要介紹了配置網絡的常用命令,以及配置文件。通過示例的形式讓你更直觀的去理解配置方法。CentOS7版本經過改版以后這部分內容與之前的CentOS版本相差較大,我會把CentOS7版本的相關知識分開單獨介紹。
配置網絡的內容:
IP/mask
路由:默認網關
DNS:服務器指向,域名解析
主DNS服務器
次DNS服務器
第三DNS服務器
配置方式:
- 靜態指定
命令:
ifcfg: ifconfig,route...
ip: link,addr,route...
編輯配置文件
system-config-network-tui - 動態分配
DHCP: Dynamic Host Configuration Protocol
配置網絡接口
接口命名方式:
CentOS 6:不穩定
以太網:eth [0,1,2,3,...]
CentOS7:
網絡接口的命名方式有所變化:網絡接口的命名與物理環境有關。
ifcfg命令家族
ifconfig,route,netstat
ifconfig:
用來配置網絡接口的命令,立即生效,但不是永久生效。
ifconfig [interface] #不加接口顯示本機所有活動狀態的網絡接口,加接口只顯示指定接口的信息
ifconfig -a # 顯示本機所有網絡接口
ifconfig IFACE [up|down] #啟用禁用網絡接口
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up] #修改網絡地址
示例:[root@CentOS6 ~]#ifconfig eth1 172.18.45.61/16
第二種寫法相對復雜所以不用
ifconfig IFACE IP netmask NETMASK
注意:立即生效 啟
啟用混雜模式:[-]promisc #加-號禁用混雜模式
route:
路由管理命令 ,配置路由信息
route -n #查看路由信息
route add #添加路由
寫法:
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
-net :指定添加網絡路由
-host:指定添加主句路由
如果目標網絡是0.0.0.0那么表示添加的是一個默認路由
target:目標網絡,如果目標是一個主機,那么表示目標主機的IP地址,如果目標是一個網,那么表示網絡
gw:網關
dev:指定本地網卡
示例:
增加主機路由:
目標:192.168.1.3 網關:172.18.0.1
route add -host 192.168.1.3 gw 172.18.0.1 dev eth0 #添加主機路由默認mask值是32位精確匹配,所以不用寫
增加網絡路由:
目標:192.168.0.0 網關:172.18.0.1
route add -net 192.168.0.0/24 gw 172.18.0.1 dev eth0
增加默認路由:
route add default gw 172.18.0.1
刪除主機路由:
目標:192.168.1.3 網關172.18.0.1
route dal -host 192.168.1.3
刪除網絡路由:
目標:192.168.0.0 網關:172.18.0.1
route del -net 192.168.0.0/24
netstat:
網絡狀態查看命令
顯示網絡連接:
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [-listening|-l] [--all|-a] [--numeric|-n] [--extend|-e-extend|-e]][--program|-p]
-t: 顯示TCP協議的相關鏈接
-u:顯示UDP協議的相關鏈接
-w:顯示裸套接字的相關鏈接,不經過傳輸層,由應用層直接調用ARP進行數據傳輸。
-l:只顯示監聽狀態的連接
-a:顯示所有連接
-n:不反解IP地址
-e:拓展格式
-p:顯示與哪個程序建立連接
常用組合:
-tan:所有TCP相關的連接
-uan:所有UDP相關的連接
-tnl:TCP協議下,處於監聽狀態的連接
-unl:UDP協議下處於監聽狀態的連接(雖然UDP協議下沒有網絡狀態的概念,但是仍然可以這樣使用)
顯示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 顯示內核路由表
-n: 數字格式
顯示接口統計數據:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [-extend|-e] [--program|-p] [--numeric|-n]
netstat -i #顯示所有網絡接口數據
netstat –IIFACE #顯示指定接口網絡數據I與接口名之間不能有空格
[root@CentOS6 ~]#netstat -Ieth0
ifconfig -s eth0
總結:
ifcfg家族命令:ifconfig,route,netstat
ip家族:
配置Linux網絡屬性:ip命令和ss命令
ip:
ip工具主要作用:顯示或配置路由和設備
用法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link:
連接設備管理工具
子命令:
- set :設置
- show :顯示
set dev IFACE
可設置屬性:
up and down:激活或禁用指定接口
ifup/ifdown
show [dev IFACE]:指定接口
[up]:僅顯示處於激活狀態的接口
ip addr:
協議地址管理工具
用法: ip addr { add | del... } IFADDR dev STRING
子命令:
- add:增加指定接口的輔助IP地址
三個選用項:
[label PATTERN] :給指定接口添加別名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 僅鏈接可用
host: 本機可用
[broadcast ADDRESS]:指明廣播地址
示例:ip addr add 172.16.100.100/16 dev eth0 label eth0:0 - del:刪除指定接口的IP地址
示例:ip addr del 172.16.100.100/16 dev eth0 label eth0:0 - replace:替換指定接口的IP地址
- show:顯示指定接口的IP地址
- flush:清空指定接口或者指定別名的IP地址
ip address flush dev - change:修改指定接口的IP地址
ip route
路由管理工具
添加路由:ip route add
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主機路由:IP
網絡路由:NETWORK/MASK
示例:
添加網絡路由:ip route add 193.168.0.0/24 via 172.18.0.1
添加主機路由:ip route add 192.168.1.13 via 172.18.0.1
添加網關:ip route add default via GW dev IFACE
ip route add default via 172.18.0.1
刪除路由:
ip route del TARGET
刪除默認路由:
ip route del default
顯示和清空路由表:
ip route show
ip route flush
ss:
網絡狀態查看命令,與nestat命令用法相似,用來代替nestat命令
使用格式:ss [OPTION]... [FILTER]
選項:
-t: tcp協議相關
-u: udp協議相關
-w: 裸套接字相關
-x:unix sock相關
-l: listen狀態的連接
-a: 所有
-n: 數字格式
-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
EXPRESSION:
dport =
sport =
示例:’( dport = :ssh or 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詳細信息
網絡配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE
IP、MASK、GW、DNS相關配置文件
配置屬性:
- DEVICE:此配置文件應用到的設備
- HWADDR:對應的設備的MAC地址
- BOOTPROTO:激活此設備時使用的地址配置協議
常 用的地址配置協議:
dhcp:自動獲取IP
static:靜態指定IP
none:不用協議,與static效果相同
bootp - NM_CONTROLLED:NM是NetworkManager的簡寫, 此網卡是否接受NM控制;建議CentOS6為“no”
- ONBOOT:在系統引導時是否激活此設備
- TYPE:接口類型;常見有的Ethernet, Bridge
- UUID:設備的惟一標識
- IPADDR:如果使用的地址配置協議是手動指定的話需要指明IP地址,如果設定開機自動獲取IP那么不用指定
- NETMASK:子網掩碼
- GATEWAY: 默認網關
- DNS1:第一個DNS服務器指向
- DNS2:第二個DNS服務器指向
- USERCTL:普通用戶是否可控制此設備
- PEERDNS:如果BOOTPROTO的值為“dhcp”,是否允許 dhcp server分配的dns服務器指向信息直接覆蓋至 /etc/resolv.conf文件中
/etc/sysconfig/network-scripts/route-IFACE
路由配置文件,需要手動創建
注意:需service network restart生效
兩種配置風格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定義一條路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
注意:兩種風格不混合使用
設置網卡別名:
將多個IP地址綁定到一個NIC上 eth0:1 、eth0:2、 eth0:3
ifconfig命令:
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
ip命令: ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.1/16 dev eth0 label eth0:0
ip addr flush 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
setup
/etc/sysconfig/network
配置當前主機的主機名
hostname [HOSTNAME]
HOSTNAME=
NETWORKING=yes #網絡總開關
不會立即生效,重啟機器后生效與hostname [HOSTNAME] 命令配合使用
/etc/hosts
本地主機名數據庫和IP地址的映像
• 對小型獨立網絡有用
• 通常,在使用DNS前檢查
• getent hosts 查看/etc/hosts 內容
/etc/udev/rules.d/70-persistent-net.rules
網絡接口並命名相關的udev配置文件
編輯修改后並不會立即生效
生效方法:
卸載網卡驅動:modprobe -r e1000
裝載 網卡驅動:modprobe e1000
CentOS7 網絡配置
網卡命名:
CentOS 6之前,網絡接口使用連續號碼命名:eth0、eth1等,當 增加或刪除網卡時,名稱可能會發生變化
CentOS 7使用基於硬件,設備拓撲和設置類型命名:
(1) 網卡命名機制 systemd對網絡設備的命名方式
(a) 如果Firmware或BIOS為主板上集成的設備提供的索引信 息可用,且可預測則根據此索引進行命名,例如eno1
(b) 如果Firmware或BIOS為PCI-E擴展槽所提供的索引信息 可用,且可預測,則根據此索引進行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,則根據此信息進行命 名,例如enp2s0
(d) 如果用戶顯式啟動,也可根據MAC地址進行命名, enx2387a1dc56
(e) 上述均不可用時,則使用傳統命名機制
基於BIOS支持啟用biosdevname軟件
內置網卡:em1,em2
pci卡:pYpX Y:slot ,X:port
(2) 名稱組成格式
en: Ethernet 有線局域網
wl: wlan 無線局域網
ww: wwan無線廣域網
名稱類型:
o
s
x
p
網卡設備的命名過程:
第一步:
udev, 輔助工具程序/lib/udev/rename_device /usr/lib/udev/rules.d/60-net.rules
第二步: biosdevname 會根據/usr/lib/udev/rules.d/71biosdevname.rules
第三步: 通過檢測網絡接口設備,根據
/usr/lib/udev/rules.d/75-net-description ID_NET_NAME_ONBOARD
ID_NET_NAME_SLOT
ID_NET_NAME_PATH
設置傳統網卡命名方式
- 編輯/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
或:修改/boot/grub2/grub.cfg - 為grub2生成配置文件
grub2-mkconfig -o /etc/grub2.cfg - 重啟系統
建議直接修改配置文件,將/boot/grub2/grub.cfg文件中內核區域以linux16開頭的行,看到fhgb quiet字樣后邊加net.ifnames=0 之后修改/etc/sysconfig/network-scripts文件中的DEVICE項目和NAME項目。另外文件名手動修改,定義別名生效。
nmcli:
CentOS7地址配置工具
與IP命令相似
用法:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
nmcli 命令強大的命令補全功能:
[root@CentOS7 ~]#nmcli
agent device help networking
connection general monitor radio
[root@CentOS7 ~]#nmcli connection
add delete edit help load monitor show
clone down export import modify reload up
[root@CentOS7 ~]#nmcli device
connect disconnect lldp monitor set status
delete help modify reapply show wifi
常用的兩個OBJECT:
1. connection:
相當於addr用於配置IP地址
子命令: start, stop, and manage network connections
修改IP地址示例:
nmcli connection modify IFACE [+|-] setting.property value
[+|-] #表示添加或者刪除ip地址
setting.property:
ipv4.addresses
ipv4.gateway
ipv4.dns1
ipv4.method #ipv4的地址獲取方式
manual | auto #手動或者自動(手動配置的ip地址立即生效)
創建新連接static,指定靜態IP,不自動連接
nmcti con add con-name static ifname eth0 autoconnect no type Ethernet ip4 172.25.X.10/24 gw4 172.25.X.254
2. device :
相當於link管理連接設備
子命令:show and manage network interfaces
設備即網絡接口,連接是對網絡接口的配置。一個網絡接口 可有多個連接配置,但同時只有一個連接配置生效
修改配置文件執行生效:
systemctl restart network
nmcli con reload
這篇博客是否對你配置網絡有幫助呢?有問題以及指教的地方請留言交流吧。