Установить Linux box как WAP для MyBookLive?

786
Jiahao Chen

Я унаследовал старую коробку Linux, а также MyBookLive и хотел бы сделать MyBookLive доступным по беспроводной сети, по сути, используя коробку Linux в качестве шлюза.

Я просто вытер коробку с Linux (дома) и установил на нее Ubuntu 12.04. Моя настройка сети в настоящее время выглядит следующим образом:

 (192.168.0.1 маска сети 255.255.255.0)  ISP --- беспроводной маршрутизатор --- wlan0 на дому (192.168.0.12) | eth0 на дому --- MyBookLive MacBook (192.168.0.11)  

так что MyBookLive - это прославленный внешний жесткий диск. Маршрутизатор имеет порт Ethernet, но он используется компьютером моего соседа по комнате, поэтому я не могу подключить MyBookLive непосредственно к нему.

Прямо сейчас я могу пропинговать MyBookLive.local и MacBook.local из дома, но у меня возникают проблемы с пониманием и выяснением правильных команд iptables, чтобы мой MacBook мог видеть мой MyBookLive через сеть Bonjour. Кроме того, я не уверен, что мне нужно настроить DNS для пересылки адресов xxx.local Bonjour / Zeroconf.

Я попробовал следующее, чтобы переслать всю мою проводную сеть (в которой есть только мой MyBookLive) на один IP-адрес:

sysctl net.ipv4.ip_forward = 1 iptables -A FORWARD -i wlan0 -o eth0 -j ПРИНЯТЬ iptables -A FORWARD -i eth0 -o wlan0 -j ПРИНЯТЬ iptables -t nat -A PREROUTING -i eth0 -p tcp -j DNAT - до 192.168.0.66 iptables -t nat -A PREROUTING -i eth0 -p udp -j DNAT - к 192.168.0.66 

но я не могу пропинговать этот адрес с моего MacBook. Это, вероятно, ужасно неправильно, но я совершенно нуб в настройке такого рода сети и мог бы использовать некоторую экспертную помощь для правильной настройки.

4

3 ответа на вопрос

0
week

