我正在构build一个位于不同VLAN上的kickstartnetworking,使用它自己的DHCP服务器。 出于某种原因,我的kickstart客户端不断从我的主DHCP服务器分配IP。
我build立的方式是我在这台路由器上有一个主要的DHCP服务器:
192.168.15.1
连接到该DHCP服务器是IP为192.168.15.2的交换机。 我的kickstart(Scientific Linux)服务器连接到两个端口上的交换机:
端口2 – kickstart服务器通过eth0与生产networking的其余部分通信。 在该接口上分配给服务器的IP是192.168.15.100(在eth0上)。 细节是:
Interface: eth0 IP: 192.168.15.100 Netmask: 255.255.255.0 Gateway: 192.168.15.1
端口7 – 有它自己的VLAN ID(和端口8一起)。 kickstart服务器连接到IP为172.16.15.100的端口(在eth1上)。 再次,细节是:
Interface: eth1 IP: 172.16.15.100 Netmask: 255.255.255.0 Gateway: none
kickstart服务器运行自己的DHCP服务器,并通过eth1分配它们。 大多数启动都是通过端口8在kickstart VLAN上构build的。为防止kickstart DHCP服务器通过生产networking分配地址,我使用如下的路由设置:
route add -host 255.255.255.255 dev eth1
此时,客户端不断从192.168.15.1 DHCP服务器分配IP。 我需要找出阻止客户端请求到达该DHCP的方法。 需要注意的是,我也在kickstart服务器上构build了KVM主机,所以我需要这些KVM有能力通过桥接networking从192.168.15.1 DHCP服务器获得DHCP请求,一旦我解决了这个问题。 (目前,他们通过NAT进行通信)。
那么将如何解决这个问题呢? 通过iptables或某种路由我需要放在?
我试图限制在该接口上通过IPtables的请求,允许DHCP请求172.16.15.xnetworking:
-A INPUT -i eth1 -s 172.16.15.0/24 -p udp -m udp --dport 69 -j ACCEPT -A INPUT -i eth1 -s 172.16.15.0/24 -p tcp -m tcp --dport 69 -j ACCEPT -A INPUT -i eth1 -s 172.16.15.0/24 -p udp -m udp --dport 68 -j ACCEPT -A INPUT -i eth1 -s 172.16.15.0/24 -p tcp -m tcp --dport 68 -j ACCEPT -A INPUT -i eth1 -s 172.16.15.0/24 -p udp -m udp --dport 67 -j ACCEPT -A INPUT -i eth1 -s 172.16.15.0/24 -p tcp -m tcp --dport 67 -j ACCEPT
并拒绝来自192.168.15.xnetworking的eth1的分配:
-A FORWARD -o eth1 -s 192.168.15.0/24 -p udp -m udp --dport 69 -j REJECT -A FORWARD -o eth1 -s 192.168.15.0/24 -p tcp -m tcp --dport 69 -j REJECT -A FORWARD -o eth1 -s 192.168.15.0/24 -p udp -m udp --dport 68 -j REJECT -A FORWARD -o eth1 -s 192.168.15.0/24 -p tcp -m tcp --dport 68 -j REJECT -A FORWARD -o eth1 -s 192.168.15.0/24 -p udp -m udp --dport 67 -j REJECT -A FORWARD -o eth1 -s 192.168.15.0/24 -p tcp -m tcp --dport 67 -j REJECT
不。 🙁
好吧,我想通了 – 我没有untag默认的VLAN,这是从默认的VLAN导致stream量stream血到我的kickstart VLAN。
这已被修复。 DHCP分配不再在这些端口上工作,但至less我现在知道这个问题。 🙂
我很高兴你解决了你的VLAN问题,但你可能有兴趣知道你可以使用ebtables来过滤DHCPstream量。
例如,如果在Linux服务器上通过设备tap0桥接的两个不同LAN中有两台DHCP服务器,则可以将它们隔离,并通过运行仍然保持TCP / IP和ARP通信stream:
modprobe ebtables && modprobe ebtable_filter && modprobe ebt_ip ebtables -A INPUT --in-interface tap0 \ --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP ebtables -A INPUT --in-interface tap0 \ --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 \ -j DROP ebtables -A FORWARD --in-interface tap0 \ --protocol ipv4 --ip-protocol udp --ip-destination-port 67:68 \ -j DROP ebtables -A FORWARD --in-interface tap0 \ --protocol ipv4 --ip-protocol udp --ip-source-port 67:68 -j DROP
在这个例子中,你应该在两端运行ebtables,以免浪费带宽,但只有一个可以解决DHCP问题。