3

我正在使用 ubuntu11.10,并使用以下命令创建了一个 tun/tap 接口

openvpn --mktun --dev tun0
ip link set tun0 up
ip addr add 10.10.10.1/24 dev tun0
route add 10.10.10.1/24 dev tun0

我那里有另一个界面

eth0 10.80.1.87

我想将从 tun0 收到的数据包重定向到 eth0。如何在 Ubuntu 上做到这一点?

4

3 回答 3

6

作为对两个其他很好的答案的补充,请记住:

  • 在链路层(“以太网级别”)进行桥接工作——因此在两个接口之间配置桥接就像通过(虚拟)交换机连接它们
  • 在网络层(“IP 级别”)进行转发工作——因此配置两个接口之间的转发就像通过(虚拟)路由器连接它们
于 2013-07-11T17:04:11.027 回答
3

根据 TCPIP 标准的要求,IP 转发默认关闭。你打开它: echo 1 > /proc/sys/net/ipv4/ip_forward

然后转发将起作用。您似乎在帖子中添加了几行,所以我无法确定您的网络配置。

如果 tun0 上的数据包以 eth0 上的目的地进入,现在将被转发。您的 Ubuntu 机器将用作路由器。它不会盲目地将进入 tun0 的数据包放到以太网上。

因此,如果您在 tun0 上的 IP 地址是 10.10.10.1,那么另一个主机,例如 tun0 上的 10.10.10.45 将必须配置 10.10.10.1 的网关(至少对于 10.80.1.0/24)。然后,如果它有一个 10.80.1.234 的数据包,它将首先将其转发到 10.10.10.1,您的 Ubuntu 机器会将其转发到以太网上的 10.80.1.234。接下来,THAT 机器将回复 10.10.10.45。它必须配置为使用 10.80.1.87 作为该主机/网络的网关。如果所有配置正确,它将起作用。

在 10.80.1.0/24 上的机器上配置正确网关的另一种方法是启用 ip 伪装。然后,您的 ubuntu 机器将伪造 FROM 地址并将 10.80.1.87 替换为 10.10.10.45 曾经的源。

于 2012-04-23T07:07:14.433 回答
2

听起来你想在两个网络接口之间配置桥接这里还有 ubuntu 特定的手册

$ sudo apt-get install bridge-utils
# vim /etc/network/interfaces: 
auto lo
iface lo inet loopback

auto br0
iface br0 inet static
        address 192.168.0.10
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off
$sudo /etc/init.d/networking restart
于 2012-04-23T07:02:13.860 回答