Смысл данной статьи: заставить КПК Palm, имеющий интерфейс Bluetooth выходить в интернет через настроенное соединение в Linux. Хотя правильнее будет сказать – заставить Linux раздавать интернет на Palm через Bluetooth.
Итогом всех манипуляций будет это:
Шаг 1
Убедимся, что у нас установлены пакеты ipmasq и dnsmasq:
[source language=’bash’]
apt-get install ipmasq dnsmasq
gksudo gedit /etc/bluetooth/hcid.conf
[/source]
В редакторе ищем строку, определяющую имя Bluetooth на ПК name “%h-%d” и меняем на что-то более осмысленное, например: name “ubuntu”;
Затем строку security user; меняем на security auto. Также убедитесь, что строки auth enable и encrypt enable закомментированы. Сохраняем и закрываем.
Шаг 2
[source language=’bash’]
gksudo gedit /etc/bluetooth/pin
[/source]
Смените 1234 на что-то другое (ЦИФРЫ!), сохраните и закройте.
NB: В моем случае файл открылся пустым, так что я не менял 1234, а просто прописал новый пароль и сохранил. Не пугайтесь.
Шаг 3
[source language=’bash’]
sudo nano /proc/sys/net/ipv4/ip_forward
[/source]
Замените 0 на 1 и сохраните (Ctrl+X, нажмите ‘Y’, нажмите Enter)
Шаг 4
[source language=’bash’]
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
[/source]
NB: Подразумевается, что сетевой интерфейс в Ubuntu, раздающий интернет – eth0, если у вас другой, например, eth1, поменяйте его на свой в вышеприведенной строке
Шаг 5
[source language=’bash’]
sudo iptables -A FORWARD -i ppp0 -j ACCEPT
[/source]
Шаг 6
[source language=’bash’]
sudo iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
[/source]
Шаг 7
Найдем IP нашего DNS-сервера:
[source language=’bash’]
cat /etc/resolv.conf
[/source]
Терминал нам выдаст нечто вроде этого: nameserver 192.168.0.1. Этот IP-адрес и является адресом DNS.
Теперь создадим файл PPP-соединения между Palm и компьютером.
[source language=’bash’]
gksudo gedit /etc/ppp/peers/palm
[/source]
Содержимое palm:
[source language=’bash’]
115200
192.168.2.1:192.168.2.2
local
ms-dns 192.168.0.1
noauth
debug
[/source]
NB: Видите строчку ms-dns 192.168.0.1? Если у вас другой DNS-адрес, его нужно менять именно тут.
Шаг 8
[source language=’bash’]
dund –nodetach –listen –persist –msdun call palm
[/source]
Эта команда запустит демона Bluetooth LAP (Lan access over PPP) в не-демоническом :0) режиме и вы сможете наблюдать процесс Bluetooth-соединения вашего КПК и ПК.
Шаг 9
Теперь настроим Palm:
а) Prefs – Connection – New…
б) Name: LinuxBT (например), Connect to: PC, Via: Bluetooth.
в) Жмите Tap to Find, и из списка выберите свой ПК (помните, мы его назвали для примера ubuntu)
г) Введите свой заданный пароль, нажмите ОК.
д) Идем в Prefs – Network
е) Service: Linux, User Name/Password – пустые, Connection: LinuxBT.
ж) Жмите Connect.
Наш dund будет выводить строки процесса соединения, в моем случае соединение установилось сразу и ничего дополнительно настраивать не пришлось!
Шаг 10
Создадим шелл-скрипт расшаривания интернет-соединения и сделаем так, чтобы он запускался автоматически во время загрузки
[source language=’bash’]
gksudo gedit /etc/init.d/start_bluetooth.sh
[/source]
Содержимое start_bluetooth.sh:
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i ppp0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
killall -v dund
dund --listen --persist --msdun call palm
Сохраним и закроем. Затем выполним:
[source language=’bash’]
sudo chmod -v 755 /etc/init.d/start_bluetooth.sh
sudo ln -sv /etc/init.d/start_bluetooth.sh /etc/rc2.d/S98start_bluetooth
[/source]
Готово!
у меня в свойствах соединения (правой кнопкой по апплету NetworkManager) – eth2,
его и подставлять в
“sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE”?
Относительно “sudo iptables -A FORWARD -i ppp0 -j ACCEPT”.
В gnome-netstatus-applet 2.12.2 соединение имеет имя ppp0.
И при установке connect на Palm в выводе dund ошибка:
“Cannot determine ethernet address for proxy ARP dund”
Может, нужно поменять ppp0 в “sudo iptables -A FORWARD -i ppp0 -j ACCEPT”?
На что?
Михаил, да. В вашем случае нужно eth0 поменять на eth2 везде. Про “Cannot determine ethernet address for proxy ARP dund” – проверьте, установлен ли у вас пакет “ipmasq” и “dnsmasq” (выполните “apt-get install ipmasq dnsmasq”).
Спасибо!
Действительно не было ipmasq
Теперь ошибка:
sudo iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
Bad argument `–state’
Понял: это из- замены — на длинное тире.
Взял команды отсюда:
Блог / Хабрацентр им. alfsoft http://alfsoft.habrahabr.ru/blog/31440/ Thu Dec 25 2008 23:37:51 GMT+0300 (MSK)
sudo iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
Да, да. Сейчас стали слишком умные типографы в движках сайтов, которые заменяют символы на другие. Там должно стоять два знака “-” подряд.
Получилось!
Спасибо, гуру!
А где Вы нашли этот рецепт?
Или сами придумали?
Можно попросить расписать смысл шагов, что делает каждый?
Да, ошибка “Cannot determine ethernet address for proxy ARP” осталась.
Но это не помешало выходу в интернет на Palm.
Очень рад, и не надо тратиться на wi-fi.
Первая неудача была из-за неустановленного ipmasq. И надо определять _своего_ имя сетевого интерфейса.
Еще наблюдение. dund “подвешивает” интернет на десктопе.
И даже ^C, потом dund -K не помогают. приходится перезагружаться.
Как “переключить” интернет без перезагрузки?
Можно ли разделить интернет между Palm’ом и десктопом, есть возможность быть в интернете параллельно?
Серьезно подвис интернет. Перезагрузка не помогала, помогло удаление ipmasq.
Что-то не так?
К сожалению, не знаю. Я тоже собирал мануал из англоязычных источников, переделывал его немного, разбирался в чем-то. Но в вашем случае я не знаю, чем помочь, к сожалению. У меня заработало все нормально с ipmasq.
Подскажите, может вы в курсе как сие под маком провернуть. А то вот как задался вопросом, так вот уже третий день бьюсь все никак не выходит 🙁
Есть Mac OS X, версии 10.5.6 и собственно сам Palm Tungstent T3.
Толи в маке что не так настраиваю, то ли на пальме не то творю 🙂 Скорее первое, потому как коннектить вроде получается, палм пишет signing on, что-то мурыжит, а потом вылетает error: timeout (0x1212), в скобках еще и другой код проскакивал.
Заранее благодарен за любую помощь в решении вопроса.