首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >isc-dhcp在使用iptables时不允许发送数据包

isc-dhcp在使用iptables时不允许发送数据包
EN

Server Fault用户
提问于 2017-07-28 17:53:17
回答 1查看 937关注 0票数 0

我和iptables snat和isc dhcp有这个问题。情况就是这样:

我已经在我的网卡中配置了两个in。一级和二级

操作系统: Ubuntu 16.04

代码语言:javascript
复制
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:40:7a:08 brd ff:ff:ff:ff:ff:ff
    inet **10.232.208.228**/29 brd 10.232.208.231 scope global ens32
       valid_lft forever preferred_lft forever
    inet **10.232.208.229**/29 brd 10.232.208.231 scope global secondary ens32

当DHCP请求到达二级IP(10.232.208.229)时,ISC DHCP创建一个以主IP(10.232.208.228)为源的DHCP提供。我使用了以下iptable snat规则来解决这个问题:

代码语言:javascript
复制
iptables -t nat -A POSTROUTING -p udp -o ens32 -s 10.232.208.228 --sport 67:68 -j SNAT --to-source 10.232.208.229:67

问题是当我翻译到10.232.208.229:67时,没有发送DHCPOffer数据包。如果我将端口更改为67以外的任何端口,它就会正常工作。

以下是syslog上的日志,说明不允许操作:

代码语言:javascript
复制
Jul 28 11:46:31 dhcp777rsv2 dhcpd[32364]: DHCPDISCOVER from d0:67:e5:30:18:90 (MXXXX) via 172.16.199.1
Jul 28 11:46:32 dhcp777rsv2 dhcpd[32364]: DHCPOFFER on 172.16.199.4 to d0:67:e5:30:18:90 (MXXXX) via 172.16.199.1
Jul 28 11:46:32 dhcp777rsv2 dhcpd[32364]: **send_packet: Operation not permitted**
Jul 28 11:46:32 dhcp777rsv2 dhcpd[32364]: dhcp.c:3693: **Failed to send 301 byte long packet over fallback interface.**

我的iptable没有其他规则,默认情况下它允许任何事情。

我尝试过使用root用户运行dhcpd,但没有成功。

我想了解正在发生的事情,并能解决这个问题。

EN

回答 1

Server Fault用户

发布于 2017-07-31 15:08:27

在netfilter.org阅读时,我发现了我的问题所在,并解决了它。

我必须添加一个PREROUTING DNAT规则才能完成这项工作:

代码语言:javascript
复制
iptables -t nat -A PREROUTING -p udp -d 10.232.208.229 --dport 67:68 -j DNAT --to-destination 10.232.208.228

原因是传入数据包使用源x.x:67:10.232.208.229:67创建了连接,而且由于该连接已经存在,系统无法将匹配现有连接的数据包NAT。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/865730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档