我有一个如下的内部网络:
- 用作路由器的 Linux 系统,使用 iptables,有两张网卡
- 客户端计算机
- DHCP 服务器
路由器的 eth1 与客户端在同一个局域网。
路由器的 eth2 与服务器在同一个局域网。
客户端 ↔ [eth1] 路由器 [eth2] ↔ DHCP 服务器
我已经设置客户端使用 DHCP,但是我无法使正确的 iptable 节工作(即在客户端和服务器之间转发 DHCP UDP 数据包。客户端提供:)An error occurred while renewing interface Local Area Connection 2 : unable to contact your DHCP server. Request has timed out.
。
这就是/etc/sysconfig/iptables
我现在所拥有的,#DHCP xxx注释是我正在尝试进行 DHCP 转发:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i eth2 -j ACCEPT
-A FORWARD -o eth1 -j ACCEPT
-A FORWARD -o eth2 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i eth1 -o eth2 -p tcp --dport 22 -j ACCEPT
-A FORWARD -i eth2 -o eth1 -p tcp --sport 22 -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i eth1 -o eth2 -p tcp --dport 80 -j ACCEPT
-A FORWARD -i eth2 -o eth1 -p tcp --sport 80 -j ACCEPT
-A FORWARD -i eth1 -o eth2 -p tcp --dport 53 -j ACCEPT
-A FORWARD -i eth2 -o eth1 -p tcp --dport 53 -j ACCEPT
-A FORWARD -i eth1 -o eth2 -p udp --dport 53 -j ACCEPT
-A FORWARD -i eth2 -o eth1 -p udp --dport 53 -j ACCEPT
# DHCP start
-A FORWARD -i eth1 -o eth2 -p udp --dport 67 -j ACCEPT
-A FORWARD -i eth2 -o eth1 -p udp --dport 67 -j ACCEPT
-A FORWARD -i eth1 -o eth2 -p udp --dport 68 -j ACCEPT
-A FORWARD -i eth2 -o eth1 -p udp --dport 68 -j ACCEPT
# DHCP end
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
您能否建议进行一些更改,以使客户端机器能够从 DHCP 服务器获取 IP 地址?
笔记:
- 路由器上的 IP 转发有效,因为我能够在客户端和服务器之间进行 ping 操作(反之亦然)。
- 路由器是CentOs,客户端和服务器是Windows。
答案1
DHCP 是一种无法转发的广播协议(另一个网络上没有目标 IP)。您需要的是 IP 助手显示给 DHCP 服务器(路由器必须充当 DHCP 中继代理,将广播转换为单播)。