LINUX.ORG.RU

Репитер на Ubuntu


0

1

Доброго времени суток. Имеется десктоп с вифи адаптером TP-LINK (TL-WN722N), который стоит буквально на границе видимости точки доступа, благо у него есть внешняя антенна а другие девайсы уже в глубоком выкууме. Чем и как можно сделать виртуальный репитер на Ubuntu 13.10. Уж очень не хочется ради этого ставить мастдай7.


Репитер — это отдельное устройство. В таком днищесвистке его быть не может. Лучшее, что ты можешь сделать — раздавать им другую подсеть на другом канале ну или городить бриджи.

Deleted
()
Ответ на: комментарий от Deleted

7 винда из днищесвистков на уровне ядра делает хоть какао с молоком. Читаем еще раз - «виртуальный репитер». Подымается виртуальный адаптер и бриджится. Вот только как это делается на практике (если только делается) в Ubuntu не знаю.

bagol
() автор топика

У мастдай 7 с этим оооочень большие проблемы. Голую сеть поднять не проблема, а вот как касаешься шифрования - тут приходит пушной зверёк.

Насчёт конкретно вашей ситуации - не трогая консоль, думаю, вряд ли получится. Вам необходимо почитать доки на тему виртуальных интерфейсов (в частности проверить, есть ли поддержка таковых для вашего чипа, т.к. под некоторые Atheros-usb свистки не всё работало). По практике - необходимо создать два интерфейса командой iw. Один интерфейс в режиме station-infrastructure для подключения к удалённой точке доступа, и второй интерфейс в режиме AP-infrastructure для раздачи локально. Соответственно на первый интерфейс натравливаем wpa_supplicant, а на второй hostapd с необходимыми конфигами. Далее, если вы хотите получить «прозрачный» репитер, то необходимо забриджевать оба интерфейса, чтоб он пропускал пакеты «сквозь» себя. Вот на этом этапе начинается глубокое копание в основы 802.11 - при разработке первого стандарта не пришло в светлую голову инженеров идея о том, что за station-infrastructure может находится несколько устройств. Для решения проблемы был придуман режим WDS для базовых станций (читай AP-infrastructure), который использует другой 4-х адресный формат фреймов для «прозрачной» передачи данных (если у вас есть доступ к конфигурированию удалённой точки доступа, там этот режим необходимо включить, равно как и на своём клиентском интерфейсе). Второй вариант решения проблемы, использование, так называемого nat2.5 - подмена исходящего MAC-адреса на клиентском интерфейсе, что позволит спрятать несколько устройств за вашим для удалённой точки доступа. Это реализуется с помощью ebtables (но возможны глюки низкоуровневых протоколов: dhcp, pppoe, etc).

Чтоб не заморачиваться, проще сделать те же два интерфейса, на клиенстком получить айпишник, а на внутреннем (режим AP) раздавать адреса собственных dhcp-сервером. Такой себе роутер-репитер.

nickleiten ★★★
()
Ответ на: комментарий от nickleiten

Это как рисовать Мону Лизу, ничего сложного - краски, холст и 20 минут времени. Высоким именем ITшник себя не называю. Знаю как открывается терминал и технологию корипаст. Либо софтина какая есть?

bagol
() автор топика
Ответ на: комментарий от bagol

Ок, я расписал возможные варианты решения проблемы и причины этих вариантов. Давайте определимся с вводными данными:

Точка доступа, которую нужно «зарпитерить» ваша или чужая?

Вам важно иметь прозрачную сеть или задача стоит раздать интернет на ваши устройства?

nickleiten ★★★
()
Ответ на: комментарий от nickleiten

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

bagol
() автор топика
Ответ на: комментарий от bagol

Ок, тогда поехали.

Первый шаг - Настройка hostapd, wpa_supplicant, dhcpd (правка конфигов). Первый будет светить «внутрь» сети в режиме AP, а второй смотреть на удалённую железку, третий раздёт IP-адреса внутрь. Важный момент, для стабильной работы необходимо знать канал, на котором работает удалённая точка доступа и настроить hostapd на тот же канал (это исключит прыжки по каналам вашего адаптера со всеми задержками и потерями данных). Интерфейс для hostapd будет 'wlan0.ap', а для wpa_supplicant 'wlan0.sta'.

Второй шаг - удаляем старые, создаём необходимые интерфейсы, настраиваем скорость и перезапускаем необходимые демоны. Создаём файл, например, /etc/rc.wlan

#!/bin/bash

#адрес, который будет назначен для интерфейса в режиме AP.
IPADDR="192.168.127.1/24"

#Удаляем все интерфейсы, в имени которых встречается 'wlan0'.
for i in `ip link |grep wlan0|awk '{print $2}'|sed -e 's/:$//'`;do
    ip link set $i down;
    iw $i del;
done

#Добавяем интерфейс в режиме AP
iw phy0 interface add wlan0.ap type __ap

#Добавляем интерфейс в режиме station
iw phy0 interface add wlan0.sta type station

#Ограничиваем скорость передачи на station интерфейсе, чтоб уменьшить потери
iw dev wlan0.sta set bitrates legacy-2.4 6 9 12

#Меняем MAC-адрес интерфейса station, заменяя первый байт на 0xdc а последний на 0xff
ip link set wlan0.sta address `ip link|grep wlan0.sta -A1|tail -n1|awk '{print $2}'|sed -e 's/..$//'|sed -e 's/^..//'|awk '{printf("dc%sff",$1)}'`

#Если в канале будут потери, можно ещё добавить rts и fragmentation threshold - раскомментируй следующие строки
#iw phy0 set rts 256
#iw phy9 set frag 256

#Далее перезапускаем демонов. Сначала убиваем их, потом запускаем.
killall wpa_supplicant -9
killall hostapd -9

#Важно здесь указать правильный путь к конфигурационным файлам обоих команд.
wpa_supplicant -i wlan0.sta -c /etc/wpa_supplicant.conf -B
hostapd -B /etc/hostapd/hostapd.conf

#Назначаем IP-адрес для нашей внутренней сети.
ip addr add $IPADDR brd + dev wlan0.ap

#Получаем адрес по DHCP на интерфейсе station.
dhcpcd wlan0.sta


#Перезапускаем наш DHCP сервер.
killall dhcpd -9
dhcpd -q

Далее, необходима настройка маршрутизации - это менее болезненный вариант в сравнении с прозрачным мостом. Включаем ipv4_forward в /etc/sysctl.conf, или через procfs, или где в убунте оно ещё может указываться. Пишем правила iptables. Например, для маршрутизации создаём файл /etc/rc.forward

#!/bin/bash
echo "1">/proc/sys/net/ipv4_forward
iptables -A FORWARD -i wlan0.ap -o wlan0.sta -j ACCEPT
iptables -A FORWARD -i wlan0.sta -o wlan0.ap -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0.sta -j MASQUERADE

В завершение, делаем эти два файла исполняемыми и прописываем их в /etc/rc.local. Перезапустить связку можно просто запустив /etc/rc.wlan.

PS. не владелец убунты, но этот порядок действий должен работать на любых дистрах с поправкой на пути к конфигурационным файлам. Плюс, можно заменить перезапуск используя механизм перезапуска демонов по-умолчанию (что-то вида /etc/rc.d/dhcp4 restart и т.п.)

nickleiten ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.