Образование моста wlan0 к eth0

На определенных сборках VMware Workstation 6.5.1 "синий" экран получен на установке. 6.5.2 Устраняет эту проблему. Кроме этого, Windows 7 очень не отличается, чем Vista, поэтому если можно заставить Vista работать под VMware, таким образом, Вы могли добраться 7.

25
задан 21 April 2017 в 05:52
6 ответов

ОБНОВЛЕНИЕ

Не возможно образовать мост между беспроводной связью (клиент иначе режим станции) и соединенными проводом интерфейсами согласно этому потоку на linux-ath5k-devel.

Установка NAT

Нужно настроить NAT вместо этого:

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

Присвоение IP

Затем необходимо присвоить IP-адреса себе:

ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up

Установите dhcp демона

Установите dhcp сервер и добавьте следующий текст к его файлу конфигурации (в/etc/dhcpd.conf или чем-то подобном)

subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.100 10.0.0.120;
    option routers 10.0.0.1;
    option domain-name-servers the-ip-address-you-have-in-etc-resolv.conf;
}

Запустите dhcpd

Затем запустите его,/etc/init.d/dhcpd запускаются

И вот именно!

Только читайте ниже, если Вы интересуетесь нерабочей установкой образования моста


brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0

Сначала Вы создаете интерфейс моста, который я выбираю, произвольное имя mybridge затем добавляют интерфейсы к нему.

Необходимо запросить новый IP-адрес (Это необходимо, только если Вы хотите получить допустимый IP для самого образующего мост устройства):

dhclient -d mybridge
24
ответ дан 28 November 2019 в 20:12
  • 1
    , Вам на самом деле не нужен IP-адрес для интерфейса моста, чтобы образование моста работало. –  Massimo 18 June 2010 в 13:25
  • 2
    не может добавить wlan0 для образования моста mybridge: Операция не поддерживала –  dbdii407 18 June 2010 в 16:21
  • 3
    @Massimo: да, который верен. Допустимый IP необходим для получения доступ к к сети от "образующего мост устройства". –  cstamas 18 June 2010 в 20:27

Мне понравилось подход Arp Прокси , но исходный вопрос указал Дугу Linux. Вот является Дуга версией Linux реализация Raspbian . Я пытался очень трудно адаптироваться , исходный подход от Debian Wiki упомянул здесь к [1 112] netctl с помощью ExecUpPost и ExecDownPre без успеха. Все работало в командной строке, но не в профиле.

шаги:

  1. беспроводные сети Реализации с [1 113] systemd-networkd. В .network файле, набор IPForward=yes. Я использовал Суппликант WPA для управления интерфейсом беспроводной сети.
  2. Включают передачу mDNS установкой enable-reflector=yes в /etc/avahi/avahi-daemon.conf; запустите и включите avahi-daemon.service, если это уже не.
  3. Установка parprouted из АУРА, и создают сервисный файл для него путем адаптации того от ответ Raspbian . Я не нашел, что было необходимо установить интерфейс, чтобы быть неразборчивым. Естественно, этот сервис должен будет быть запущен и включен.
[Unit]
Description=proxy arp routing service
Documentation=https://raspberrypi.stackexchange.com/q/88954/79866

