当前设置:
br0|
|-- tun10 -pipe-tun0(192.240.240.1)
|-- tun11 -pipe-tun1(192.240.240.2)
|-- tun12 -pipe-tun2(192.240.240.3)
pipe 程序是一个在两个 tun 接口之间来回转发数据的自定义程序。
这个想法是将 2 个程序放入 .2 和 .3 中,同时将 .1 保留为当前机器中的本地接口。主要问题是我想通过 .1 和 br0 将数据包路由到 .2 和 .3,但由于它们是本地接口,内核会忽略任何路由指令,只会将数据包传送到正确的接口。
尝试了 iptables,但 nat 表甚至看不到发往这些 iface 的 ping 数据包。“ping 192.240.240.2”将带有源和目标 .2 的 icmp 数据包发送到 tun1,理想情况下,它应该通过 tun0-br0-tun1 在 tun1 处发送源 .1 目标 .2
有什么提示吗?
以下是一些命令的输出:
答案1
所以你想让程序使用与系统“主”IP 地址不同的 IP 地址,但这些程序实际上在该系统上运行?你想让盒子外部的其他计算机能够直接访问你的程序吗?
我很确定你的 tun/pipe/tun 安排不会帮你实现这个目标。我不明白你为什么希望数据包看起来是通过一个虚拟 IP 地址路由到另一个虚拟 IP 地址。
除了那些 tun 或 tap 接口之外,您还可以创建一个虚拟接口:
modprobe dummy
ifconfig dummy0 192.240.240.2
ifconfig dummy0:1 192.240.240.3
现在,软件可以将 tcp 或 udp 端口绑定到这两个 IP 地址中的任意一个。其他计算机将需要一条路由(指向 eth0 的地址)才能到达这些 IP 地址。
答案2
但是为什么 tap10/11/12 没有预先配置 ip 地址?当您为接口分配 ip 地址时,您将能够 ping 通它们。