實戰做業4,實驗環境下Linux主機之間實現跨網段通訊

更多內容請點擊:linux

Linux學習從入門到打死也不放棄,徹底筆記整理(持續更新,求收藏,求點贊~~~~) 
vim

https://blog.51cto.com/13683480/2095439centos


實驗目標:網絡

        用vmware多臺虛擬機模擬,實現主機間的跨網段通訊(相互之間能ping通)。ide

實驗要求:學習

        主機A 和 主機B 之間實現通訊,中間至少跨越3個路由器(linux主機模擬路由器)測試

準備工做:centos7

        至少5臺虛擬機。spa

        因爲自己只安裝了centos6.9,centos7.4,redhat5.4 三臺虛擬機,因此臨時克隆了另外兩臺centos6,接下來將會以rest

        centos6充當主機A,centos7充當主機B

        redhate5和另外兩臺克隆機將分別命名R1,R2,R3,充當臨時路由器

地址規劃:
       因爲要求實現主機間的跨網段通訊,因此須要將不一樣的終端配置不一樣網段的地址,

        A: 192.168.6.45/24        
        B: 172.20.7.100/16
        R1    eth0:192.168.6.1/24    eth1: 10.6.0.1/16
        R2    eth0: 10.6.0.2/16        eth1: 10.0.0.1/8
        R3    eht0: 10.0.0.2/8        eht1: 172.20.0.1/16   


