Соединение Wifi с Ethernet в Ubuntu не работает


22

Когда я работал под управлением 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.

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


Очень похожая проблема обрабатывается в [ askubuntu.com/questions/155041/...
Legionair

Ответы:


10

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

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

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

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

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

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


3
Вы можете решить эту проблему, переписав MAC-адреса с помощью ebtables
ccarton

Я заметил, что один человек здесь говорит, что вы можете в Ubuntu ... и я сделал что-то подобное в Windows тоже ... хотя вы говорите, что это невозможно, поэтому, возможно, вы можете объяснить, в чем разница между этим и этим. В Windows, когда вы делаете это, youtube.com/watch?v=96Z1_6rX5qU WiFi подключен к интернету. Нет кабеля в разъеме Ethernet ... или кабель другого компа в разъеме Ethernet. Затем, выбирая адаптер Wi-Fi и адаптер Ethernet, он соединяет их, и тогда другой компьютер может подключить его кабель и использовать подключение к Интернету. Я думаю, что ноутбук все еще является клиентом WiFi (а не точкой доступа)
barlop

1
@DavidSchwartz Если у человека есть ноутбук без работающей беспроводной сети и сетевой коммутатор для подключения к нему для доступа в Интернет, но у другого ноутбука есть беспроводной доступ в Интернет, и нет запасной беспроводной USB-флешки. Тогда кажется, что единственным решением является подделка мостов. Если бы у обоих ноутбуков был работающий адаптер беспроводной сети, они оба могли бы просто подключиться к основной точке беспроводного доступа, без необходимости в дополнительных точках доступа и WDS. Я использовал подделку моста, когда один ноутбук не мог подключиться к беспроводной сети.
Бароп

1
Неправильно. Начнем с того, что WDS - это соединение WiFi, мало чем отличающееся от других. Во-вторых, есть такие устройства-милашки, которые называются клиентские мосты или медиа-мосты, которые подключаются через точку доступа и прозрачно соединяют 3-5 проводных разъемов, которые могут быть концентраторами и т. Д. Конечно, вероятно, есть ограничения в том, как они работают и сколько MAC они могут соединить ЗА, но в конце концов ... есть способ. Черт, даже Linux позволит вам использовать режим WDS в качестве STA, если вы установите 4addr в качестве режима на устройстве с помощью команды iw, а драйвер позволит вам это сделать. Вы можете соединить ... это просто есть ... условия.
Svartalf

1
@DavidSchwartz: Маршрутизация? Шутки в сторону? Вот подсказка. Приложение может иметь более 500 узлов в сети. Можете ли вы сделать маршрутизацию изящно работать таким образом? "Настоящий WDS"? Могу ли я быть уверен, что он будет работать с Cisco, Aruba, Ubiquiti и другими? Если так, то да ... если нет ... посылка - это проблема из коробки. У меня это довольно хорошо работает с тем безумием, которое я испытываю в режиме WDS-Station ... но будет ли оно работать с чем-то другим, кроме hostapd или аналогичного производного устройства Linux?
Свартальф

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

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


Это хитрость третьего уровня, а не «соединение» - в тот момент, когда вы используете iptables, вы маршрутизируете.
Свартальф

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 можно найти здесь .


Зависит от того, что вам нужно. Если вам нужен прозрачный (машет рукой), нет, вы этого не хотите. Шутки в сторону. Вам нужно поведение, подтвержденное такими вещами, как устаревший медиамост TEW640-MB компании Trendnet (сеанс в режиме STA, подключенный к 4 портам Ethernet). Скорее всего, это будет иметь место только в режиме WDS (4addr) или в маскировке ebtables MAC (что не следует путать с тем, что вы опубликовали) - у обоих есть свои проблемы и проблемы.
Свартальф

-1

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

ifconfig eth0 down

ifconfig wlan0 down


1
По-прежнему получаю одинаковую ошибку при отключении обоих интерфейсов
Зак Пауэлл

@ Zac Powell вы используете Network-Manager? У меня был какой-то прошлый опыт, который мог помешать. В этом случае вы можете попытаться остановить службу, а затем снова включить ее
Legionair

Да, хорошо, так что я должен попытаться отключить их обоих и остановить менеджера сети, затем сделать помехи и затем восстановить все?
Зак Пауэлл

да, service network-manager stopзатем сделай свое дело, начни это снова сservice network-manager start
Legionair

все еще не работает: / все закрыто, но все равно получаю ту же ошибку
Зак Пауэлл

-4
sudo iw dev wlan1 set 4addr on

Хотите объяснить, как это решает проблему ОП?
Брайам

@Braiam Мой ответ в значительной степени объясняет, почему это будет работать, если оно будет поддерживаться AP.
Дэвид Шварц

К сожалению, это не работает со многими AP. Что касается того, как он МОЖЕТ решить его проблему, если он работает правильно с большинством AP, так это то, что он дает возможность AP путем добавления дополнительного MAC к числу, указанному в каждом кадре 802.11, для ретрансляции кадров для большего, чем просто аутентифицированный MAC.
Свартальф

Из другого ответа: serverfault.com/a/554663/280693
jhutar
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.