我在 Vmware ESXi 6.5 中拥有多个虚拟机,具有 2 个网络组。
在 CentOs 上创建了具有 2 个网络接口的 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
具有 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 地址显示
inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic ens160
路由
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
通过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 Forward 并运行 NAT 可以解决问题...还有其他想法吗?谢谢
答案1
要检查你的 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 机器访问互联网,需要将 CentOS 配置为路由器,或者您需要在 192.168.0.x 网络上有另一个路由器。
quick n dirty - 在 CentOS 机器上:启用路由:
sysctl -w net.ipv4.ip_forward=1
为了使其在重启后仍然有效,编辑 /etc/sysctl.conf 并添加:
net.ipv4.ip_forward = 1
将 192.168.0.0/24 伪装(NAT)为‘外部’网络:
启用防火墙:
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 机器上的“外部”接口。
答案2
我遇到了类似的问题。Ubuntu 服务器 18.04
我的解决方案:NATing 的方法之一是使用 IPTABLES。
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
在哪里eth0是接口互联网/从。
iptables --append FORWARD --in-interface eth1 -j ACCEPT
在哪里eth1是连接到内部局域网.(DHCP 服务器接口)
现在你的客户端可以 ping 8.8.8.8
请查看此网站以获得更清晰的参考:
https://www.howtoforge.com/nat_iptables
或者这里是官方指南:https://help.ubuntu.com/community/Internet/ConnectionSharing