Как объединить интерфейсы usb0 и usb1 в одну сеть?

Как объединить интерфейсы usb0 и usb1 в одну сеть?

У меня есть конфигурация из трех устройств, все работают под управлением Ubuntu 14.04. Настройка выглядит следующим образом:

Настройка сети с одним хостом и двумя устройствами.

Мне бы хотелось иметь конфигурацию, в которой оба устройства могут подключаться к Интернету, но также могут подключаться друг к другу. И в идеале хост-компьютер должен иметь тот же 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. Его можно пинговать, и оно может подключиться к интернету, но устройство 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

! проблема !

Я не могу выполнить ping 10.0.1.1 с устройства номер 1.

Вопрос

Как соединить два USB-интерфейса так, чтобы они образовали большую локальную сеть, в которой в идеале каждая машина имеет один IP-адрес, подключена к Интернету и может получить доступ к любой другой машине через SSH?

решение1

Вам нужно настроить мост. Мост в основном связывает вместе несколько интерфейсов, а затем позволяет компьютеру, на котором запущен мост, выступать в качестве коммутатора. IP-адрес настраивается на самом интерфейсе моста, а не на составляющих его интерфейсах.

По сути, есть два способа сделать это: либо настроить мост с двумя интерфейсами USB, а затем использовать iptables и, предположительно, какой-то NAT для маршрутизации машин в Интернет, либо просто вставить оба интерфейса USB, а также физический интерфейс в один мост. Таким образом, вы позволите своим интерфейсам USB напрямую подключаться к вашей локальной сети и таким образом получать доступ в Интернет.

Вам решать, какой из них больше подходит для вашего приложения.

Конфигурация ( /etc/network/interfaces) для настройки, в которой сетевые интерфейсы USB соединены мостом с вашей основной сетью, может выглядеть примерно так, предполагая, что ваш основной сетевой интерфейс называется eth0.

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

auto br0
iface br0 inet dhcp
  bridge_ports eth0 usb0 usb1

Более подробную информацию можно найти вПомощь сообществу Ubuntu wiki.

В этой настройке ваши сетевые USB-устройства будут либо получать IP-адреса от существующего DHCP-сервера в вашей сети, либо будут настроены со статическими IP-адресами в вашей локальной сети. Также ваш ПК будет получать IP-адрес с помощью DHCP. Убедитесь, что ваши 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

Связанный контент