[Service]
Type=forking
# Restart until wlan0 gained carrier
Restart=on-failure
RestartSec=5
TimeoutStartSec=30
ExecStartPre=/lib/systemd/systemd-networkd-wait-online --interface=wlan0 --timeout=6 --quiet
ExecStartPre=/usr/bin/echo 'systemd-networkd-wait-online: wlan0 is online'
# clone the dhcp-allocated IP to eth0 so dhcrelay will relay for the correct subnet
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip addr add $(/usr/bin/ip -4 -br addr show wlan0 | /usr/bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")/32 dev eth0'
ExecStartPre=/usr/bin/ip link set dev eth0 up

#         v minus sign
ExecStart=-/usr/bin/parprouted eth0 wlan0

ExecStopPost=/usr/bin/ip link set dev eth0 down
ExecStopPost=/usr/bin/bash -c '/usr/bin/ip addr del $(/usr/bin/ip -4 -br addr show eth0 | /usr/bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")/32 dev eth0'

[Install]
WantedBy=wpa_supplicant@wlan0.service
  1. Для поддержки DHCP для устройства, подключенного к порту Ethernet, создайте dhcrelay (из пакета DHCP) сервис. Нахождение адреса сервера DHCP grep'ing через журналы кажется неэлегантным, но это работает. Запустите и включите.
[Unit]
Description=DHCRelay Service
After=network-online.target parprouted_bridge.service
Type=simple

[Service]
ExecStart=/usr/bin/bash -c '/usr/bin/dhcrelay -d -4 -iu wlan0 -id eth0 $(/usr/bin/journalctl -b -u systemd-networkd.service | /usr/bin/grep -Po "via\s+\K\\d+\\.\\d+\\.\\d+\\.\\d+")'

[Install]
WantedBy=multi-user.target

Этот подход работал на меня на Модели B Raspberry Pi + w/ArchLinuxArm, щеголяющий адаптером USB WiFi чипсетом RT5370. Поскольку Пи будет предоставлять WiFi принтеру только с Ethernet, я хотел бы, чтобы это было устойчиво к грубой обработке, таким образом, мой следующий шаг должен будет настроить SD-карта как только для чтения .

0
ответ дан 28 November 2019 в 20:12

To bridge wifi interface you may use iw tool to enable 4addr likewise:

# iw dev <wifiInterface> set 4addr on

ie:

# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported

# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>

Now it should work. You can show bridges using:

# brctl show
27
ответ дан 28 November 2019 в 20:12

Зависит от того, насколько важна для вас точка доступа:

1) Она может захотеть видеть только исходящие от вас пакеты с вашим известным адресом канального уровня (и, следовательно, не мостовые пакеты). 2) На самом деле он может быть даже умнее и знать, какой IP-адрес должен принадлежать какому адресу канального уровня (потому что он знает DHCP и проверяет его)

Если 1+2 верны, то вам действительно нужно что-то вроде IP NAT, DHCP, ...

Но если только 1), то это так, Вы можете подделать адрес линкового слоя и перевернуть его на правый в другом направлении, как описано здесь:

https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC

5
ответ дан 28 November 2019 в 20:12

4addr, как описано в других ответах, безусловно, является лучшим способом, если поддерживается адаптером / драйвером, но не все из них. NAT может работать для некоторых вещей, но обеспечение надлежащей связи в обоих направлениях по локальной сети станет проблематичным (например, подключение принтера или доступ к другим устройствам IoT на другой стороне NAT). Все, что полагается на широковещательную / многоадресную рассылку (например, автоматическое обнаружение, bonjour), не пройдет через NAT.

Альтернативой является использование прокси-сервера ARP (с парпроутингом), как описано в https://wiki.debian.org/ BridgeNetworkConnectionsProxyArp . Я установил это на Raspberry Pi для принтера, и он работает как шарм (я добавил 10-секундный сон в командах post-up , чтобы позволить ему сначала получить IP-адрес, это может связано с медлительностью моего старого RPi ...)

4
ответ дан 28 November 2019 в 20:12

Мост wlan и 4addr:

Мост wlan0 - это боль. Обычно вы не можете добавить его к интерфейсу моста (brctl возвращает «Операция запрещена»), а использование «мостового» фильтра VirtualBox приводит к большому беспорядку конфликтов ARP и DHCP. Причина этого в том, что кадры 802.11 по умолчанию содержат только три адреса: MAC-адреса обоих беспроводных устройств (портативного компьютера и точки доступа) и конечного получателя (как в Ethernet). Всегда предполагается, что существует только один возможный отправитель.

802.11 может нести четвертый, MAC-адрес отправителя, и он используется в режиме WDS повторителями. Эту функцию также можно включить в Linux, используя iw, и включение этого режима позволит использовать wlan0 в интерфейсах моста, а также в мостовых сетях VirtualBox:

iw dev wlan0 set 4addr on

Однако, с включенным 4addr, вы, вероятно, полностью получите игнорируется AP: ассоциация успешна, но все фреймы данных исчезают в эфире. Это могло быть из соображений безопасности (потому что чертовски сложно подделать исходный MAC-адрес. Да.) В моем маршрутизаторе (работающем с OpenRG) необходимо включить режим "WDS" для интерфейса беспроводной точки доступа, добавить устройство WDS, ограниченное моим MAC-адрес ноутбука и добавьте его в мост LAN. Пакеты 4addr теперь работают.

Но есть еще одна проблема - маршрутизатор теперь отклоняет трехадресные пакеты от портативного компьютера, что может быть довольно неудобно (необходимость переключать 4addr каждый раз при изменении сети WLAN). Обходной путь - добавить на ноутбук второй беспроводной интерфейс, связанный с тем же устройством, но с другим MAC-адресом. Сначала отмените предыдущую конфигурацию:

iw dev wlan0 set 4addr off

Затем добавьте второй интерфейс - имя было выбрано произвольно - с другим MAC-адресом:

iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr <addr>
ip link set dev wds.wlan0 up

