虚拟化网络中本地接口的外部路由

虚拟化网络中本地接口的外部路由

当前设置:

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 通它们。

答案3

相关内容