понедельник, декабря 29, 2008

Проброс интернета через два компа на КПК


Как всегда, захотелось странного. А именно чтобы интернет мог работать одновременно на трёх компьютерах. На домашнем компьютере, ибо он раздаёт торренты 24/7. На ноутбуке, ибо использую как рабочий комп, ну и плюс в нём wifi есть, чтобы давать интернет на КПК. Ну и КПК, лежать в кроватке и пользовать интернет.


Всё опять же не просто, а очень просто. Хотя для многих не очевидно, посему хочу поделиться готовым рецептом.

Конкретно имеем следующую цепочку:
ADSL router--Wire-->Computer--Wire-->Laptop--Wireless-->PDA

ADSL: всё стандартно. Настроен роутером, DHCP выключено, т.е. адрес на компьютере настраиваем статически. Адрес роутера как обычно 192.168.1.1.

Computer: тут имеем две сетевых карточки. Одна для соединения с роутером, вторая с ноутбуком. Соответственно настраиваем два интерфейса, eth0 и eth1 у меня. Настройки:

eth0(выдержка из /etc/network/interfaces):
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 195.5.61.70 195.5.61.68
dns-search netserverdomaineth1(выдержка из /etc/network/interfaces):

eth1(выдержка из /etc/network/interfaces):

allow-hotplug eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0

Здесь опять же важный момент. Должен быть включен ip-форвардинг и маскарадинг в iptables:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE

Laptop: опять же ничего сложного. Снова два интерфейса, для второго новая подсеть для wifi-интерфейса. Настройки(тут уже из Arch Linux, посему имеют немного иной вид):
eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
wlan0="wlan0 192.168.20.1 netmask 255.255.255.0 broadcast 192.168.20.255"
wlan_wlan0="wlan0 essid Wifi"
INTERFACES=(eth0 wlan0)
gateway="default gw 192.168.0.1"
ROUTES=(gateway)

Здесь стоит обратить внимание на wlan_wlan0="wlan0 essid Wifi" это мы сходу имеем настроенную AD-Hoc точку, без шифрования. Для /etc/network/interfaces это выглядит примерно вот так:

auto wlan0
iface wlan0 inet static
address 192.168.20.1
netmask 255.255.255.0
wireless-mode ad-hoc
wireless-channel 1
wireless-rate auto
wireless-essid Wifi

Вот так и получаем интернет сразу на трёх девайсах. Зачем? Это уже личное дело каждого. Мне вот нужно. Может есть ещё кто с такими потребностями.



P.S. С Windows на ноутбуке такую цепочку не осилил. Как-то там всё это непонятно организовано...
Linux и Broadcomm BCM94311MCG WLAN mini-PCI

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


Настройка данного девайса(он внутри ноутбука, если что) по пунктам:

  1. Не трогайте драйвер bcm43xx и b43 и десятиметровой палкой! Завестись-то они завелись, а вот работать не работают. Хотя делают вид, что работают. По крайней мере создать точку Ad-Hoc к которой КПК даже мог приконнектиться. Хотя опять же только с одним делением индикатора сети на WM 5.0, при том, что по-хорошему должны быть все 4. Да и вообще сеть не заработала всё равно.
  2. Используем ndiswrapper(на основе вот этого хауту, только попроще):
    • устанавливаем ndiswrapper, я использовал версию 1.53
    • качаем драйвер например отсюда
    • tar -zvpf WLANBroadcomm.tar.gz
    • cd ./WLANBroadcomm
    • sudo ndiswrapper -i bcmwl5.inf
    • ndiswrapper -l
    • добавляем модуль в автозагрузку модулей, тут уж дистроспецифично, я например добавил !b43 !bcm43xx ndiswrapper в секцию MODULES в /etc/rc.conf, потому что ArchLinux, впрочем для разовой настройки и проверки работоспособности это не важно
    • sudo modprobe ndiswrapper
    • sudo ndiswrapper -m
    • Собственно всё!
  3. Теперь настроим простейшую точку доступа, для проверки работоспособности карточки(кому-то проще наоборот, но у меня в районе десятка километров точками доступа и не пахнет), проверял я с помощью КПК на винмобайл, посему настройки для него тоже будут:
  • для сетевого интерфейса wifi ставим такие настройки: wlan0(конечно если у вас он так называется, смотреть в ifconfig -a) 192.168.20.1, netmask 255.255.255.0, broadcast 192.168.20.255, как это сделать личное дело каждого, я настроил в rc.conf
  • потом тушим его: sudo ifcofig wlan0 down, ну так, на всякий пожарный :)
  • настраиваем саму точку доступа, простейшую, без шифрования: sudo iwconfig wlan0 mode Ad-Hoc channel 1 essid Wifi
  • поднимаем интерфейс обратно: sudo ifcofig wlan0 up
  • на кпк настраиваем wifi как 192.168.20.2, 255.255.255.0, gateway 192.168.20.1, DNS прописываем провайдерские, у меня это 195.5.61.70, 195.5.61.68
  • Пользуемся интернетом на КПК.
Вот собственно и всё, кому помогло - счастливчик, кто похвалит - молодец :)