У меня есть установка с тремя устройствами, все под управлением Ubuntu 14.04. Настройка выглядит следующим образом:
Я хотел бы иметь конфигурацию, в которой оба устройства могут подключаться к Интернету, но также могут подключаться друг к другу. И в идеале хост-компьютер должен иметь одинаковый 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
iface usb0 inet static
address 10.0.1.2
netmask 255.255.255.0
route add default gw 10.0.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 полностью выбрано из игры. Поэтому у него также нет подключения к Интернету.
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
iface usb0 inet static
address 10.0.1.2
netmask 255.255.255.0
route add default gw 10.0.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
Я не могу пинговать 10.0.1.1 с устройства номер 1.
Как мне подключить два интерфейса USB, чтобы они образовали большую локальную сеть, в которой в идеале каждая машина имеет один IP-адрес, подключена к Интернету и может получить доступ к любой другой машине через SSH?
Что вам нужно, так это настроить мост. Мостовое соединение в основном объединяет несколько интерфейсов, а затем позволяет компьютеру, на котором установлен мост, действовать как коммутатор. 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.
В этой настройке ваши сетевые USB-устройства будут либо получать IP-адреса от существующего DHCP-сервера в вашей сети, либо будут настроены со статическими IP-адресами в вашей локальной сети. Также ваш компьютер получит IP с помощью DHCP. Убедитесь, что ваши USB-подключенные устройства не запускают DHCP-сервер, если вы это сделаете, иначе вы можете заставить других пользователей вашей сети перекреститься. :-)
В итоге все было настроено так:
/ и т.д. / сеть / интерфейсы
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
/ и т.д. / сеть / интерфейсы
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
/ и т.д. / сеть / интерфейсы
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