注意:我将运行 isc-dhcp-server 的服务器称为“DHCP-SERVER”,将连接到我的交换机的计算机称为“DHCP-Clients”
你好,我目前正在设置网络,但无法通过 DHCP 客户端共享互联网。我还在使用isc-dhcp 服务器 例如,我的 DHCP-SERVER 可以 ping google.com,使用 SSH 登录我的 dhcp-client。我的 DHCP-Client 可以 ping DHCP-Server,但不能执行其他任何操作。运行 ping google.com 时,输出如下
user@client1:~ $ ping google.com
ping: google.com: Temporary failure in name resolution
在这里,您可以找到 我的设置的绘图
DHCP服务器
接口:
- WLAN:wlp2s0,连接到我的 wifi 路由器,可以与世界互动(例如 ping google.com 工作)
- 以太网:enx0050b62184c1,连接到我的交换机,可以与交换机的有线客户端交互
isri@shuttle:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto enx0050b62184c1
iface enx0050b62184c1 inet static
address 10.0.2.1
#netmask 255.255.255.240
gateway 192.168.1.1
user@dhcp-server:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enx0050b62184c1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:b6:21:84:c1 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.1/8 brd 10.255.255.255 scope global enx0050b62184c1
valid_lft forever preferred_lft forever
inet6 fe80::250:b6ff:fe21:84c1/64 scope link
valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether b0:c0:90:92:c4:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.99/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp2s0
valid_lft 86329sec preferred_lft 86329sec
inet6 fe80::b2c0:90ff:fe92:c46b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
/etc/dhcp/dhcpd.conf
user@dhcp-server:~$ cat /etc/default/isc-dhcp-server
# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPDv4_PID=/var/run/dhcpd.pid
#DHCPDv6_PID=/var/run/dhcpd6.pid
# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="enx0050b62184c1"
#INTERFACESv6=""
dhcpd 配置文件
user@dhcp-server:~$ cat /etc/dhcp/dhcpd.conf
# dhcpd.conf
option domain-name "my-network";
# option domain-name-servers none;
# option domain-name-servers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
subnet 10.0.2.0 netmask 255.255.255.240 {
range 10.0.2.2 10.0.2.14;
option routers 10.0.2.1;
host client1 {
hardware ethernet b8:27:eb:d3:83:02;
fixed-address 10.0.2.6;
}
host client2 {
hardware ethernet b8:27:eb:1e:8f:9d;
fixed-address 10.0.2.5;
}
host client3 {
hardware ethernet b8:27:eb:bd:fc:16;
fixed-address 10.0.2.4;
}
}
到目前为止我尝试过的
我尝试在 DHCP 服务器上使用以下命令
iptables -t nat -A POSTROUTING -s 10.0.2.0/28 -j MASQUERADE
我还启用了 net.ipv4.ip_forward。
sysctl -w net.ipv4.ip_forward=1
在我的 /etc/network/interfaces 文件中,我还尝试将 192.168.1.1 替换为给定的 IP 192.168.1.99。
但什么都没起作用。知道为什么吗?
MeMow 的回答:我将“option domain-name-servers none;”更改为我的本地 DNS IP(由我的 ISP 提供的 IP)。现在,在 ping 网站时,我遇到了这个问题:
user@client1:~ $ ping google.com
PING google.com (142.250.74.238) 56(84) bytes of data.
From 10.0.2.1 (10.0.2.1) icmp_seq=1 Destination Host Unreachable
From 10.0.2.1 (10.0.2.1) icmp_seq=2 Destination Host Unreachable
From 10.0.2.1 (10.0.2.1) icmp_seq=3 Destination Host Unreachable
答案1
根据你的 ping 输出,你仍然有路由问题。很可能它没有正确启用。应该通过以下方式启用它
echo 1 > /proc/sys/net/ipv4/ip_forward
应添加下面一行/etc/sysctl.conf
以避免在重启后丢失浸渍。
net.ipv4.ip_forward = 1
另外,您的 iptables NAT 规则不包含目标。您需要指定目标或输出接口。
iptables -t nat -A POSTROUTING -s 10.0.2.0/28 -d 0/0 -j MASQUERADE
或者
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
确保规则在重启后不会丢失。通常,应使用以下命令将它们保存到文件中。Debian/Ubuntu:
iptables-save > /etc/iptables/rules.v4
RHEL/CentOS:
iptables-save > /etc/sysconfig/iptables
答案2
假设客户端可以访问互联网并且实际上可以 ping 外部 IP 地址,我猜测这是一个 DNS 问题。
我没有看到您的 DHCP 配置提供任何 DNS 服务?
应该有
选项域名服务器DNS_IP;
而不是没有