0

所以我对 iptable 路由比较陌生,但我想做的事情应该很容易。

我试图引导来自某个 IP 块的流量,我正在使用一个名为 inetsim 的程序,它的作用是使用 IP 地址作为绑定地址,这将变得类似于路由器。根据配置说明,我使用 192.168.444.1 作为我的网关和 DNS 服务器。底部有一些选项可用于路由,但它们还不够友好。我有 2 个名为 eth0 和 eth1 的 eth 端口,它们的 IP 地址分别为 10.10.10.123 和 192.168.444.1。我在 10.10.10.250 上有一个报告服务器。

机器如下 192.168.444.2 windows7sp1 192.168.444.1 + 10.10.10.123 debian server

报告服务器有一个程序可以建立从目标机器到报告服务器的连接。在正常情况下,这将毫无障碍地工作,但是 inetsim 是一种互联网黑洞,它创建 iptables,将所有流量路由到一个 fakenet,包括未知服务,它们被路由到一个虚拟端口 1。

我需要一种方法将发往 10.10.10.250:48002 的数据包从 192.168.444.2[连接到 192.168.444.1] 转发到 10.10.10.123[除非有更简单的方法]。我已经尝试过 snat 和 dnat ,但它似乎将数据包破坏到它们以不同方式出现的位置,因为服务器拒绝了它收到的数据包。Windows机器声明它已经建立了连接,但就像我通过数据包检查所说的那样,它似乎不喜欢这些数据包。

我希望这样做的方式是根本不修改实际的数据包,或者至少尽可能少。如果您需要我制定的 iptables 规则或 inetsim 输出的规则,我可以发布这些规则。

任何帮助表示赞赏。感谢你们!

[编辑:我已经尝试了很多不同的规则,我不只是问,因为我希望别人为我做这件事。我已经这样做了好几个星期了,并且成功了一次。然后我试图复制它,但有些东西坏了。]

4

2 回答 2

0

我检查了pastebin 链接,似乎这些规则导致了问题:

-A PREROUTING -j INetSim_DNAT_12257
-A POSTROUTING -j INetSim_SNAT_12257
-A INetSim_DNAT_12257 -s 192.168.444.4/32 -d 10.10.10.250/32 -p tcp -m tcp --dport 48002 -j DNAT --to-destination 192.168.444.4:48002
-A INetSim_SNAT_12257 -s 192.168.444.4/32 -d 192.168.444.4/32 -p tcp -m tcp --dport 48002 -j SNAT --to-source 10.10.10.125

您能否删除它们及其关联的链,看看问题是否解决?

编辑:我注意到另一个可能有问题的规则。请也删除它,然后重试:

-A INetSim_12257 -s 192.168.444.4/32 -d 10.10.10.250/32 -p tcp -m tcp --dport 48002 -j MARK --set-xmark 0x1/0xffffffff
于 2014-09-12T22:49:37.950 回答
0

如果所有涉及的主机在其网段中都将 Debian IP 作为默认路由,则根本不需要 iptables,只需在 /etc/sysctl.conf 中激活 net.ipv4.ip_forward,如果需要保持 iptables 激活,请确保使用默认值FORWARD 表的策略是 ACCEPT。

如果只有 192.168.444.2 机器有 .1 IP 作为路由,但报告服务器没有(您会看到报告服务器中的连接作为 SYN_RECV 排队),您将需要一个 MASQUERADE 目标:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
于 2014-09-10T21:50:12.073 回答