DHCP 不共享 Internet 訪問
我在具有 2 個網路組的 Vmware ESXi 6.5 中有多個虛擬機。
在具有 2 個網路介面的 CentO 上創建了 DHCP 伺服器機器。
1 / vm 網路,它從中獲取一個網路並分配了 IP。
2 / 到所有具有 Internet 的機器都將在其中的 Internet 網路
機器在介面 1 上獲取 Internet 並且它工作正常。我可以 ping
8.8.8.8
等在文件中配置了一個簡單的 DHCP
/etc/dhcp/dhcpd.conf
,它正確地為“Internet”網路中的機器提供地址獲得 DHCP 地址的 Internet 子網中的機器可以相互 ping 並且完全沒有衝突
在 DHCP 機器 (CentOS) 上,我創建了另一個配置文件網路
ens192
,其中 IP192.168.0.1
、遮罩255.255.255.0
、沒有預設網關。在文件中**
dhcpd.conf
**(當然有選項域名)subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.1; //same as ens192 option subnet-mask 255.255.255.0; #option routers 192.168.0.254 //tried with .254 gw range 192.168.0.10 192.168.0.200; }
從 DHCP 機器,我可以 ping 到
8.8.8.8
另一台機器,該機器獲得了 DHCP 伺服器分配的 DHCP 地址。現在讓我們檢查一台分配有 DHCP 的機器。它的 Ubuntu 機器。分配地址:
192.168.0.46
。我可以ping每台機器,包括192.168.0.1
但不能8.8.8.8
。我不確定出了什麼問題。
編輯:
同時,我將 DHCP 伺服器配置更改為
192.168.1.1
和範圍192.168.1.10-.200
Ubuntu機器:
ip addr show
inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic ens160
ip路由
default via 192.168.1.1 dev ens160 proto static metric 100 192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.10 metric 100
CentOS 7.3 DHCP 機器:
所以在你的文章中看起來很正常。
我啟用了路由
sysctl -w net.ipv4.ip_forward=1
,將其添加到sysctl.d/ip_forward.conf
byecho "net.ipv4.ip_forward=1" >> /etc/sysctl.d/ip_forward.conf
我現在應該重新啟動某些服務嗎?
啟用防火牆:
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o ens192 -j MASQUERADE -s 192.168.1.0/24 success firewall-cmd --reload
在 Ubuntu 機器上重新啟動,然後
ping 8.8.8.8
:仍然沒有:15 packets transmitted, 0 received, 100% packet loss
我認為配置 IP 轉發和執行 NAT 可以解決問題……還有更多想法嗎?謝謝
要檢查您的 DHCP 配置是否良好,您可以使用以下命令檢查您的 ip 設置:
ip addr show
這將在客戶端機器介面上顯示目前配置的 IP 地址,從您的範例中顯示該地址正在工作 - 192.168.0.46
接下來您可以在客戶端機器上檢查預設網關是否設置正確:
ip route
這應該顯示如下:
default via 192.168.0.1 dev eth0 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.46
第一行表示預設網關,如果將其設置為 192.168.0.1,就 DHCP 配置而言您的黃金。
您需要檢查的最後一件事。你在 CentOS 機器上啟用了路由嗎?為了從您的 ubuntu 機器訪問 Internet,CentOS 需要配置為路由器,或者您需要在 192.168.0.x 網路上安裝另一個路由器。
quick n dirty - 在 CentOS 機器上:啟用路由:
sysctl -w net.ipv4.ip_forward=1
要在重新啟動後保持持久性,請編輯 /etc/sysctl.conf 並添加:
net.ipv4.ip_forward = 1
為“外部”網路偽裝(NAT)192.168.0.0/24:
啟用防火牆:
systemctl start firewalld firewall-cmd –permanent –direct –passthrough ipv4 -t nat -I POSTROUTING -o *** -j MASQUERADE -s 192.168.0.0/24 systemctl restart firewalld
*** 以上應該是您在 CentOS 機器上的“外部”界面。