【问题标题】:C++ weird RAW sockets and iptables issueC++ 奇怪的 RAW 套接字和 iptables 问题
【发布时间】:2010-10-18 09:57:12
【问题描述】:

参考C++ iptables redirection forming separate packets,我现在面临一个极其特殊的问题。我正在尝试将 UDP 端口 5060 上的所有传入流量重定向到端口 56790,并将所有传出流量从 5060 重定向到端口 56789。我使用了这些 iptables 规则:

iptables -t nat -I PREROUTING -p udp ! -s localhost --dport 5060 -j REDIRECT --to-port 56790
iptables -t nat -I OUTPUT -p udp ! -s localhost --sport 5060 -j REDIRECT --to-port 56789

在使用 ioctl 将接口设置为 PROMISCUOUS 模式后,我使用 RAW SOCKETS 监听两个端口。

我只在 56789 即 SENDING 端看到数据包,我在 56790 上看不到任何数据包,而 wireshark 显示许多数据包被传递到端口 5060。

为什么会发生这种情况?有任何想法吗?您认为这是 iptables 规则的问题还是与原始套接字有关?

【问题讨论】:

  • 我现在已经在两台 ubuntu 10.04 机器上尝试过了。同样的事情正在发生。 PREROUTING REDIRECT 根本不起作用。出了什么问题? !! :(
  • 如果您使用“-j REDIRECT”操作,我认为您应该使用“mangle”表。
  • 无论如何,iptables 配置是 serverfault 的话题,投票移动。

标签: c++ linux sockets udp iptables


【解决方案1】:

原始套接字在修改(传入)之前获取原始数据包的副本。在传出时它被反转了。

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2013-06-06
    相关资源
    最近更新 更多