![DHCP 客户端没有互联网,但可以 ping 通网关](https://linux22.com/image/147563/DHCP%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%B2%A1%E6%9C%89%E4%BA%92%E8%81%94%E7%BD%91%EF%BC%8C%E4%BD%86%E5%8F%AF%E4%BB%A5%20ping%20%E9%80%9A%E7%BD%91%E5%85%B3.png)
我有两个虚拟机(主机在 Windows 上):
- 一台 DHCP 服务器(Debian 上)
- 一个客户端(Debian 上)
问题是客户端收到IP地址,两台机器可以互相ping通,但客户端无法访问互联网。(ping 8.8.8.8 永远不会返回)
- 我的 DHCP 服务器通过“enp0s3”连接到互联网网络地址转换。
- 我的 DHCP 服务器已连接到仅主机通过“enp0s9”。
- 我的客户端已连接仅主机通过“enp0s3”。
我选择的网络类型是否错误?
ifconfig -a
在 DHCP 服务器上:
ifconfig -a && ip route show
在客户端:
我在 Debian 上停用了 Windows 的防火墙和 iptables --flush 。将来我想用插入以太网的真实机器替换虚拟机客户端。
我给我的客户一个 IP 地址、一个掩码、一个网关。我认为这是一个网关问题,但我不知道如何在客户端上访问互联网。
答案1
您需要启用 ip 转发并使用 iptables 将传出流量从 enp0s9 转发到 enp0s3
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT
# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! enp0s3 -j ACCEPT
iptables -A FORWARD -i enp0s3 -o enp0s9 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i enp0s9 -o enp0s3 -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
# Don't forward from the outside to the inside.
iptables -A FORWARD -i enp0s3 -o enp0s3 -j REJECT
# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward
来源:https://debian-administration.org/article/23/Setting_up_a_simple_Debian_gateway