I think that simple solution is to set up bridge device br0 on linux-box and add interfaces eth0 and wlan0 to it.

  1. Download bridge-utils on ubuntu
  2. Add bridge brctl addbr br0
  3. Add network devices to bridge brctl addif br0 eth0 and brctl addif br0 wlan0
  4. Set IP to your br0 interface (don't set IPs to eth0 or wlan0)
  5. Delete that DNAT rules from iptables
  6. Edit your iptables config, and replace parameters -i and -o with -m physdev --physdev-in and -m physdev --physdev-out

This'll create virtual br0 interface, that acts as if both wlan0 and eth0 were one interface on one network. That allows you to access your network disk from any pc from your network.

EDIT:

This Is working if you are using your wlan0 as AP in master mode. I suppose you're using hostapd to create that AP on linux-box.

Another thing I should mention is that adding wlan0 interface in my case is possible only after I exec hostapd first.

Great resource to hostapd and linux wireless networking: http://linuxwireless.org/en/users/Documentation/hostapd

Вы на самом деле пробовали это с беспроводной картой? Назовите одну или несколько беспроводных карт (драйверов), которые поддерживают это. Ярослав Рахматуллин 11 лет назад 0
Ну, да, я иногда использую это для подключения моего телефона к сетям без Wi-Fi. Моя wifi карта - это Intel Centrino Advanced-N 6205. Я также использую `hostapd`, о котором я должен упомянуть в своем посте, и мой wlan0 установлен в режиме master. week 11 лет назад 0
Я согласен, что это должен быть правильный способ сделать это. Я уже пробовал метод моста, но моя ужасная встроенная карта Wi-Fi не поддерживала основной режим. Jiahao Chen 11 лет назад 0
0
Ярослав Рахматуллин

Здесь проще всего настроить NAT и перенаправить необходимые порты с домашнего интерфейса wlan0 на эквивалентные порты интерфейса внешнего жесткого диска.

Следующий скрипт представляет собой пример, который настроил бы NAT таким образом, чтобы устройства, подключенные к eth0 дома (через коммутатор или TP), получили доступ к беспроводной сети.

#! / Bin / ш INTERNAL_IP = home.lan INTERNAL_NM = 255.255.255.0 INTERNAL = eth0 ВНЕШНЕЕ = wlan0  ifconfig $ INTERNAL $ INTERNAL_IP netmask $ INTERNAL_NM up  echo 1> / proc / sys / net / ipv4 / ip_forward iptables -t nat -A POSTROUTING -o $ EXTERNAL -s 192.168.0.0/24 -j MASQUERADE iptables -A FORWARD -i $ ВНЕШНИЙ -o $ ВНУТРЕННИЙ -m состояние \ - СОСТОЯНИЕ СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ iptables -A FORWARD -i $ ВНУТРЕННИЙ -o $ ВНЕШНИЙ -j ПРИНЯТЬ 

Чтобы описанная ситуация работала, устройства из беспроводной сети должны иметь возможность «оглядываться назад» на сеть NAT (которая скрыта за home.lan). Подход, который вы попробовали в этом вопросе, в основном правильный, за исключением того, что он переводит в неправильном направлении Вы хотите перенаправлять пакеты, поступающие через определенные порты на интерфейсе home.lan, в локальный скрытый IP-адрес NAT для mbl.lan

# (Продолжение) iptables -t nat -A ПРЕДУПРЕЖДЕНИЕ -i $ ВНЕШНИЙ -p tcp --dport 445 -j DNAT \ - до мбл.лан: 445 iptables -t nat -A ПРЕДОХРАНИТЕЛЬНОЕ -i $ ВНЕШНЕЕ -p tcp --dport 139 -j DNAT \ - до мбл.лан: 139 

Эта настройка сделает невозможным запуск сервера samba на домашнем хосте, поскольку трафик, поступающий на порты samba по умолчанию, отправляется на внешний жесткий диск. Это не является частью вопроса, но возможное решение состояло бы в том, чтобы запустить службу samba home на другом порту или использовать значение --dport, такое как 4455, и вручную настроить клиентов для подключения к другому порту, когда доступ к моей книге в прямом эфире.

Обратите внимание, что в этом ответе предполагается, что на диске используется samba, и порты нужно будет настроить, если используется другой протокол.

Заметным ограничением этого метода является то, что все соединения, поступающие на внешний диск, будут выглядеть так, как будто они созданы на home.lan.

Сетевые псевдонимы:
mbl.lan (ip адрес моей книги в реальном времени; 192.160.0.66)
home.lan (ip адрес home wlan0; 192.168.0.12)

Ссылки:
http://www.centos.org/docs/4/html/rhel-sg-en-4/s1-firewall-ipt-fwd.html
http://www.netfilter.org/documentation/HOWTO// NAT-HOWTO-6.html # ss6.2

0
BorisHajduk

У меня есть аналогичная установка для краткосрочного тестирования.

Установите hostapd следующим образом: (hostapd - это демон беспроводной точки доступа)

sudo apt-get install hostapd 

Вот действительно минимальный файл конфигурации hostapd.conf (обратите внимание, что вам понадобится больше настроек для защиты вашей сети с помощью WPA / WPA2).

interface=wlan0 driver=nl80211 ssid=AcidFlask channel=9 hw_mode=g country_code=NO auth_algs=1 wpa=0 ignore_broadcast_ssid=0 

Затем я запускаю демон hostapd и пересылаю его так:

sysctl net.ipv4.ip_forward sysctl -w net.ipv4.ip_forward=1 ifconfig wlan0 172.20.99.1 netmask 255.255.255.0 iptables -t nat -A POSTROUTING -s 172.20.99.0/24 -o eth0 -j MASQUERADE hostapd -d hostapd.conf 

Наконец, я определяю статический IP на своем клиенте (например, 172.20.99.2, с маской сети 255.255.255.0, шлюзом 172.20.99.1 и DNS 8.8.8.8).

Это действительно простое решение, так как ему не хватает беспроводной безопасности и DHCP, но оно должно работать, и вы можете построить его в зависимости от своих потребностей.

Также обратите внимание, что это решение требует вашего адаптера Wi-Fi для поддержки режима AP:

  • ath9k будет работать в большинстве случаев
  • rtl8187 не будет работать AFAIK

РЕДАКТИРОВАТЬ: я неправильно понял вашу фразу «использование Linux в качестве беспроводной точки доступа». Я думал, что вы хотите подключить вашу Linux-коробку к MyBookLive без проводов. Пожалуйста, не обращайте внимания на мое решение.

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