1. 程式人生 > >Linux篇 | CentOS6、CentOS7、Ubuntu1804修改主機名、網卡、網絡

Linux篇 | CentOS6、CentOS7、Ubuntu1804修改主機名、網卡、網絡

mkconfig ng- protocol ipaddr object cli sed top secondary

主機名

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狀態)

(3)修改網卡名
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修改主機名、網卡、網絡