我尝试了来自的代码https://blog.oddbit.com/post/2023-02-14-whos-got-the-packet/
这是我的设置:
虚拟机A (eth1: 10.223.0.2) ================>虚拟机B(eth0:10.23.56.200)
将“VM”加粗的原因是,上面的 IP 不是公共 IP,我不知道这有什么区别。
我创建了 tun0 并将地址设置为 10.23.56.199。
我启用转发:sudo sysctl net.ipv4.ip_forward=1
禁用 rp_filter:对于所有
for device in /proc/sys/net/ipv4/conf/*
do
echo 0 >${device}/rp_filter
done
这些都没有产生结果。
因此,我添加了从 tun0 到 eth1 的转发,以便我可以查看是否在 eth1 上收到 tun0 数据包虚拟机A(同一台机器)。
sudo iptables -t filter -I FORWARD -i tun0 -o eth1 -j ACCEPT
sudo iptables -t filter -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE
我可以使用命令查看 tun0 上的数据包tcpdump -nn -vv -i tun0 port 10001
但是当我替换tun0
为eth1
有没有一种方法可以将数据包写入tun0
同一eth1
台机器上,然后虚拟机B以太坊1?
我已经验证数据包不会被丢弃netstat -i
提前致谢!