實現過程:


        1.    大體流程圖

    3.png

        2.    按照須要給不一樣主機加配網卡   

            充當路由使用的R1,R2,R3主機加配一塊網卡,主機A 和主機B 有一塊可用網卡便可

      4.png

      

        3.    開啓虛擬機並登錄

            爲了查看方便,分別修改一下redhat5和兩臺克隆centos6的主機名爲R1,R2,R3

            因爲是臨時修改,因此使用hostname命令直接修改,並且從新登陸便可,如圖,3臺主機重複執行便可

            5.png

            6.png

           

            須要注意的是,當在R2和R3上經過ifconfig命令查看的時候,發現此地沒有eth0的網卡,而直接是 eth1 和eth2

    

            這是因爲R2和R3並不是正常安裝的虛擬機,而是經過克隆而來的

            

            9.png


       

        4.    CentOS 6修改網卡名稱:                         

         

                固然,名稱的不一樣使用起來並無什麼區別,可是咱們已經不想去修改已經規劃好的流程圖了,因此這裏咱們直接修改網卡名稱


                centos6環境下,使用cd命令進入/etc/udev/rules.d/目錄下,能夠查看到:

                10.png

               

                 其中70-persistent-net.rules就是網卡名稱的配置文件

              

                固然,也可使用  vim   /etc/udev/rules.d/70-persistent -net.rules    命令直接打開


                11.png

            

                如圖,直接刪除第一行,將最後一行的eth2 改爲 eth0 ,保存退出


               修改不會當即生效,使用ethtool -i  命令查看網卡使用的驅動,發現都是e1000


               12.png


                  使用modprobe -r e1000 卸載網卡驅動

             

                  在使用modprobe e1000 啓用網卡驅動,使用ifconfig命令,能夠看見網卡名稱已經修改:


                接着在R3上重複相同的操做便可


                13.png

          

       5.    配置IP地址        

                固然,咱們能夠經過ifconfig eth0 直接配置IP地址,好比

                19.png


                可是這種狀況下只要一重啓,地址就會丟失,因此,這裏咱們經過修改配置文件的方式來修改地址

                

                使用cd /etc/sysconfig/network-scripts

                

                能夠查看到此目錄下有ifcfg-eth0的文件


                20.png

               

                使用vim ifcfg-eth0打開此文件

                21.png

               

                咱們能夠看到此文件包含的的內容,幾乎全是變量賦值,其餘選項暫時不去關注,咱們如今須要作的是把

                BOOTPROTO=這一項默認的值是dhcp,須要改爲 static 或者 none,

                以後就能夠添加IP地址了:

                對於A主機而言,添上兩行就能夠了:

                IPADDR=192.168.6.45

                NETMASK=255.255.255.0     這一項也能夠寫成 PREFIX=24,效果同樣

                保存退出,使用

                service network restart 重讀配置文件

                接着使用ifconfig查看,地址已經修改爲功了

                23.png

                22.png

      

             一樣的操做修改R1,因爲redhat5.4的版本比較老,全部此文件中的內容會不同,一樣不去作過多關注,只修改咱們須要的幾項便可

                24.png

              

               並且因爲R1有兩張網卡,因此eth0 和eth1 須要分別配置,而後依然執行service network restart命令重啓網絡服務,能夠看到配置已經生效


                25.png

                

                值得注意的是,R2和R3主機,默認是沒有ifcfg-eth1 這個文件的,咱們是用cp命令直接將ifcfg-eth0複製一份,而後修改能夠

                

                26.png

                另外,對於R2和R3,仍是由於克隆的緣由,使用service network restart命令的時候會出現錯誤

                27.png

                            

                特別提醒,這是因爲NetworkManager 這個服務的緣由,這個服務在centos6上有衝突,會致使網卡沒法啓動

                使用service NetworkManager stop            命令能夠關閉此服務

                另外使用 chkconfig NetworkManager off    能夠禁止此服務開機啓動

                再次使用service network restart命令,網卡啓動成功,使用ifconfig命令成功得到地址

                29.png

                30.png

                

                同理在  R3 上作一樣修改。

                31.png

              

                最後是centos7,也就是A主機, 須要注意centos7上的默認第一塊網卡名稱爲ens33,且重啓網絡服務的命令爲:

                systemctl restart network

                其餘並無大的區別:

                32.png

      

        6.    添加路由

             到這裏地址配置的工做就完成了。

                可是此時A和B兩臺主機之間是沒法通訊的,好比咱們在A主機上ping B主機

                17.png

                

                爲了主機A和主機B 之間通訊,必須配置路由,這是本次實驗最重要的一環。咱們在查看一下流程圖和規劃配置

                3.png

              

                A: 192.168.6.45/24        
                B: 172.20.7.100/16
                R1    eth0:192.168.6.1/24    eth1: 10.6.0.1/16
                R2    eth0: 10.6.0.2/16        eth1: 10.0.0.1/8
                R3    eht0: 10.0.0.2/8        eht1: 172.20.0.1/16


    主機A路由配置:

                仍是從A主機開始,因爲規劃的網絡環境相對簡單,A主機只與R1相連,所以在這裏咱們只須要添加一條路由就能夠了,不論是主機路由,網絡路由,默認路由均可以,可是使用的網關必須是R1路由器的eth0

                

                使用route add -host 172.20.7.100 gw 192.168.6.1 添加主機路由

                另外使用route add default gw 192.168.6.1 添加一條默認路由


                18.png


     R1  路由配置

                接下來,對於R1,因爲R1和主機A在同一網段,因此不須要添加主機A路由,只須要添加主機B 或者網段4的路由記錄便可,可是考慮到實際狀況,網段3上也可能出現相連的主機,因此在此咱們把網段3的路由也添加上


                使用:   route add -net 172.20.0.0/16 gw 10.6.0.2    添加網段4 路由記錄    下一跳記錄指向R2的eth0端口

                             route add -net 10.0.0.0/8    gw  10.6.0.2       添加網段3路由記錄    下一跳記錄指向R2的eth0端口

                

                33.png     


     R2    路由配置

                同理    R2 因爲和網段二、網段3直接相連,因此只須要對應添加網段1 和網段4 的路由記錄便可, 

                使用 :    route add -net 192.168.6.0/24  gw 10.6.0.1    添加網段1路由記錄,下一跳記錄指向R1的eth1端口

                               route add -net 172.20.0.0/16    gw 10.0.0.2    添加網段4路由記錄,下一跳記錄指向R3的eth0端口

                34.png


    R3     路由配置

                因爲R3與網段三、網段4直接相連,因此須要添加網段1和網段2的路由記錄

                使用:    route add -net 192.168.6.0/24 gw 10.0.0.1    添加網段1路由記錄,下一跳指向R2的eth1端口

                              route add -net 10.6.0.0/16  gw 10.0.0.1         添加網段2路由記錄,下一跳指向R2的eth1端口

                

                35.png


    主機B 路由配置

                因爲B只有與R3相連這一條網絡出口,因此只須要添加一條默認路由便可,這裏咱們同時也加上一條到主機A的主機路由

                這裏須要注意,對於centos7而言,若是在ifcfg-ens33配置靜態地址的時候,若是不加上

                GATEWAY=*.*.*.*

                將沒法配置默認路由,而若是加上這一行,使用 systemctl restart network重啓網絡服務的時候會自動添加一條默認路由

                 因此這裏咱們只須要將配置文件網關(GATEWAY)=172.20.0.1     同時使用route add -host 192.168.6.45 gw 172.20.0.1    添加主機A的主機路由便可

                 37.png


    7.    鏈接測試

              首先,直接在A主機上對主機B的IP地址使用ping命令

                38.png


                很遺憾,第一次測試失敗,緣由就是,linux默認不支持直接當作路由器使用,即,linux主機能夠接受到數據,可是若是數據的目標地址不是本身的話,會直接丟棄而不會轉發出去

            

                這裏咱們須要對R1,R2,R3這三臺充當臨時路由器的主機進行配置

    

                使用 echo 1 > /proc/sys/net/ipv4/ip_forward 命令能夠開啓核心路由轉發功能,對於目標地址非本機的數據,不會拋棄,而是根據路由地址進行轉發。

                39.png

                40.png

                42.png


                配置完成以後再次嘗試在A主機上ping 主機B的ip地址 172.20.7.100,結果發現仍是不通


                102.png

   

                注意此時的報錯提示:Destination Host Prohibited ,目標主機禁止

    

                這種狀況通常是因爲防火牆的緣由            

    

                爲了方便測試,使用 service iptables stop 命令分別關閉主機A,R1,R2,R3的防火牆功能

                

                對於B主機,因爲是centos7系統,須要使用 systemctl stop firewalld 命令關閉防火牆

    

                再次測試:

        

                101.png


                能夠看到結果已經OK,主機A(Centos6) 和主機B (centos7)通過4個網段,中間跨過3次路由器(R1,R2,R3)實現了通訊功能。


        8.   小結

            

                雖然只是一個小小的實驗,但在實現的工程中也並非順風順水,一步到位的。中間出現了不少問題。


                好比網卡名稱修改以後一直沒法啓動,緣由是centos6系統 NetworkManager服務不是很支持。

            

                還有centos7添加默認路由一直不成功,緣由是沒有添加默認網關


                還有就是最最最讓我頭疼的,一度困擾了好久的問題就是:    Destination Host Prohibited,就是這個報錯,這裏我反覆檢查了N次路由配置,甚至重啓重來,最後更換路由主機,都沒有解決問題。


                最後卻發現問題出在防火牆上,本來很簡單的一條命令就能解決的問題,卻困擾了我最久。 我覺得我知道的,卻仍是忽略了。


                事實上無論作什麼事情都是這樣,你覺得你會的,不必定是真正掌握的。


                送給你一句話,也是馬永亮馬哥反覆強調的:


                只有通過不斷反覆的練習和實踐,知識才能變成真正有用的技能。

相關文章
相關標籤/搜索