如何将 usb0 和 usb1 接口合并到同一个网络中?

如何将 usb0 和 usb1 接口合并到同一个网络中?

我设置了三台设备,全部运行 Ubuntu 14.04。设置如下:

由一台主机和两台设备构成的网络设置。

我希望有一种配置,即两台设备都可以连接到互联网,但也可以相互连接。理想情况下,主机 PC 在从任一设备连接时应具有相同的 IP。我尝试了两种可能的配置,但都失败了。

1:usb0和usb1使用相同的IP和子网

主持人

iface usb0 inet static
    address 10.0.1.1
    netmask 255.255.255.0
    up route add 10.0.1.1 netmask 255.255.255.0

iface usb1 inet static
    address 10.0.1.1
    netmask 255.255.255.0
    up route add 10.0.1.1 netmask 255.255.255.0

设备 0

iface usb0 inet static
    address 10.0.1.2
    netmask 255.255.255.0
    route add default gw 10.0.1.1

设备 1

auto usb0
iface usb0 inet static
    address 10.0.1.3
    netmask 255.255.255.0
    route add default gw 10.0.1.1

! 问题 !

只有设备 0 可以连接。该设备可以 ping 通,可以连接到互联网,但设备 1 完全无法连接。因此,它也没有互联网连接。

2:usb0和usb1有不同的IP地址

主持人

iface usb0 inet static
    address 10.0.1.1
    netmask 255.255.255.0
    up route add 10.0.1.1 netmask 255.255.255.0

iface usb1 inet static
    address 10.0.2.1
    netmask 255.255.255.0
    up route add 10.0.2.1 netmask 255.255.255.0

设备 0

iface usb0 inet static
    address 10.0.1.2
    netmask 255.255.255.0
    route add default gw 10.0.1.1

设备 1

auto usb0
iface usb0 inet static
    address 10.0.2.2
    netmask 255.255.255.0
    route add default gw 10.0.2.1

! 问题 !

我无法从设备 1 ping 10.0.1.1。

问题

我如何连接两个 USB 接口以便形成更大的本地网络,理想情况下每台机器都有一个 IP 地址、连接到互联网并且能够通过 SSH 访问其他每台机器?

答案1

您需要配置桥接。桥接的作用基本上是将一堆接口绑定在一起,然后让运行桥接的计算机充当交换机。IP 地址是在桥接接口本身上配置的,而不是在组成接口上配置的。

基本上有两种方法可以实现这一点,要么使用两个 USB 接口设置一个桥接器,然后使用 iptables 和某种 NAT 将机器路由到互联网,要么将两个 USB 接口以及物理接口放在一个桥接器中。这样,您就可以让 USB 接口直接连接到 LAN 并以此方式访问互联网。

由您来选择哪一个更适合您的应用程序。

/etc/network/interfaces假设您的主网络接口称为 eth0,则将 USB 网络接口桥接到主网络的设置的配置 ( ) 可能看起来像这样。

iface eth0 inet manual
iface usb0 inet manual
iface usb1 inet manual

auto br0
iface br0 inet dhcp
  bridge_ports eth0 usb0 usb1

更多详情请参阅Ubuntu 社区帮助维基

在此设置中,您的 USB 网络设备将从网络中现有的 DHCP 服务器获取 IP 地址,或配置为本地 LAN 中的静态 IP 地址。此外,您的 PC 也会使用 DHCP 获取 IP。如果您这样做,请确保您的 USB 连接设备不运行 DHCP 服务器,否则可能会让网络中的其他用户交叉。:-)

答案2

最终配置如下:

主持人

/etc/网络/接口

auto br0
iface br0 inet static 
    address 10.0.1.1
    netmask 255.255.255.0
    bridge_ports usb0 usb1
    pre-up ip addr flush dev usb1
    pre-up ip addr flush dev usb0

/etc/rc.local

sleep(15)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null
iptables -P FORWARD ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE -s 10.0.1.0/24

设备 0

/etc/网络/接口

auto usb0
iface usb0 inet static
    address 10.0.1.2
    netmask 255.255.255.0
    dns-nameserver 8.8.8.8
    up route add default gw 10.0.1.1

设备 1

/etc/网络/接口

auto usb0
iface usb0 inet static
    address 10.0.1.3
    netmask 255.255.255.0
    dns-nameserver 8.8.8.8
    up route add default gw 10.0.1.1

相关内容