Здесь должен совпадать адрес устройства WDS, настроенный в маршрутизаторе; кроме этого, это может быть любой действующий MAC-адрес.Исходный MAC-адрес wlan0 остается для «нормального» использования.

Можно использовать и wlan0, и wds.wlan0 одновременно - хотя я только дважды тестировал подключение к одной и той же AP, а не к разным AP. Я предполагаю, что им нужно, по крайней мере, быть на одном канале.

Некоторые люди спрашивают, зачем использовать это, когда VirtualBox может соединять Wi-Fi «просто отлично». Ответ заключается в том, что VirtualBox не отправляет MAC-адреса виртуальных машин; скорее, он также выполняет NAT на уровне MAC. - 2014-08-22

Прямой мост wlan

При определенных обстоятельствах вы также можете использовать wlan_kabel. Он использует пакетные сокеты для прямого соединения устройств wlan * с устройствами Ethernet. Тем не менее, с помощью wlan_kabel за раз вы можете соединить только один MAC. У него нет недостатка в том, что он блокируется точками доступа, потому что используется только исходный MAC-адрес устройства wlan. В вашем случае это будет означать, что wlan0 может использоваться только одной виртуальной машиной и даже не хостом. Вы можете получить wlan_kabel здесь . Это похоже на решение macvlans .

Мост с ipvlan

IP Vlan не имеет ограничений моста, его можно использовать для моста в сети. Подробно о том, как его использовать можно найти здесь

Альтернатива Masquerade

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

# bridge setup
brctl addbr br0
ifconfig br0 10.10.20.1/24 up

# enable ipv4 forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward

# netfilter cleanup
iptables --flush
iptables -t nat -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# netfilter network address translation
iptables -t nat -A POSTROUTING -o wlan0 -s 10.10.20.0/24  -j MASQUERADE

Интерфейс br0 затем будет иметь доступ к сети wlan0

Важное и связанное с ним

Кроме того, что очень важно, вы не должны использовать устаревшие, устаревшие команды, такие как ifconfig, brctl и т. Д. на. Набор iproute2 содержит команды для всего этого, включая настройку виртуальных интерфейсов (для чего нам когда-то приходилось использовать openvpn) и создание мостов. Если вы не знаете, как настроить мост с помощью ip, начнем

  ip tuntap add tap0 mode tap user root 
  ip link set tap0 up
  ip link add br0 type bridge
  ip link set tap0 master br0
  ip link set eth0 master br0
  ip addr add 10.173.10.1/24  dev br0
  ip link set br0 up

С помощью этого набора команд мы создаем виртуальный интерфейс с именем tap0, затем мост с именем br0, затем порабощаем eth0 и tap0 мостом, чтобы которому мы назначаем IP-адрес 10.173.10.1, а затем запускаем его. Требуются три отдельных экземпляра вызова интерфейсов (для tap0, eth0 и br0).

Уловка для выполнения этой работы заключается в использовании proxy.arp, который позволяет вашему компьютеру (а не вашей виртуальной машине / контейнеру / сети Linux namespace), чтобы отвечать на запросы ARP вместо них.

Другими словами, используя пересылку IPv4 между вашим аппаратным интерфейсом и виртуальным интерфейсом, вы думаете, что можете подключить свою виртуальную машину / LXC / NNS к своей локальной сети, как если бы это была физическая интерфейс, но это неправда: вы забываете об абсолютно фундаментальном трафике ARP, который действительно позволяет LAN работать. Итак, проблема в следующем: если я правильно перенаправляю трафик IPv4, как я могу также перенаправлять трафик ARP, чтобы моя виртуальная машина / LXC / NNS работала? Уловка состоит в том, чтобы использовать proxy-arp.

Полный ответ на этот вопрос находится в Блоге Бохди Дзадзена с разоблачительным заголовком: Беспроводные карты Bridge. Он использует устаревший пакет uml-utilities для создания виртуального интерфейса с помощью команды tunctl: это единственная команда, для которой он использует uml-утилиты, так что вы можете спокойно пренебречь загрузкой пакета и использовать команду I написал выше, чтобы создать интерфейс tap или tun, в зависимости от того, что вам нравится, просто измените команду соответствующим образом. затем создайте пару veth для вашего LXC, а теперь создайте мост между tap0 и veth0. Этот мост под названием br0 - это то, для чего вы должны использовать proxy-arp вместо простого интерфейса tap0, описанного Бохди Дзадзен.


Источники: askubuntu.com , nullroute.eu.org , firejail.wordpress.com , superuser.com

3
ответ дан 28 November 2019 в 20:12

Теги

Похожие вопросы