服务器 1 和服务器 2(Centos 7)都托管同一个应用程序,该应用程序侦听 UDP 端口 1514。服务器 1 在此端口上接收流量。目标是让服务器 2 上的应用程序接收此流量的副本。
服务器 1 使用 iptables 复制 UDP 1514 上的流量并将其发送到服务器 2:
iptables -t mangle -A PREROUTING -i ens160 -p udp --dport 1514 -j TEE --gateway 10.88.72.40 [服务器 2]
服务器 2 上的 tcpdump 显示了所有传入的流量;但是,目标 IP 仍然是 10.88.72.41,因此侦听应用程序未检测到流量。请帮我找到一个解决方案,以便第二台服务器上的应用程序可以检测到此流量。在服务器 2 上,我尝试了此策略来重写传入数据包的目标 IP:
iptables -t nat -A PREROUTING -p udp -d 10.88.72.41 --dport 1514 -j NETMAP --10.88.72.40
在服务器 1 上,我尝试了类似的命令来重写(或 DNAT)传出数据包的目标 IP。我已经研究了好几天了 - 如果你能解决这个问题,我将永远感激不尽!
答案1
陛下,您是一位学者、一位绅士和一位圣人!在我的第二台服务器上,我使用第一台服务器的 IP 添加了一个虚拟环回设备,它居然还活着!以下是在 Centos 7 中添加虚拟环回设备的方法:
cd /etc/sysconfig/network-scripts
cp ifcfg-lo ifcgf-lo:1
vi ifcfg-lo:1
并将其放入该文件中:
DEVICE=lo:1
IPADDR=10.88.72.41
NETMASK=255.255.255.255
NETWORK=10.88.72.41
BROADCAST=10.88.72.41
ONBOOT=yes
NAME=loopback:1
NM_CONTROLLED="no"
然后做:
ifup lo:1
ifconfig # you should see lo:1 in there
在服务器 1 上,为服务器 2 添加静态 arp 条目:
arp -s <server2 IP> <server 2 MAC>
答案2
如果您需要在 Windows 主机上执行同样的事情,您可以按照此帖子中的说明进行操作:https://www.pingzic.net/how-to-enable-loopback-adapter-in-windows-10/
其本质是:
- 打开装置经理
- 单击 DevMgmt 左侧导航中的类别,然后选择“操作”菜单并选择“添加旧硬件”
- 选择“安装我从列表中手动选择的硬件(高级)”,然后单击下一步
- 选择“网络适配器”,然后单击下一步
- 在左侧(制造商)列表中选择“Microsoft”,然后选择Microsoft KM-TEST 环回适配器在右侧列表中,然后单击下一步,直到完成
添加适配器后,您可以在典型的网络适配器控制面板中选择该适配器,并应用您选择的静态 IP,使该 IP 成为服务器上的活动 IP,但实际上并不响应该服务器之外的活动网络上该 IP 的流量。