Как раздать интернет через вторую сетевую карту (wlan0)
18.05.2009, рубрики: how-to | Теги: network | 5 комментариев »
Как расширить домашнюю сеть устройств и обеспечить их всех интернетом, не затрачивая на это средств? Это легко сделать в том случае, если у вас есть один компьютер (лэптоп) с двумя сетевыми картами подключенный к интернету. В случае с лэптопом, то их там точно две, одна – это сетевая, для проводного соединения и вторая это для беспроводного соединения. В ПК же можно доставить вторую сетевую карту. Я буду рассматривать первый случай. Т.е. перенаправив входящий интернет на беспроводную карточку и начав передавать его, вы сможете подключить любое устройство, будь то телефон, КПК, смартфон, нетбук, лэптоп. Как это сделать, ниже.
В качестве эксперимента я решил оформить статью не в виде пошагового руководства, а запостить прямиком все мои действия с консоли со всей сопровождающей информацией. Сопроводив это все скришотами и комментариями.
Плюс ко всему, небольшая прогулка по google.co.il дала понять, что часто люди спрашивают, а как отменить все изменения, как вернуть все к исходному состоянию, по этому в этой статье я так же покажу как откатить все изменения.
Поехали…
- Есть сетевая карта(eth0) в ноутбуке(главный далее) которая подключена с помощью провода к ADSL-модему и получает интернет.
- Есть вторая беспроводная сетевая карта(wlan0) которая ничем не занята и просто-так простаивает.
Задача.
Раздать интернет получаемый картой eth0 на вторую карту wlan0 и дать возможность другим устройствам(смартфоны, КПК, ноутбуки) подключаться к вещаемой сети и выходить в Интернет.
Решение.
Нам необходимо пробросить с помощью NAT интернет на устройство wlan0. Присвоить ему IP-адресное пространство и подключить другое устройство.
NAT (от англ. Network Address Translation — «преобразование сетевых адресов») — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Также имеет названия IP Masquerading, Network Masquerading и Native Address Translation.
NAT выполняет две важных функции.
1.Позволяет сэкономить IP-адреса, транслируя несколько внутренних IP-адресов в один внешний публичный IP-адрес (или в несколько, но меньшим количеством, чем внутренних).
2.Позволяет предотвратить или ограничить обращение снаружи ко внутренним хостам, оставляя возможность обращения изнутри наружу. При инициации соединения изнутри сети создаётся трансляция. Ответные пакеты, поступающие снаружи, соответствуют созданной трансляции и поэтому пропускаются. Если для пакетов, поступающих снаружи, соответствующей трансляции не существует (а она может быть созданной при инициации соединения или статической), они не пропускаются.
Все действия проделываем от root
- booch@alexlinux:~$ su -
- Пароль:
- root@alexlinux:~# /etc/init.d/NetworkManager stop
- * Stopping network connection manager NetworkManager [ OK ]
Диагностика интерфейсов (работают — не работают) что-бы узнать их состояние после отключения Network Manager
- root@alexlinux:~# ping mail.ru
- ping: unknown host mail.ru
- root@alexlinux:~# iwlist wlan0 scan
- wlan0 Interface doesn't support scanning : Network is down
Оба интерфейса в дауне.
Получаем IP-адрес для проводного устройства (eth0)
- root@alexlinux:~# dhclient eth0
- Internet Systems Consortium DHCP Client V3.1.1
- Copyright 2004-2008 Internet Systems Consortium.
- All rights reserved.
- For info, please visit http://www.isc.org/sw/dhcp/
- wmaster0: unknown hardware address type 801
- wmaster0: unknown hardware address type 801
- Listening on LPF/eth0/00:1c:23:92:8e:35
- Sending on LPF/eth0/00:1c:23:92:8e:35
- Sending on Socket/fallback
- DHCPREQUEST of 87.69.6.22 on eth0 to 255.255.255.255 port 67
- DHCPREQUEST of 87.69.6.22 on eth0 to 255.255.255.255 port 67
- DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
- DHCPOFFER of 87.69.6.22 from 10.163.160.1
- DHCPREQUEST of 87.69.6.22 on eth0 to 255.255.255.255 port 67
- DHCPACK of 87.69.6.22 from 10.163.160.1
- bound to 87.69.6.22 -- renewal in 36024 seconds.
- root@alexlinux:~# ping google.co.il
- PING google.co.il (74.125.77.104) 56(84) bytes of data.
- 64 bytes from ew-in-f104.google.com (74.125.77.104): icmp_seq=1 ttl=240 time=132 ms
- 64 bytes from ew-in-f104.google.com (74.125.77.104): icmp_seq=2 ttl=240 time=137 ms
- 64 bytes from ew-in-f104.google.com (74.125.77.104): icmp_seq=3 ttl=240 time=138 ms
- ^C
- --- google.co.il ping statistics ---
- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
- rtt min/avg/max/mdev = 132.410/136.181/138.603/2.735 ms
Интерфйес поднялся, пинг на google прошел
Поднимаем беспроводной интерфейс.
- root@alexlinux:~# ifconfig wlan0 up
- root@alexlinux:~# ifup wlan0
- Ignoring unknown interface wlan0=wlan0.
- root@alexlinux:~# iwlist wlan0 scan
- wlan0 Scan completed :
- Cell 01 - Address: 00:1B:9E:A3:4A:BA
- ESSID:"oren"
- Mode:Master
- Channel:1
- Frequency:2.412 GHz (Channel 1)
- Quality=45/100 Signal level:-80 dBm Noise level=-70 dBm
- Encryption key:on
- IE: Unknown: 00046F72656E
- IE: Unknown: 010882848B962430486C
- IE: Unknown: 030101
- IE: Unknown: 050400010000
- IE: Unknown: 2A0100
- IE: Unknown: 2F0100
- IE: Unknown: 32040C121860
- IE: Unknown: DD0E0050F204104A0001101044000102
- IE: Unknown: DD090010180200F0000000
- IE: WPA Version 1
- Group Cipher : TKIP
- Pairwise Ciphers (1) : TKIP
- Authentication Suites (1) : PSK
- IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
- Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
- 24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
- 12 Mb/s; 48 Mb/s
- Extra:tsf=0000005f41acbc4d
- Extra: Last beacon: 660ms ago
Интерфейс поднялся. (не обращаем внимание на сеть, главное что поднялся интерфейс)
Создаем беспроводную сеть:
- iwconfig wlan0 mode Ad-Hoc channel 1 essid virens
В /etc/network/interfaces пишем что-то вроде:
- auto wlan0
- iface wlan0 inet static
- address 10.106.146.1
- netmask 255.255.255.0
- wireless-mode ad-hoc
- wireless-channel 1
- wireless-rate auto
- wireless-essid virens
Пробрасываем форвардинг так:
- echo 1 > /proc/sys/net/ipv4/ip_forward
или так:
- gedit /etc/sysctl.conf
- net.ipv4.ip_forward = 1
Теперь делаем NAT так:
- iptables -t nat -A POSTROUTING --out-interface eth0 -j MASQUERADE
При этом eth0 это интерфейс, который подключён к Интернету.
Сохраняем настройки NAT:
- iptables-save > /etc/iptables.up.rules
добавляем в /etc/networks/interfaces:
- pre-up iptables-restore < /etc/iptables.up.rules
Применяем настройки
- root@alexlinux:~# /etc/init.d/networking restart
Берем ваше устройство, в моем случае это
1) iPhone
2) netbook EeePC 900
iPhone
Заходим «Настройки» - «WI-FI» и вводим следующие
Адрес: IP 10.106.146.2 (непосредственно адрес устройства)
Маска подсети: 255.255.255.0 (Маска)
Маршрутизатор: 10.106.146.1 (это наш NAT, а именно адрес беспроводной карточки wlan0 на галвном комьютере)
DNS 80.179.52.100: (Адрес DNS должен быть от того интерфейса, который обеспечивает выход в сеть - иначе говоря, содержимое /etc/resolv.conf)
как показано на рисунке


