<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ![](https://www.byte-edu.com/wp-content/uploads/2019/04/linux-logo.png) ### Linux 云計算基礎入門之Linux 基礎網絡配置 Linux 網絡能力是非常強大的,現在我們使用的所有路由器底層系統幾乎都是 linux,后面我們會學習到 Linux 網絡配置,學完之后你就會發現幾乎所有的路由器你都會配置了。但是現在我們先學習最基礎的網絡配置,也就是網卡配置。上一節我們通過修改網卡中的 ONBOOT 選項完成了 IP 地址獲取(要到了女神電話號碼),但是這個地址是經常會變的,本節我們就來學習如何指定IP地址,這也是企業中經常遇到的問題。想不到這么快就接觸到生產案例了吧,沒錯,我們就是要幫你快速掌握企業級技能。 我們不會長篇大論的去講網絡理論知識,最簡單有效的學習方法是用到時立刻去學。比如現在我們的問題是如何固定IP地址,那么就需要涉及到下面的幾個網卡配置參數,當前我們先掌握這些即可,至于后面遇到更深層次的網絡問題,再去學習就是了。 #### 1\. 網卡配置文件解析 這里我們以最小化安裝的 CentOS7.6 默認網卡配置文件為例,也就是咱們視頻中的”/etc/sysconfig/network-scripts/ifcfg-enp0s3″。 * TYPE\=Ethernet # 網卡類型:為以太網 * PROXY\_METHOD\=none # 代理方式:關閉狀態 * BROWSER\_ONLY\=no # 只是瀏覽器:否 * BOOTPROTO\=dhcp # 網卡的引導協議:DHCP\[中文名稱: 動態主機配置協議\] * DEFROUTE\=yes # 默認路由 * IPV4\_FAILURE\_FATAL\=no # 是不開啟IPV4致命錯誤檢測:否 * IPV6INIT\=yes # IPV6是否自動初始化: 是\[不會有任何影響, 現在還沒用到IPV6\] * IPV6\_AUTOCONF\=yes # IPV6是否自動配置:是\[不會有任何影響, 現在還沒用到IPV6\] * IPV6\_DEFROUTE\=yes # IPV6是否可以為默認路由:是\[不會有任何影響, 現在還沒用到IPV6\] * IPV6\_FAILURE\_FATAL\=no # 是不開啟IPV6致命錯誤檢測:否 * IPV6\_ADDR\_GEN\_MODE\=stable-privacy # IPV6地址生成模型:stable-privacy \[這只一種生成IPV6的策略\] * NAME\=ens33 # 網卡物理設備名稱 * UUID\=f47bde51-fa78-4f79-b68f-d5dd90cfc698 # 通用唯一識別碼, 每一個網卡都會有, 不能重復, 否兩臺linux只有一臺網卡可用 * DEVICE\=ens33 # 網卡設備名稱, 必須和 'NAME' 值一樣 * ONBOOT\=no # 是否開機啟動, 要想網卡開機就啟動或通過 'systemctl restart network' 以及 ip 命令啟動網卡,必須設置為 'yes' 可以在這個[NetworkManager文檔](https://developer.gnome.org/NetworkManager/stable/nm-settings-ifcfg-rh.html#id-1.2.9.7.17)上查看更多網卡配置參數。 #### 2\. 設置固定IP地址 前面幾節課的內容,我們一直使用**DHCP (Dynamic Host Configuration Protocol 即動態主機配置協議)**來獲取 IP 地址,這樣的好處是配置非常簡單,我們只需要修改網卡配置文件中的 ONBOOT 參數為 yes 即可,但是缺點就是每次我們重啟網絡之后地址可能就變了,必須重新登錄上虛擬機查看 IP 地址之后,才能通過咱們的 ssh 工具進行遠程連接,而如果是在生產環境中,一般服務器都在機房里,甚至在異地,每次去機房查看服務器 IP 地址這就顯得非常不合時宜了,所以,我們必須給主機設置一個靜態 IP 地址。 設置靜態(固定)IP地址其實也很簡單,我們只需要修改以及添加幾個參數就可以了。 **2.1 需要修改的參數** * 將 BOOTPROTO=dhcp 修改為 BOOTPROTO=static,即指定地址分配協議,是通過動態獲取還是靜態指定。 需要修改的參數就這一個,但是這里需要說明的一點是,有些情況下,我們可能會看到 BOOTPROTO=no 或者配置文件中沒有這個參數,也是相當于 BOOTPROTO=static ,所以我們其實也可以將這個參數刪除或者修改為 BOOTPROTO=no ,只是“顯得”不夠標準而已。 **2.2 需要添加的參數** 我們只需要添加三個參數即可,分別是 IPADDR、GATEWAY、PREFIX 用于指定 IP 地址、網關、掩碼位數,當然我們有時候可能需要添加 DNS1(注意不是 DNS) 參數,但是官方并不建議這么使用,下面我們會給出標準的解決方案。 **字節教育-竹筍老師**溫馨提示: 可能有些學員現在還不太明白什么是 IP 地址、網關、掩碼位數,這個等我們后面學習到 Linux 網絡技術時再跟大家去深入講解,因為 Linux 網絡功能非常強大,也比較難以理解,現在就去接觸這塊內容,很可能會影響到零基礎童鞋們的自信心,所以我們先帶著大家再熟悉下 Linux 的感覺,再積累一些“能量值”。下面老師就告訴大家如何去查看 IP地址、網關以及網絡掩碼。 **IP 地址**,如果我們不知道哪些IP地址是可用的,那么最簡單的方法就是先通過 DHCP 獲得可以使用的地址,然后把這個地址記下來。還記得怎么看嗎,利用 ip 命令,如下: * \[root@byte-edu-lab2 ~\]# ip addr show enp0s3 * 2: enp0s3: mtu 1500 qdisc pfifo\_fast state UP group default qlen 1000 * link/ether 08:00:27:88:01:70 brd ff:ff:ff:ff:ff:ff * inet 192.168.48.48/24 brd 192.168.48.255 scope global noprefixroute enp0s3 * valid\_lft forever preferred\_lft forever * inet6 fe80::5f4d:62cd:a789:64e6/64 scope link noprefixroute * valid\_lft forever preferred\_lft forever 我們可以看到“inet 192.168.48.48/24” ,其中 192.168.48.48 就是 IP 地址,而后面的 24 就是**掩碼位數**(或者說掩碼長度,都是一個意思),也就是 PREFIX 參數需要制定的。 通過上面的一條嗎命令,我們就知道了網絡IP地址和掩碼長度,那么現在還差一個網關參數,網關可以通過下面這個命令獲取: * \[root@byte-edu-lab2 ~\]# ip route show * default via 192.168.48.1 dev enp0s3 proto static metric 100 * 192.168.48.0/24 dev enp0s3 proto kernel scope link src 192.168.48.48 metric 100 看到 “default via 192.168.48.1” 這段信息了嗎(找到 default 字段),這個地址就是默認的**網關地址**,當然我們上面的這些操作都是在 DHCP 的方式下獲取的,那么現在我們就可以通過這些參數和數值將咱們的 IP 地址固定起來,也就是配置靜態IP地址。 **注意:一臺服務器上可以有多個網卡,但是只能有一個默認網關,也就是說當你在某個網卡中指定 DEFROUTE 時,其他網卡都不可用再設置這個參數,切記!切記!切記!** **字節教育-竹筍老師**溫馨提示: 上面的做法其實并不是很嚴謹,因為在一些復雜的網絡模型下,很可能默認路由并不是咱們當前IP地址首先使用的路由,比如下面這種: \# ip route show default via 192.168.48.1 dev enp0s3 proto static metric 100 172.20.0.0/16 via 172.20.32.5 dev enp0s3 scope link 172.20.0.0/16 dev enp0s3 proto kernel scope link src 172.20.32.5 192.168.48.0/24 dev enp0s3 proto kernel scope link src 192.168.48.48 metric 100 那么當我請求的地址是 172.20.0.0/16 網段內的,就會使用 172.20.32.5 地址請求,而不再走默認路由。但是前期我們不考慮這么復雜的情況,大家知道下就可以了,我們的認知是隨著知識的積累而逐漸提升的。 **2.3 靜態配置參數** 那么現在咱們來看下完整的靜態地址配置配置參數: * \[root@byte-edu-lab2 ~\]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 * TYPE\=Ethernet * PROXY\_METHOD\=none * BROWSER\_ONLY\=no * \# 注意 BOOTPROTO 的值修改為 static * BOOTPROTO\=static * DEFROUTE\=yes * IPV4\_FAILURE\_FATAL\=no * IPV6INIT\=yes * IPV6\_AUTOCONF\=yes * IPV6\_DEFROUTE\=yes * IPV6\_FAILURE\_FATAL\=no * IPV6\_ADDR\_GEN\_MODE\=stable-privacy * NAME\=enp0s3 * UUID\=06713c0b-b0d9-469e-92c8-e4411656ec1b * DEVICE\=enp0s3 * ONBOOT\=yes * \# 下面是新增的三個參數 * IPADDR\=192.168.48.48 * PREFIX\=24 * GATEWAY\=192.168.48.1 重啟網絡,再來看看咱們的地址信息: * \# 查看 enp0s3 地址信息 * \[root@byte-edu-lab2 ~\]# ip addr show enp0s3 * 2: enp0s3: mtu 1500 qdisc pfifo\_fast state UP group default qlen 1000 * link/ether 08:00:27:88:01:70 brd ff:ff:ff:ff:ff:ff * inet 192.168.48.48/24 brd 192.168.48.255 scope global noprefixroute enp0s3 * valid\_lft forever preferred\_lft forever * inet6 fe80::5f4d:62cd:a789:64e6/64 scope link noprefixroute * valid\_lft forever preferred\_lft forever * \# 檢查到網關 192.168.48.1 之間網絡是否通暢 * \[root@byte-edu-lab2 ~\]# ping 192.168.48.1 * PING 192.168.48.1 (192.168.48.1) 56(84) bytes of data. * 64 bytes from 192.168.48.1: icmp\_seq=1 ttl=64 time=3.08 ms * 64 bytes from 192.168.48.1: icmp\_seq=2 ttl=64 time=6.64 ms 現在已經是我們指定的 192.168.48.48 地址,而且到網關之間網絡暢通,至此我們的靜態IP地址配置就算結束了吧?可能還沒有,我們現在去檢查下到外網是否通暢,如下: * \# 就去 ping 下百度的域名吧 * \[root@byte-edu-lab2 ~\]# ping baidu.com * ping: baidu.com: 未知的名稱或服務 這里有個錯誤提示 “baidu.com: 未知的名稱或服務” ,這是什么意思呢?就是咱們的主機不知道 baidu.com 是誰,也就是不知道他的 IP 是什么,我們之前說過,域名或者主機名其實是為了咱們好記,但是在互聯網中真正通信的時候使用的還是 IP地址,那如何才能知道 baidu.com 的地址是誰呢?需要通過 DNS 進行域名解析來獲取域名的 IP地址,這里就涉及到 Linux 的域名解析文件 “/etc/resolv.conf”,我們只需在這個文件中指定使用哪個 DNS 地址進行域名解析就可以了。 “/etc/resolv.conf”文件中使用 nameserver 指定 DNS 地址,我們就使用非常有名的谷歌免費 DNS 地址– 8.8.8.8,配置如下: * \[root@byte-edu-lab2 ~\]# vim /etc/resolv.conf * \# Generated by NetworkManager * nameserver 8.8.8.8 此時再來檢查下到 baidu.com 網絡情況, * \[root@byte-edu-lab2 ~\]# ping -c 4 baidu.com # 注意這里加了 -c 參數,是限定 ping 發送四個數據包就結束,而不會一直發下去 * PING baidu.com (123.125.114.144) 56(84) bytes of data. * 64 bytes from 123.125.114.144 (123.125.114.144): icmp\_seq=1 ttl=50 time=10.7 ms * 64 bytes from 123.125.114.144 (123.125.114.144): icmp\_seq=2 ttl=50 time=12.3 ms * 64 bytes from 123.125.114.144 (123.125.114.144): icmp\_seq=3 ttl=50 time=12.0 ms * 64 bytes from 123.125.114.144 (123.125.114.144): icmp\_seq=4 ttl=50 time=17.1 ms * \--- baidu.com ping statistics --- * 4 packets transmitted, 4 received, 0% packet loss, time 3007ms * rtt min/avg/max/mdev = 10.773/13.068/17.132/2.421 ms 此時到外網(baidu.com就是外網)地址已經通了,證明咱們的配置已經沒有問題了。 #### 3\. 知識技能引申 還記得咱們上面說過,靜態網絡配置參數有個可加可不加**DNS1(DNS1 是指首選 DNS,所以你還可以配置 DNS2、DNS3 參數****)**參數嗎,這個參數的作用是什么呢?其實也是用來指定主機的 DNS 解析地址的,比如現在我們加上這個參數,部分配置如下: * IPADDR\=192.168.48.48 * PREFIX\=24 * GATEWAY\=192.168.48.1 * DNS1\=114.114.114.114 注意:114.114.114.114 是國內非常有名的免費 DNS ,國內用戶用的還是非常多的。 現在我們重啟下網絡,再來看看到百度是否通暢。 * \# 修改完網卡信息重啟網絡服務以使配置生效 * \[root@byte-edu-lab2 ~\]# systemctl restart network * \# 檢查到 百度 的網絡連通性 * \[root@byte-edu-lab2 ~\]# ping -c 4 baidu.com * PING baidu.com (220.181.57.216) 56(84) bytes of data. * 64 bytes from 220.181.57.216 (220.181.57.216): icmp\_seq=1 ttl=50 time=8.59 ms * 64 bytes from 220.181.57.216 (220.181.57.216): icmp\_seq=2 ttl=50 time=8.12 ms * 64 bytes from 220.181.57.216 (220.181.57.216): icmp\_seq=3 ttl=50 time=10.5 ms * 64 bytes from 220.181.57.216 (220.181.57.216): icmp\_seq=4 ttl=50 time=8.26 ms * \--- baidu.com ping statistics --- * 4 packets transmitted, 4 received, 0% packet loss, time 3022ms * rtt min/avg/max/mdev = 8.126/8.885/10.558/0.984 ms * \# 再次看下服務器上的域名解析文件,發現已經被修改為網卡中配置的 114.114.114.114 * \[root@byte-edu-lab2 ~\]# cat /etc/resolv.conf * \# Generated by NetworkManager * nameserver 114.114.114.114 我們看到之前配置的 DNS 已經被網卡配置文件中的 DNS1條目給覆蓋重寫了,為什么會重寫呢?這個問題咱們稍后回答,我們現在先把 /etc/resolv.conf 中的 DNS 刪除掉,再看看能否解析域名。 * \[root@byte-edu-lab2 ~\]# cat /etc/resolv.conf * \# Generated by NetworkManager * \[root@byte-edu-lab2 ~\]# ping baidu.com * ping: baidu.com: 未知的名稱或服務 發現刪除之后,我不用重啟網絡,也已經不能 ping 通 baidu.com 了,基于此我們可以得出下面的結論: 1. 網卡配置文件中寫入 DNS 配置信息,會在網絡重啟時覆蓋 /etc/resolv.conf 配置 2. /etc/resolv.conf 配置是實時生效的,不需要重啟網絡 3. Linux 主機之所以能夠解析域名,是因為 /etc/resolv.conf (也僅與這個文件有關) 配有 nameserver,跟網卡中是否配置 DNS 無關,而我們上面的示例中之所以配置了網卡文件中的 DNS 條目,重啟后主機就可以解析baidu.com,其實是因為 NetworkManager 服務將這個 DNS1 信息寫入到 /etc/resolv.conf 中了。 4. 如果網卡配置文件中和 /etc/resolv.conf 文件中都配置了 DNS 信息,毫無疑問,以 /etc/resolv.conf 配置文件中指定的 DNS 為準。 那下面我們來回答另外一個問題,網卡配置文件中的 DNS(實例中是 DNS1,我這里統稱 DNS 條目) 條目,為什么會覆蓋 /etc/resolv.conf 文件,如果覆蓋會有什么缺點,該如何取消這種“覆蓋操作”呢? #### 4\. 關于 Linux 上的 DNS 配置問題 **4.1 為什么會覆蓋 /etc/resolv.conf 文件** 從 RHEL7 系列開始,網絡管理默認使用 NetworkManager,但是系統上允許 network 和 NetworkManager 兩個網絡管理服務同時存在,前置是 RHEL6 及之前的默認網絡管理服務,7系列使用了這么一個比較操蛋的管理工具。我們在 /etc/resolv.conf 中看到有這么一句信息 “# Generated by NetworkManager” ,也就是這個服務負責網絡管理和 DNS 管理,就是他把網卡中的 DNS 信息同步到這個配置文件中,這就回答了為什么會覆蓋 /etc/resolv.conf 文件,因為他自認為自己特別機智的幫你配置好 DNS 了。 **4.2 使用網卡中的 DNS 覆蓋 /etc/resolv.conf 配置文件的缺點** 我們確實可以通過在網卡配置文件中指定 DNS 信息來覆蓋**/etc/resolv.conf**的方式完成 DNS 配置,但是這在生產環境上存在極大的隱患。比如你在北京的服務器上配置了北京的某個 DNS 地址,重啟網絡之后寫入到 /etc/resolv.conf 配置文件中,進行域名解析。但是,突然有一天這個 DNS 不能使用了(地區性的DNS確實經常性的故障,所以還是使用比較有知名度的 DNS),那么你的服務器就不能再解析域名,造成業務中斷,這中故障屬于情理之中。于是你們進行了修復,直接修改 /etc/resolv.conf? 中 nameserver 的值,改成可用的 DNS 地址,不需要進行網絡重啟,就可以立即生效,這是正常的故障解除操作。但是你們的網卡配置文件中仍然使用的是不能使用的 DNS 地址,什么時候重啟網絡,故障就會在什么時候產生,這就屬于人為故障了。那可能有的同學就會說,我直接修改網卡中的配置文件不就行了?首先這樣配置需要重啟網絡,耽誤了修復時間不說,還可能會造成網卡上的配置信息丟失;其次,這樣配置那么下次 DNS 失效時依然存在同樣的安全隱患。所以,最好的方式,就是“做好分內的事”,網卡配置文件就是用來設定網卡信息的,/etc/resolv.conf 文件就是用來配置Linux 域名解析相關的。 **4.3 如何取消這種覆蓋操作呢?** 首先需要知道這種覆蓋操作的罪魁禍首是誰,我們知道網絡管理服務可以是 network 也可以是 NetworkManager ,怎么看呢?可以使用 systemctl status netwok 或者 systemctl status NetwokManager ,誰的狀態是**active**,就是誰在管理網絡,當然了在 CentOS7 上,可以兩個同時都是**active?**,下面我就告訴大家怎么去取消這種覆蓋操作。 很多網絡上的文章說 CentOS6 或者 CentOS7 如何取消對 /etc/resolv.conf 的覆蓋操作,其實是非常不嚴謹的,如何取消是針對使用哪種網絡服務,而不是系統版本。 * **當是 network 進行網絡管理時** 在網卡配置文件中添加一行 “PEERDNS=no” 即可。 * **當是 NetworkManager 進行網絡管理時** 修改 /etc/NetworkManager/NetworkManager.conf 配置文件,將 \[main\]字段下加上 “dns=none” 或者 “dns=no” ,然后重啟網絡即可:? systemctl restart NetworkManager 。 * **如何兩個都是 active 狀態時** 上面的操作都做上就可以了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看