我有一个有2个eth卡的comp,用跳线连接(直接eth。从1到2的电缆)。
linux已安装,我想将数据从第一个网卡发送到第二个网卡。我想强制数据包通过电缆传输。我可以在卡片上设置任何ip地址。
使用ping命令,我可以得到卡片上的计数器常量。
是否可以使用tcp/ip套接字?
PS。我需要写一个程序。它将通过eth发送数据包,因此与堆栈溢出相关的问题。可以有一些依赖于操作系统的方法,它们也会帮助我
发布于 2010-12-20 21:48:30
查看本地路由表。在安装了iproute2工具的情况下,在本地做ip路由显示表。如您所见,所有发往本地IP的数据包都不会经过NIC,因为它们被标记为本地。
为了强制分组通过以太网卡,移除适当的路由(即ip路由删除192.168.122.1dev eth0 table local)。要恢复此路由,只需关闭并打开接口:内核将执行插入这些路由的工作。
发布于 2011-09-23 22:25:41
我试过ip路由...上面的表本地方法。要么是它不工作,要么是我做错了什么。
诀窍是使用一组虚拟IP地址来强制内核通过线路对其进行路由,并使用NAT将其更改回真实的IP地址。
假设eth0和eth1是两个以太网卡;IP0和IP1是其IP地址;MAC0和MAC1分别是其MAC地址。我们将使用两个虚拟IP地址: IP00和IP11。
arp -s IP00 MAC0
arp -s IP11 MAC1
ip route add IP00 dev eth1
ip route add IP11 dev eth0
iptables -t nat -A POSTROUTING -d IP11 -j SNAT --to-source IP00
iptables -t nat -A POSTROUTING -d IP00 -j SNAT --to-source IP11
iptables -t nat -A PREROUTING -d IP00 -j DNAT --to-destination IP0
iptables -t nat -A PREROUTING -d IP11 -j DNAT --to-destination IP1使用虚拟IP地址IP00和IP11,而不是真实IP地址。
发布于 2010-04-29 10:52:19
您应该能够使用数据包套接字(协议族PF_PACKET)编写这样的程序,但是您必须自己处理IP和更高层的报头。
https://stackoverflow.com/questions/2734144
复制相似问题