Пингуем:
- root@alexlinux:~# ping 10.106.146.2
- PING 10.106.146.2 (10.106.146.2) 56(84) bytes of data.
- 64 bytes from 10.106.146.2: icmp_seq=1 ttl=64 time=2.88 ms
- 64 bytes from 10.106.146.2: icmp_seq=2 ttl=64 time=2.90 ms
- 64 bytes from 10.106.146.2: icmp_seq=3 ttl=64 time=3.64 ms
- 64 bytes from 10.106.146.2: icmp_seq=4 ttl=64 time=3.02 ms
- ^C
- --- 10.106.146.2 ping statistics ---
- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms
- rtt min/avg/max/mdev = 2.883/3.116/3.645/0.315 ms
Пробуем выйти с телефона в инет, все должно работать.

Laptop EeePC 900
Подключаемся к сети:
- root@annalinux:/home/colibris# ifconfig wlan0 down
- root@annalinux:/home/colibris# iwconfig wlan0 mode ad-hoc
- root@annalinux:/home/colibris# iwconfig wlan0 channel 1
- root@annalinux:/home/colibris# iwconfig wlan0 essid virens
- root@annalinux:/home/colibris# ifconfig wlan0 10.106.146.3/24
- root@annalinux:/home/colibris# ifconfig wlan0 up
Пингуем раздающий компьютер:
- root@annalinux:/home/colibris# ping 10.106.146.1
- PING 10.106.146.1 (10.106.146.1) 56(84) bytes of data.
- 64 bytes from 10.106.146.1: icmp_seq=1 ttl=64 time=19.5 ms
- 64 bytes from 10.106.146.1: icmp_seq=2 ttl=64 time=2.76 ms
- 64 bytes from 10.106.146.1: icmp_seq=3 ttl=64 time=3.17 ms
- ^C
- --- 10.106.146.1 ping statistics ---
- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms
- rtt min/avg/max/mdev = 2.765/8.489/19.527/7.806 ms
Пингуем iPhone:
- root@annalinux:/home/colibris# ping 10.106.146.2
- PING 10.106.146.2 (10.106.146.2) 56(84) bytes of data.
- 64 bytes from 10.106.146.2: icmp_seq=1 ttl=64 time=9.73 ms
- 64 bytes from 10.106.146.2: icmp_seq=2 ttl=64 time=3.69 ms
- 64 bytes from 10.106.146.2: icmp_seq=3 ttl=64 time=2.79 ms
- ^C
- --- 10.106.146.2 ping statistics ---
- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms
- rtt min/avg/max/mdev = 2.795/5.408/9.734/3.080 ms
Оба отвечают и это значит мы уже имеем сеть из 3-х устройств. Два из которых имеют доступ в интернет, это раздающий и iPhone.
Предоставим выход в интернет третьему устройству netbook EeePC 900
DNS - берем адрес из файла /etc/resolve.conf - раздающего компьютера:
- booch@alexlinux:~$ sudo nano /etc/resolv.conf
- nameserver 80.179.52.100
- nameserver 80.179.55.100
- booch@alexlinux:~$sudo /etc/init.d/networking restart
- booch@alexlinux:~$ ping mail.ru
- PING mail.ru (194.67.57.20) 56(84) bytes of data.
- 64 bytes from mail.ru (194.67.57.20): icmp_seq=1 ttl=109 time=163 ms
- 64 bytes from mail.ru (194.67.57.20): icmp_seq=2 ttl=109 time=175 ms
- ^C
- --- mail.ru ping statistics ---
- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
- rtt min/avg/max/mdev = 163.605/169.306/175.008/5.716 ms
Теперь доступ в инет в наличии.
Получаю доступ по SSH к первой машине:
- root@annalinux:/home/colibris# ssh booch@10.106.146.1
- The authenticity of host '10.106.146.1 (10.106.146.1)' can't be established.
- RSA key fingerprint is 3b:34:04:ab:18:2f:78:c3:dd:4c:31:47:d8:dc:5b:ba.
- Are you sure you want to continue connecting (yes/no)? yes
- Warning: Permanently added '10.106.146.1' (RSA) to the list of known hosts.
- booch@10.106.146.1's password:
- Linux alexlinux 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686
- The programs included with the Ubuntu system are free software;
- the exact distribution terms for each program are described in the
- individual files in /usr/share/doc/*/copyright.
- Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
- applicable law.
- To access official Ubuntu documentation, please visit:
- http://help.ubuntu.com/
- 53 packages can be updated.
- 27 updates are security updates.
- Last login: Sun May 17 19:54:13 2009 from annalinux.local
- booch@alexlinux:~$
Доступ получен
Отключаемся.
Передаю с EeePC 900 файлик с настройками что-бы запостить на сайте.
- root@annalinux:/home/colibris/Рабочий стол# scp adhoc.txt booch@10.106.146.1:~/
- booch@10.106.146.1's password:
- adhoc 100% 2614 2.6KB/s 00:00
Это все.
Получили сеть из 3-ех разных устройств. Но все три устройства имеют прямое сообщение друг с другом и выход в интернет.
Откат настроек
Отключаем форвардинг:
- echo 0 > /proc/sys/net/ipv4/ip_forward
Отключаем NAT:
- sudo iptables -t nat -F
Отключаем все правила в iptables:
- sudo iptables -F
Запускаем Network Manager:
- sudo /etc/init.d/Network Manager start
За сим все. Все предыдущие настройки отменены.


А что здесь нуно изменить, чтобы wifi-сеть раздачи получилась с паролем?
Вот пример настройки
1 комп
—————————————
sudo /etc/init.d/NetworkManager stop
—————————————
sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode ad-hoc
sudo iwconfig wlan0 channel 6
sudo iwconfig wlan0 key 1234567890
sudo iwconfig wlan0 essid test
sudo ifconfig wlan0 169.254.34.1
sudo ifconfig wlan0 up
2 комп
—————————————
sudo /etc/init.d/NetworkManager stop
—————————————
sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode ad-hoc
sudo iwconfig wlan0 channel 6
sudo iwconfig wlan0 key 1234567890
sudo iwconfig wlan0 essid test
sudo ifconfig wlan0 169.254.34.2
sudo ifconfig wlan0 up
Проверка работы
ping 169.254.34.1
ping 169.254.34.2
привет. спасибо за пост. но!
а как быть если на этапе «iwconfig wlan0 mode Ad-Hoc channel 1 essid sf2k10
выдаёт ошибку: Error for wireless request «Set Mode» (8B06) :
SET failed on device wlan0 ; Device or resource busy.
; Device or resource busy. – устройство занято.
сделай:
#ifconfig wlan0 down
#ifdown wlan0
посмотри какой процесс висит на данном устройстве
спасибо. А как можно сделать публичнцю сеть? ну я у себя в городе захожу в торговый центр, а там компьютер сам автоматически к wi-fi подключается.