19

Когда я работал под управлением Windows, я смог подключить свое Wi-Fi-соединение через Ethernet-соединение моего ноутбука, так что целый ряд только Ethernet-устройств мог отключить мой Wi-Fi (Raspberry Pi, Xbox и т.д.). Я сейчас пытаюсь сделать то же самое в Ubuntu, то есть установка будет:

Беспроводной маршрутизатор ---> Wifi на ноутбуке ---> Мост к Ethernet ---> Устройство, которому нужен интернет, подключенный к порту Ethernet

Теперь я пытался заставить это работать в Ubuntu, используя brctl

Я использовал следующую команду:

sudo brctl addif br0 eth0 wlan0

И получите следующую ошибку:

can't add wlan0 to bridge br0: Operation not supported

Я надеюсь, что кто-то может помочь, поскольку я отказываюсь верить в то, что я могу сделать в Windows очень легко, что нельзя сделать в Linux.

Если вам нужна дополнительная информация, дайте мне знать. Спасибо

5 ответов5

8

Это не может быть сделано. Вы не можете соединить соединение клиента WiFi. Если бы вы могли, нам бы не понадобился WDS, мы бы просто подключились.

Проблема очень проста - точка доступа запрещена спецификацией WiFi для передачи трафика через сеть WiFi, если что-то не разрешает эту передачу. Это в значительной степени пережиток тех времен, когда сети Wi-Fi были очень медленными и имели плохую, если вообще существовала, безопасность.

Мост имеет только клиентское подключение к точке доступа. Это только разрешает точке доступа передавать трафик, привязанный к мосту. Поскольку любые машины, подключенные к мосту, не являются клиентами точки доступа, у точки доступа нет причин отправлять связанный с ними трафик по каналу WiFi. Так не пойдет.

К сожалению, Wi-Fi достаточно похож на Ethernet, поэтому легко ожидать, что он будет действовать как Ethernet. Но это достаточно отличается, чтобы кусать тебя.

Конфигурация WDS - это специальная авторизация для точки доступа для отправки трафика, не связанного ни с одним из ее клиентов. Когда оба конца поддерживают WDS, они включают адрес конечной точки моста, а также адрес пункта назначения, который разрешает точке доступа отправлять трафик.

Вы должны использовать что-то, кроме моста, чтобы сделать это. Маршрутизация с NAT, например. Вы также можете использовать четырехадресный режим, если оба конца канала WiFi поддерживают его.

3

У меня была похожая проблема с LXC, я работал над проблемой моста в устройствах Wi-Fi. Сначала вам понадобится запасное устройство Ethernet в компьютере. Хитрость заключается в создании маршрута от устройства Ethernet до Wi-Fi.

В файле сервера измените /etc /network /interfaces, выберите неиспользуемую сеть для ваших виртуальных хостов, т.е. 10.0.0.0. Назначьте один IP для вашего запасного интерфейса Ethernet, здесь это eth0, соединяя его так:

auto br0
iface br0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

Как только это будет сделано, вы можете пойти по пути MASQUERADE, как здесь отвечал Константин. Они должны быть в rc.local или в скрипте, который вы должны запустить при загрузке или перед запуском виртуальных доменов:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

В виртуальном сервере настройте статические IP-адреса в /etc /network /interfaces. Я использую сеть 10.0.0.0, я начну использовать с .2, когда вы создадите больше виртуальных хостов, вы, вероятно, будете использовать 3 и так далее. Если у вас их много, вы можете рассмотреть возможность установки сервера dhcp для них. .1 - это шлюз, настроенный ранее.

auto eth0
iface eth0 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    broadcast 10.0.0.255
    gateway 10.0.0.1

Настройте также DNS-сервер, мой был сетевой маршрутизатор, в /etc/resolv.conf:

nameserver 192.168.1.1

Надеюсь это поможет

0

Я думаю, что вам действительно нужен не мост, а также:

или же

  • MASQUERADE (если у WLAN динамический IP - то есть IP меняется)

1) создайте forwarding_enable_file.sh со следующим содержимым:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2) Запустите файл:

sudo ./forwarding_enable_file.sh

3) на остальной части хоста укажите ваш ящик Ubuntu в качестве шлюза. ПРИМЕЧАНИЕ: если некоторые из боксов также работают под Linux, вы можете сделать это с помощью этой команды:

sudo ip route add default via ubuntu-ip

где ubuntu-ip должен быть заменен вашим IP-адресом ubuntu-box, то есть 192.168.1.10

4) попробуйте пропинговать какой-нибудь IP, т.е. 8.8.8.8 с других хостов:

ping 8.8.8.8

5) проверьте настройки DNS, выполнив команду ping для какого-либо домена, а именно:

ping slivkoed.ru

6) если шаг 4) работает и 5) нет, то у вас проблемы с настройками DNS. в таком случае запустите с правами root:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

Выполните шаг 5) снова.

Более подробную информацию о resolv.conf можно найти здесь.

-1

Вы должны отключить интерфейсы, прежде чем соединять их.

ifconfig eth0 down

ifconfig wlan0 down

-4
sudo iw dev wlan1 set 4addr on

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .