如何将从一个网络接口接收的数据包重定向到另一个网络接口?

时间:2012-04-23 06:45:59

标签: linux networking ip

我正在使用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之上做到这一点?

3 个答案:

答案 0 :(得分:5)

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

  • 桥接在链接层(“以太网级别”)工作 - 因此在两个接口之间配置网桥主要是通过(虚拟)交换机连接它们 < / LI>
  • 转发在网络层(“IP级别”)工作 - 因此在两个接口之间配置转发就像通过(虚拟)路由器连接它们

答案 1 :(得分:3)

默认情况下,IP转发按照TCPIP标准的要求关闭。 你打开它:     echo 1&gt;的/ proc / SYS /净/的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。接下来,该机器将回复10.10.10.45。必须将其配置为使用10.80.1.87作为该主机/网络的网关。如果所有配置都正确,它将起作用。

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

答案 2 :(得分:2)

听起来你想要configure bridge between two network interfaces还有ubuntu特定手册here(转到:桥接)

$ 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