Преодоление wlan0 до eth0
В Arch Linux я хотел бы, чтобы eth0 (подключенный к мостовому маршрутизатору) делился соединением, полученным с wlan0, я читал учебники, но я не командный навык, как другие пользователи, и не совсем понимаю.
5 ответов
UPDATE
Невозможно установить мост между беспроводным (клиентский режим) и проводными интерфейсами в соответствии с этой веткой на 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 start
И все!
Только прочитайте ниже, если вас интересует настройка нерабочего моста
brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0
Сначала вы создаете интерфейс моста, я выбираю произвольное имя mybridge , а затем добавляю ему intefaces.
Вы должны запросить новый IP-адрес (это необходимо, только если вы хотите получить действительный IP-адрес для самого мостового устройства):
dhclient -d mybridge
Для интерфейса bridge wifi вы можете использовать инструмент iw
для enable 4addr также:
# iw dev <wifiInterface> set 4addr on
то есть:
# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported
# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>
Теперь это должно сработать. Вы можете показать мосты, используя:
# brctl show
Зависит от того, насколько AP является для вас:
1) Может потребоваться только просмотр пакетов, исходящих от вас, с вашим известным адресом уровня ссылки (и, следовательно, не с мостиковыми пакетами) 2) На самом деле это может быть даже умнее, и знать, какой IP-адрес должен принадлежать тому, к какому адресу ссылочного уровня (потому что он знает DHCP и проверяет его).
Если 1 + 2 оба истины, вам действительно нужно что-то вроде IP NAT, DHCP, ..
Но если это только 1), вы можете подделать адрес канального уровня и перевернуть его на правый в другом направлении, как описано здесь:
https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC
4addr, как описано в других ответах, безусловно, лучший способ, который поддерживается адаптером /драйвером, но не все из них. NAT может работать для некоторых вещей, но получение надлежащей связи в обоих направлениях на LAN станет проблематичным (например, подключение принтера или доступ к другим устройствам IoT на другой стороне NAT). Все, что полагается на широковещательную /многоадресную рассылку (например, автоматическое обнаружение, bonjour), не будет выполнено через NAT.
Альтернативой является использование прокси-сервера ARP (parprouted), как описано в https://wiki.debian.org/BridgeNetworkConnectionsProxyArp . Я установил это на Малиновый Pi для принтера, и он работает как шарм (я добавил 10 секундного сна в post-up
, чтобы сначала получить IP-адрес, возможно, это связано с медленностью моего старого RPi ...)
Для интерфейса bridge wifi вы можете использовать инструмент iw
для enable 4addr также:
# iw dev <wifiInterface> set 4addr on
то есть:
# brctl addif <bridgename> <wifiInterface>
# can't add <wifiInterface> to bridge <bridgename>: Operation not supported
# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>
Теперь это должно сработать. Вы можете проверить:
# brctl show
Это может не сработать, если iw сам сообщает об ошибке, например: «command failed: Operation not supported (-95)» (см. на Raspbian). По-видимому, не все драйверы реализуют эту функцию.