Ubuntu

DHCP 不共享 Internet 訪問

  • April 22, 2019

我在具有 2 個網路組的 Vmware ESXi 6.5 中有多個虛​​擬機。

在具有 2 個網路介面的 CentO 上創建了 DHCP 伺服器機器。

1 / vm 網路,它從中獲取一個網路並分配了 IP。

2 / 到所有具有 Internet 的機器都將在其中的 Internet 網路

  • 機器在介面 1 上獲取 Internet 並且它工作正常。我可以 ping8.8.8.8

  • 在文件中配置了一個簡單的 DHCP /etc/dhcp/dhcpd.conf,它正確地為“Internet”網路中的機器提供地址

  • 獲得 DHCP 地址的 Internet 子網中的機器可以相互 ping 並且完全沒有衝突

在 DHCP 機器 (CentOS) 上,我創建了另一個配置文件網路ens192,其中 IP
192.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 showinet 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.confby
echo "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 機器上的“外部”界面。

引用自:https://serverfault.com/questions/939783