当有人对其 IP 地址进行跟踪路由时,客户希望添加一个假跳数。他有两个 IP 地址和一个接口(没问题,虚拟接口可以解决这个问题)。我该怎么做?这可能吗?我尝试了 iptables 转发,但它没有显示在 traceroute 中。我还没有尝试过其他方法(也许是某种桥接方法?)
这是 tracert 中显示的当前路由:执行 traceroute 的人 -> 1.1.1.2
这是计划的跟踪路由结果:执行跟踪路由的人 -> 1.1.1.1(假跳)-> 1.1.1.2
更新:添加了一些格式以澄清这不是 xy 问题。我绝对愿意接受任何解决方案,而不仅仅是 iptables(无论是正确的解决方案还是肮脏的黑客)
编辑:它只在一个主机上(Linux)。我也想这样做。它不必太花哨。1.1.1.1 只需要显示在跟踪路由上。
我的尝试 - 不一定是正确的方法
更新:我尝试将数据包从 1.1.1.2 反弹到 1.1.1.1,然后对其进行处理以减少 TTL,然后将其转发到 1.1.1.2(Postrouting -j SNAT --to 1.1.1.1)。
编辑:这是我尝试过的规则,敏感信息已删除:
# Generated by iptables-save v1.4.21 on Mon May 18 15:13:18 2015
*nat
:PREROUTING ACCEPT [8:760]
:INPUT ACCEPT [8:760]
:OUTPUT ACCEPT [1:104]
:POSTROUTING ACCEPT [1:104]
-A POSTROUTING -p icmp -m icmp --icmp-type 8 -j SNAT --to-source 1.1.1.1
COMMIT
# Completed on Mon May 18 15:13:18 2015
# Generated by iptables-save v1.4.21 on Mon May 18 15:13:18 2015
*mangle
:PREROUTING ACCEPT [763:151106]
:INPUT ACCEPT [763:151106]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [299:39396]
:POSTROUTING ACCEPT [299:39396]
-A FORWARD -i eth0 -o eth0:0 -p icmp -m icmp --icmp-type 8 -j TTL --ttl-dec 1
COMMIT
# Completed on Mon May 18 15:13:18 2015
# Generated by iptables-save v1.4.21 on Mon May 18 15:13:18 2015
*filter
:INPUT ACCEPT [839:179066]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [303:40704]
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p udp -m udp --dport 33434:33523 -j ACCEPT
-A FORWARD -d 1.1.1.1/32 -o eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
COMMIT
# Completed on Mon May 18 15:13:18 2015
答案1
理论上,以下内容应该有效并实现您所寻求的目标。
- 在相关服务器上创建一个新的虚拟接口并为其分配一个 IP 地址,http://linuxconfig.org/configuring-virtual-network-interfaces-in-linux
- 设置原始 IP 地址/接口,使其指向通过修改路由表在先前设置中创建的新虚拟接口(实际上,它成为源和目标之间的新路由器/网关),http://linux-ip.net/html/basic-changing.html
答案2
好的,所以我能想到的唯一方法是在发起请求的主机上执行此操作。您可以在那里添加附加接口并将其绑定到适配器,然后添加路由以使其流经该接口。这样做的主要原因是,当交换机找到与 IP 1.1.1.2 绑定的 MAC 地址时,您的跟踪将结束。
如果您不想为此更改请求者主机,则需要进行网络更改,例如修改路由器以模拟额外的跳数。