更多內容請點擊: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. 大體流程圖
2. 按照須要給不一樣主機加配網卡
充當路由使用的R1,R2,R3主機加配一塊網卡,主機A 和主機B 有一塊可用網卡便可
3. 開啓虛擬機並登錄
爲了查看方便,分別修改一下redhat5和兩臺克隆centos6的主機名爲R1,R2,R3
因爲是臨時修改,因此使用hostname命令直接修改,並且從新登陸便可,如圖,3臺主機重複執行便可
須要注意的是,當在R2和R3上經過ifconfig命令查看的時候,發現此地沒有eth0的網卡,而直接是 eth1 和eth2
這是因爲R2和R3並不是正常安裝的虛擬機,而是經過克隆而來的
4. CentOS 6修改網卡名稱:
固然,名稱的不一樣使用起來並無什麼區別,可是咱們已經不想去修改已經規劃好的流程圖了,因此這裏咱們直接修改網卡名稱
centos6環境下,使用cd命令進入/etc/udev/rules.d/目錄下,能夠查看到:
其中70-persistent-net.rules就是網卡名稱的配置文件
固然,也可使用 vim /etc/udev/rules.d/70-persistent -net.rules 命令直接打開
如圖,直接刪除第一行,將最後一行的eth2 改爲 eth0 ,保存退出
修改不會當即生效,使用ethtool -i 命令查看網卡使用的驅動,發現都是e1000
使用modprobe -r e1000 卸載網卡驅動
在使用modprobe e1000 啓用網卡驅動,使用ifconfig命令,能夠看見網卡名稱已經修改:
接着在R3上重複相同的操做便可
5. 配置IP地址
固然,咱們能夠經過ifconfig eth0 直接配置IP地址,好比
可是這種狀況下只要一重啓,地址就會丟失,因此,這裏咱們經過修改配置文件的方式來修改地址
使用cd /etc/sysconfig/network-scripts
能夠查看到此目錄下有ifcfg-eth0的文件
使用vim ifcfg-eth0打開此文件
咱們能夠看到此文件包含的的內容,幾乎全是變量賦值,其餘選項暫時不去關注,咱們如今須要作的是把
BOOTPROTO=這一項默認的值是dhcp,須要改爲 static 或者 none,
以後就能夠添加IP地址了:
對於A主機而言,添上兩行就能夠了:
IPADDR=192.168.6.45
NETMASK=255.255.255.0 這一項也能夠寫成 PREFIX=24,效果同樣
保存退出,使用
service network restart 重讀配置文件
接着使用ifconfig查看,地址已經修改爲功了
一樣的操做修改R1,因爲redhat5.4的版本比較老,全部此文件中的內容會不同,一樣不去作過多關注,只修改咱們須要的幾項便可
並且因爲R1有兩張網卡,因此eth0 和eth1 須要分別配置,而後依然執行service network restart命令重啓網絡服務,能夠看到配置已經生效
值得注意的是,R2和R3主機,默認是沒有ifcfg-eth1 這個文件的,咱們是用cp命令直接將ifcfg-eth0複製一份,而後修改能夠
另外,對於R2和R3,仍是由於克隆的緣由,使用service network restart命令的時候會出現錯誤
特別提醒,這是因爲NetworkManager 這個服務的緣由,這個服務在centos6上有衝突,會致使網卡沒法啓動
使用service NetworkManager stop 命令能夠關閉此服務
另外使用 chkconfig NetworkManager off 能夠禁止此服務開機啓動
再次使用service network restart命令,網卡啓動成功,使用ifconfig命令成功得到地址
同理在 R3 上作一樣修改。
最後是centos7,也就是A主機, 須要注意centos7上的默認第一塊網卡名稱爲ens33,且重啓網絡服務的命令爲:
systemctl restart network
其餘並無大的區別:
6. 添加路由
到這裏地址配置的工做就完成了。
可是此時A和B兩臺主機之間是沒法通訊的,好比咱們在A主機上ping B主機
爲了主機A和主機B 之間通訊,必須配置路由,這是本次實驗最重要的一環。咱們在查看一下流程圖和規劃配置
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 添加一條默認路由
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端口
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端口
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端口
主機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的主機路由便可
7. 鏈接測試
首先,直接在A主機上對主機B的IP地址使用ping命令
很遺憾,第一次測試失敗,緣由就是,linux默認不支持直接當作路由器使用,即,linux主機能夠接受到數據,可是若是數據的目標地址不是本身的話,會直接丟棄而不會轉發出去
這裏咱們須要對R1,R2,R3這三臺充當臨時路由器的主機進行配置
使用 echo 1 > /proc/sys/net/ipv4/ip_forward 命令能夠開啓核心路由轉發功能,對於目標地址非本機的數據,不會拋棄,而是根據路由地址進行轉發。
配置完成以後再次嘗試在A主機上ping 主機B的ip地址 172.20.7.100,結果發現仍是不通
注意此時的報錯提示:Destination Host Prohibited ,目標主機禁止
這種狀況通常是因爲防火牆的緣由
爲了方便測試,使用 service iptables stop 命令分別關閉主機A,R1,R2,R3的防火牆功能
對於B主機,因爲是centos7系統,須要使用 systemctl stop firewalld 命令關閉防火牆
再次測試:
能夠看到結果已經OK,主機A(Centos6) 和主機B (centos7)通過4個網段,中間跨過3次路由器(R1,R2,R3)實現了通訊功能。
8. 小結
雖然只是一個小小的實驗,但在實現的工程中也並非順風順水,一步到位的。中間出現了不少問題。
好比網卡名稱修改以後一直沒法啓動,緣由是centos6系統 NetworkManager服務不是很支持。
還有centos7添加默認路由一直不成功,緣由是沒有添加默認網關
還有就是最最最讓我頭疼的,一度困擾了好久的問題就是: Destination Host Prohibited,就是這個報錯,這裏我反覆檢查了N次路由配置,甚至重啓重來,最後更換路由主機,都沒有解決問題。
最後卻發現問題出在防火牆上,本來很簡單的一條命令就能解決的問題,卻困擾了我最久。 我覺得我知道的,卻仍是忽略了。
事實上無論作什麼事情都是這樣,你覺得你會的,不必定是真正掌握的。
送給你一句話,也是馬永亮馬哥反覆強調的:
只有通過不斷反覆的練習和實踐,知識才能變成真正有用的技能。