Linux篇 | CentOS6、CentOS7、Ubuntu1804修改主機名、網卡、網絡
CentOS6:
修改“/etc/sysconfig/network”文件,建議在把“/etc/hosts”文件裏的主機名也改了,因為此文件的作用是:把主機名解析成本地IP地址(127.0.0.0),修改後重啟生效,或者用"hostname 新主機名“命令臨時設置,之後註銷重新登錄即可。
CentOS7:
1.配置文件:/etc/hostname ,默認沒有此文件,通過DNS反向解析獲取主機名,主機名默認為:localhost.localdomain
2.顯示主機名信息 hostname或者hostnamectl status
3.設置主機名 hostnamectl set-hostname 新主機名
說明:這條命令最新版Ubuntu系統也適用
4.註銷,重新登錄
5.恢復默認主機名
刪除文件/etc/hostname,就會恢復主機名localhost.localdomain
網卡名
CentOS6網卡名稱
- 接口命名方式:CentOS 6
- 根據以太網命名:eth[0,1,2,...]
- 根據ppp撥號網絡(不多):ppp[0,1,2,...]
- 網絡接口識別並命名相關的udev配置文件(網卡命名規則文件 ):
/etc/udev/rules.d/70-persistent-net.rules
CentOS6上修改網卡名稱:
1.方法一:修改網卡命名文件
(1).編輯網卡命名規則文件
/etc/udev/rules.d/70-persistent-net.rules
(2).查看網卡: dmesg |grep –i eth
或者 ethtool -i eth0
(3).卸載網卡驅動: modprobe -r e1000
或者 rmmod e1000
(4).裝載網卡驅動: modprobe e1000
(5).查看ifconfig
或者 ip a
2.方法二:使用新網絡工具“ip a”
查看網卡“ip a”,修改網卡名“eth0”為“eth1”
(1)禁用網卡“eth0” ip link set eth0 down
(2)查看網卡"ifconfig"或者"ip a"("ip a"看到down狀態)
ip link set eth0 name eth1
(4)查看網卡名是否修改成功“ip a”
(5)啟用網卡“eth1”
ip link set eth1 up
CentOS7網卡名稱
- 網卡名為"ens"開頭,如“ens33”
- 網絡接口識別並命名相關的udev配置文件(網卡命名規則文件 ):
/etc/udev/rules.d/70-persistent-net.rules
CentOS7上修改網卡名稱:
1.方法一:使用“nmcli”命令
(1).在/etc/sysconfig/network-scripts/目錄,創建文件名為ifcfg-XXX的文件,註意“XXX”可以隨意寫,其他不行,一般都會與網卡名一樣,如“ifcfg-eth1”。
(2).在文件裏添加網絡變量,必有的變量有:DEVICE(設備名或叫網卡名,舉例是eth1)、NAME(網絡名,舉例是con-eth1)、ONBOOT(開機自啟)、TYPE(網絡連接類型)、BOOTPROTO(網絡獲取的方式:動態或靜態)、IPADDR(IP地址)NETMASK或PREFIX(都是子網掩碼)、GATEWAY(網關)一般網卡名和網絡名還有文件名中的"xxx"名字都一樣。
(3).查看當前網絡設置“nmcli connection”,會看到當前有一個網卡設備名是“eth1”
(4)重新加載網絡設備“nmcli connection reload”
(5).在查看網絡設置“nmcli connection”,會看到新配置的網絡名
(6).將配置好的網卡設備名(eth1)文件“ifcfg-eth1”替換當前網卡“eth1”生效的文件。nmcli connection up con-eth1(網絡名)
(7).在查看網絡設置“nmcli connection”,會看到新配置的網絡名生效,原來的網絡名失效
2.方法二:傳統命名方式
(1) 編輯/etc/default/grub配置文件
在GRUB_CMDLINE_LINUX行添加“net.ifnames=0”,如下:
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0"
或:修改/boot/grub2/grub.cfg(非常不推薦)
(2) 為grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
說明:grub2-mkconfig會以/etc/default/grub文件為模板,根據當前系統配置,生成/etc/grub2.cfg文件。“-o”是覆蓋的意思。所以,上面的命令是,以/etc/default/grub文件為模板,根據當前系統配置,生成/etc/grub2.cfg文件去覆蓋原有的/etc/grub2.cfg文件。其中/etc/grub2.cfg文件是軟連接。
(3) 重啟系統
網絡配置
網絡配置方式分靜態和動態的.
說明:
Linux的ip命令和ifconfig類似,但前者功能更強大,並旨在取代後者。
ifconfig是net-tools中已被廢棄使用的一個命令,許多年前就已經沒有維護了。iproute2套件裏提供了許多增強功能的命令,ip命令即是其中之一。
- 靜態指定"
- ifconfig, route, netstat
- ip: object {link, addr, route}, ss, tc
- system-config-network-tui,setup
- 配置文件
- 動態分配:DHCP
註釋:CentOS7新增加了網絡配置工具:
圖形界面工具:nm-connection-editor
字符界面配置工具:nmtui
命令行工具:nmcli(需掌握,這個在CentOS6也有,但功能不像CentOS7上豐富)
一。修改IP地址、子網掩碼、網關
修改網絡的配置(或叫腳本)文件:
“/etc/sysconfig/network-scripts/ifcfg-ethXX”
格式如下(等號左邊必須大寫,因為是變量):
DEVICE=ethXX \\網卡名、設備名
NAME=XX \\網絡名稱
BOOTPROTO=static(static和none都表示靜態分配)或者寫dhcp動態分配
\\如果是動態分配,就算下面設置了IP、子網掩碼、網關、DNS都不起作用)
NETMASK=子網掩碼,示例:255.255.255.0
PREFIX=24也是子網掩碼的表示方法,“24”表示“255.255.255.0”
ONBOOT=yes \\開機網卡是否自啟。“yes”表示同意開機自啟,“no”表示不同意
GATEWAY=網關 \\查看網關用“route -n”
DNS1=DNS地址 \\DNS可以把網址轉換成IP,除了配置自己公司的DNS地址,還可以添加互聯網上的DNS
DNS2=114.114.114.114 \\電信的DNS服務器
DNS3=8.8.8.8 \\谷歌的DNS服務器地址
DNS4=1.1.1.1 \\號稱世界最快的DNS服務器,存放在澳大利亞,我們因為被“墻”阻擋,所以體驗不到
DNS5=223.6.6.6或223.5.5.5 \\都是阿裏DNS
DNS6=119.29.29.29 \\騰訊DNS
DNS7=180.76.76.76 \\百度DNS
查看生效的NDS“cat /etc/resolv.conf”
在上面修改文件後,要想使文件生效,需要重啟網絡服務即可。
可在CentOS6,“NetworkManager服務(產線上一般都會停止這個服務)”會和“network網絡服務”沖突,導致無法使配置文件生效。要生效有兩種方法:
1.重啟“NetworkManager服務”
service NetworkManager restart
2.關閉“NetworkManager服務”,重啟“network網絡服務”
Centos6: service NetworkManager status 查看服務狀態
chkconfig NetworkManager off \\關閉自動啟動
service NetworkManager stop \\關閉服務
service network restart \\重啟網絡服務
註釋:“NetworkManager服務停止後,在Centos6圖形化界面,網絡圖標會消失。
Centos7: systemctl status NetworkManager 查看服務狀態
systemctl stop NetworkManager 臨時停止
systemctl disable NetworkManager 下次開機即停止服務
二。配置網絡接口(即IP、子網掩碼等)
ifconfig命令:(立即生效,重啟後失效)
ifconfig [interface(接口)] \\查看某某接口
ifconfig -a \\查看所有接口(包含未生效的接口)
ifconfig 接口 [up|down] \\開啟或禁用接口
ifconfig 接口 IP/netmask [up] \\配置接口的IP地址網關並開啟接口
ifconifg 接口 IP netmask NETMASK \\配置接口的IP和子網掩碼
三。路由管理命令
1)查看路由表:route -n
路由表(重點理解)由關鍵的四項組成:
目標網絡(Destination):目標網絡的網絡ID
網關(Gateway) :到達目標網絡,將數據包發送給下一個路由器的接口IP
子網掩碼(Genmask) :目標網絡的網絡ID的子網掩碼
接口(Iface) :從本設備的哪個接口出去,就能到達目標網絡
2)添加路由表:route add
格式:route add [-net|-host] target [netmask Nm] [gw Gw] [[dev]If]
添加 某網卡或本機 目標 子網掩碼 網關 設備網卡名
示例1:目標:192.168.1.3 網關:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
示例2:目標::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
3)配置默認路由(即default或0.0.0.0,表示任何網絡),網關: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.1
4)刪除路由表:route del
格式:route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
刪除 某網卡或本機 目標 網關 子網掩碼 設備網卡名
示例1:目標:192.168.1.3 網關:172.16.0.1
route del -host 192.168.1.3
示例2:目標:192.168.0.0 網關:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
5)route默認沒有補全命令,需要安裝“bash-completion.noarch”包
`yum -y install bash-completion.noarch`
安裝後,需要註銷,重新登錄就生效。
四。顯示網絡連接
1.netstat命令
(1)格式: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
-r: 顯示內核路由表
(2)示例
常用組合:-tan, -uan, -tnl, -unl
顯示路由表:netstat {--route|-r} [--numeric|-n]
顯示接口統計數據:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p][--numeric|-n]
(3)示例
1)當前網絡的連接情況(已連接的) netstat -nt
2)當前網絡的連接情況(連接和沒連接的網絡) netstat -ntua
3)監聽當前程序使用的端口 netstat -nlt
4)查看某端口被什麽程序使用 netstat -nltp
示例:查看端口6000被什麽程序使用(面試題),有兩種方法:
方法一(推薦):lsof -i :6000
方法二:netstat -nltp :6000
5)詳細查看某端口被什麽程序使用 netstat -nltpe
6)網卡的連接情況 : netstat -i
Iface(網卡名)、MTU(MTU的大小)、RX-OK(接收的數據報文)、TX-OK(發送的數據報文)
通過“watch -n 0.5 netstat -i”可觀察網卡在0.5秒內使用的情況
“watch -n 0.5 netstat -IechX”可觀察網卡echX在0.5秒內使用的情況
2.ss命令
相比netstat,ss是重點
ss命令和netstat實現的功能相似,而且netstat的選項ss都可以用。ss還有很多netstat沒有的功能,並且,在用戶連接數很多的時候,ss命令可以快速的顯示,效率更高。
(1)格式:ss [OPTION選項]... [FILTER過濾]
(2)netstat通過遍歷proc來獲取socket信息;ss使用netlink與內核tcp_diag模塊通信獲取socket信息
(3)[OPTION選項]:
-t: tcp協議相關
-u: udp協議相關
-w: 裸套接字相關
-x:unix sock相關
-l: listen狀態的連接
-a: 所有
-n: 數字格式
-p: 相關的程序及PID
-e: 擴展的信息
-m:內存用量
-o:計時器信息
常用組合:-tan, -tanl, -tanlp, -uan
(4)FILTER : [ state TCP-STATE ] [ EXPRESSION ]
1)[ state TCP-STATE ]:TCP的各種狀態表達式
TCP的常見狀態:
tcp finite state machine(有限狀態機共11種):
LISTEN: 監聽
ESTABLISHED:已建立的連接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
2)[ EXPRESSION ]
dport(目標端口) =
sport(源端口) =
示例:‘(dport = :ssh or sport = :ssh)‘目標端口或者源端口是ssh
五。配置Linux網絡屬性:ip 命令(重要)
說明:
ip命令是很強大的網絡工具,已經快要替換老牌的ifconfig,並且它能實現ifconfig很多沒有的功能,所以這個命令很重要,這裏只是列出ip命令常用的一>些命令,具體可以查看man幫助或help。
格式:
ip [ 選項 ] 目標 { [子命令:link | addr | route] help(子命令幫助) }
“[]”表示可選項,可寫可不寫;“{}”是必須項,跟著命令寫的。
1.配置網絡設備“ip link”,可查看數據鏈路層的信息
(1)激活或禁用指定接口“up或down”
ip link set ethXX up \\激活ethXX
ip link set ethXX down \\禁用ethXX
(2)激活或禁用指定接口““ifup或ifdown”
ifup ethXX \\激活ethXX
ifdown ethXX \\禁用ethXX
說明:
1)ifup與ifdown兩個程序其實是script(腳本)而已,它會直接到 /etc/ sysconfig/network-scripts目錄下搜索對應的配置文件,例如ifup eth0,它會找出ifcfg-eth0這個文件的內容,然後加以設置
2)這兩個程序主要是搜索設置文件(ifcfg-ethx)來進行啟動與關閉的,所以在使用前請確定ifcfg-ethx是否真的存在於正確的目錄內,否則會啟動失敗。
3)如果以ifconfig eth0來設置或者是修改了網絡接口後,就無法再以ifdown eth0的方式來關閉了。因為ifdown會分析比較目前的網絡參數與ifcfg-eth0是否相符,不符的話,就會放棄這次操作。因此,使用ifconfig修改完畢後,應該要以ifconfig eth0 down才能夠關閉該接口。
(3)查看接口狀態
show ethXX \\查看接口狀態
show up ethXX \\查看激活狀態的接口
(4)查看數據鏈路層信息“ip link”
如果電腦哪天網絡不通,可使用“ip link”查看網卡是哪種狀態。
“UP”狀態:網線沒問題
“DOWN”狀態:網線有問題
2.配置網絡設備“ip addr”,可查看或設置網絡層地址
(1)添加或刪除
ip addr { add | del } IFADDR dev STRING
1)給網卡添加IP地址時指明網卡別名[label LABEL]
ip addr { add | del } IFADDR dev STRING label 網卡別名
示例:ip addr add 172.16.100.100/16 dev eth0 label eth0:0
使用命令的方式設置別名,重啟服務就沒了,若要永久生效,需要寫配置文件vi /etc/sysconfig/network-scripts/ifcfg-eth0:0。
註意設置別名時必須是靜態ip,不能是自動獲取。
如果不想要這個別名,直接刪除該文件,然後重啟“network”服務即可
2)指明作用域:[scope {global|link|host}]
global: 全局可用,即兩個接口進來的數據我都可以響應。是默認狀態。
link: 僅鏈接可用,進來的數據只有直接相連的那個接口能夠響應
host: 本機可用,即只能自己訪問
3)指明廣播地址:[broadcast ADDRESS]
(2)ip address show - look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
(3)ip addr flush 使用格式同show
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
3.配置網絡設備“ip route”(路由表管理)
(1)添加路由:ip route add
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主機路由:IP
網絡路由:NETWORK/MASK
示例1:ip route add 192.168.0.0/24 via 172.16.0.1
示例2:ip route add 192.168.1.13 via 172.16.0.1
(2)添加網關:ip route add default via GW dev IFACE
ip route add default via 172.16.0.1
(3)刪除路由:ip route del TARGET
(4)顯示路由:ip route show|list
(5)清空路由表
ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0
ip route flush(全清空)
說明:
使用命令的方式增加或者刪除路由記錄,都是臨時的,如果重啟network服務,那麽操作就失效了。想要永久生效可以編輯配置文件/etc/sysconfig/network-scripts/route-eth*,步驟如下:
1、 vim etc/sysconfig/network-scripts/route-eth0
文件內容有兩種寫法:
1)單行
netid/mask via gw 比如2.2.2.2/16 via 10.0.0.0
2)多行
ADDRESS#=目標網絡
NETMASK#=子網掩碼
GATEWAY#=網關
註意:
同一路由記錄的#數字必須一樣,因為可能會添加多條路由,數字一樣的為同一組。
同一個文件裏,兩種格式不能混合著寫。
2、重啟服務
Centos6: service network restart
Centos7: systemctl restart network
六。nmcli命令
- 建議使用傳統的方法修改網絡,即修改配置文件。最小化安裝的CentOS系統沒有nmcli命令
- nmcli是網絡配置工具,功能豐富。
- 優點是可讓網卡關聯多套配置。
- 如在公司會議室需要使用網絡名office-eth1的網絡配置,獲取類型是靜態獲取IP地址;在辦公室使用網絡名為bangong-eth1的網絡配置,獲取類型是動態DHCP獲取。
格式:nmcli [OPTIONS(選項)] OBJECT(過濾) { COMMAND(命令) | help }
1.常用選項:
device:顯示和管理網絡接口
選項具體使用可看幫助 nmcli device help
connection:啟動,停止和管理網絡連接
選項具體使用可看幫助 nmcli device help
2.修改IP地址等屬性:
nmcli connection modify IFACE(網卡設備的網絡名) [+|-]setting(設置).property(屬性) value(值)
“setting.property”有很多,Tab鍵可補全,常用的有:
ipv4.addresses
ipv4.gateway
ipv4.dns1
ipv4.method manual | auto
執行“nmcli connection modify”和修改"ifcfg-*"文件的對應關系:
3.生效命令
1)修改網絡配置文件,生效的方式
方法一:systemctl restart network \\重啟網絡服務
方法二:nmcli con reload
2)使用nmcli命令後,生效的辦法
方法一:nmcli con down eth0 ;nmcli con up eth0
方法二:nmcli con reload
顯示
1.顯示網絡狀態nmcli connection
2.顯示網絡設備狀態nmcli device status
3.顯示網絡連接配置及借款屬性nmcli connection show 網絡名
4.顯示所有包括不活動連接nmcli con show
5.顯示所有活動連接nmcli con show --active
新建、刪除、啟用
1.創建新連接default,IP自動通過dhcp獲取
nmcli con add con-name default type Ethernet ifname eth0
2.刪除連接
nmcli con del default
3.創建新連接static ,指定靜態IP,不自動連接
nmcti con add con-name static ifname eth0 autoconnect no typeEthernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
4.創建(con-name)網絡名“meeting-eth1”,針對(ifname)網卡eth1,類型(type)是ethernet,開機自啟(autoconnect)
nmcli connection add con-name meeting-eth1 type ethernet autoconnect yes ifname eth1
5.啟用static連接配置
nmcli con up static
6.啟用default連接配置
nmcli con up default
7.查看幫助
nmcli con add help
修改
1.修改網卡設備的信息“nmcli connection modify”
示例:修改網卡設備eth1的網絡名為office-eth1
nmcli connection modify eth1 connection.id office-eth1
2.修改連接設置
nmcli con mod “static” connection.autoconnect no
nmcli con mod “static” ipv4.dns 172.25.X.254
nmcli con mod “static” +ipv4.dns 8.8.8.8
nmcli con mod “static” -ipv4.dns 8.8.8.8
nmcli con mod “static” ipv4.addresses “172.16.X.10/24 172.16.X.254”
nmcli con mod “static” +ipv4.addresses 10.10.10.10/16
3.設置DNS
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes等價於:
修改/etc/resolv.conf文件中PEERDNS=no 表示當IP通過dhcp自動獲取時,dns仍是手動設置,不自動獲取。DNS設置的存放在此文件。
nmcli實現bonding
1.添加bonding接口
添加binding,類型是bond,名字是mybond0,接口叫bond0,模式是modeactive-backup
nmcli con add type bond con-name mybond0 ifname bond0 modeactive-backup
2.添加從屬接口
讓兩個網卡接口“ens3”和“ens7”加入到bonding
nmcli con add type bond-slave ifname ens7 master bond0
nmcli con add type bond-slave ifname ens3 master bond0
註:如無為從屬接口(網卡設備)提供連接名(網絡名),則該名稱是接口名稱加類型構成
3.給bonding添加IP地址
4.要啟動綁定,則必須首先啟動從屬接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
4.啟動綁定
nmcli con up mybond0
Ubuntu的配置
1.修改主機名
hostnamectl set-hostname ubuntu1804
2.查看ip和gateway(網關)
ip addr
route -n
3.查看DNS
ls -l /etc/resolv.conf
4.網卡名
默認ubuntu的網卡名稱和Cent OS 7類似,如:ens33,ens38等
修改網卡名稱為傳統命名方式,與CentOS7的修改方式一樣:
1.修改配置文件 vi /etc/default/grub
2.在GRUB_CMDLINE_LINUX添加內容
GRUB_CMDLINE_LINUX="net.ifnames=0"
3.生效新的grub.cfg文件
grub-mkconfig -o /boot/grub/grub.cfg
4.重啟系統生效 reboot
5.Ubuntu的網絡配置
詳情可查看官方文檔:
https://help.ubuntu.com/lts/serverguide/network-configuration.html.zh-CN
註意:配置文件中的間隔很嚴格,一般是兩個字節,錯誤則網絡不通
1)配置動態IP地址:
cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: yes
修改網卡配置文件後需執行命令生效:netplan apply
2)配置靜態IP地址:
cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.6.10/24
- 10.10.10.10/24(可配置多個IP地址)
gateway4: 192.168.6.1
nameservers:
search: [mydomain, otherdomain]
addresses: [223.5.5.5, 8.8.8.8, 1.1.1.1]
Linux篇 | CentOS6、CentOS7、Ubuntu1804修改主機名、網卡、網絡