Как раздать интернет через вторую сетевую карту (wlan0)

18.05.2009, рубрики: how-to | Теги: | 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

  1. booch@alexlinux:~$ su -
  2. Пароль:
  1. root@alexlinux:~# /etc/init.d/NetworkManager stop
  2.  * Stopping network connection manager NetworkManager                       [ OK ]

Диагностика интерфейсов (работают — не работают) что-бы узнать их состояние после отключения Network Manager

  1. root@alexlinux:~# ping mail.ru
  2. ping: unknown host mail.ru
  1. root@alexlinux:~# iwlist wlan0 scan
  2. wlan0     Interface doesn't support scanning : Network is down

Оба интерфейса в дауне.
Получаем IP-адрес для проводного устройства (eth0)

  1. root@alexlinux:~# dhclient eth0
  2. Internet Systems Consortium DHCP Client V3.1.1
  3. Copyright 2004-2008 Internet Systems Consortium.
  4. All rights reserved.
  5. For info, please visit http://www.isc.org/sw/dhcp/
  6. wmaster0: unknown hardware address type 801
  7. wmaster0: unknown hardware address type 801
  8. Listening on LPF/eth0/00:1c:23:92:8e:35
  9. Sending on   LPF/eth0/00:1c:23:92:8e:35
  10. Sending on   Socket/fallback
  11. DHCPREQUEST of 87.69.6.22 on eth0 to 255.255.255.255 port 67
  12. DHCPREQUEST of 87.69.6.22 on eth0 to 255.255.255.255 port 67
  13. DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
  14. DHCPOFFER of 87.69.6.22 from 10.163.160.1
  15. DHCPREQUEST of 87.69.6.22 on eth0 to 255.255.255.255 port 67
  16. DHCPACK of 87.69.6.22 from 10.163.160.1
  17. bound to 87.69.6.22 -- renewal in 36024 seconds.
  1. root@alexlinux:~# ping google.co.il
  2. PING google.co.il (74.125.77.104) 56(84) bytes of data.
  3. 64 bytes from ew-in-f104.google.com (74.125.77.104): icmp_seq=1 ttl=240 time=132 ms
  4. 64 bytes from ew-in-f104.google.com (74.125.77.104): icmp_seq=2 ttl=240 time=137 ms
  5. 64 bytes from ew-in-f104.google.com (74.125.77.104): icmp_seq=3 ttl=240 time=138 ms
  6. ^C
  7. --- google.co.il ping statistics ---
  8. 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
  9. rtt min/avg/max/mdev = 132.410/136.181/138.603/2.735 ms

Интерфйес поднялся, пинг на google прошел
Поднимаем беспроводной интерфейс.

  1. root@alexlinux:~# ifconfig wlan0 up
  2. root@alexlinux:~# ifup wlan0
  3. Ignoring unknown interface wlan0=wlan0.
  4. root@alexlinux:~# iwlist wlan0 scan
  5. wlan0     Scan completed :
  6.           Cell 01 - Address: 00:1B:9E:A3:4A:BA
  7.                     ESSID:"oren"
  8.                     Mode:Master
  9.                     Channel:1
  10.                     Frequency:2.412 GHz (Channel 1)
  11.                     Quality=45/100  Signal level:-80 dBm  Noise level=-70 dBm
  12.                     Encryption key:on
  13.                     IE: Unknown: 00046F72656E
  14.                     IE: Unknown: 010882848B962430486C
  15.                     IE: Unknown: 030101
  16.                     IE: Unknown: 050400010000
  17.                     IE: Unknown: 2A0100
  18.                     IE: Unknown: 2F0100
  19.                     IE: Unknown: 32040C121860
  20.                     IE: Unknown: DD0E0050F204104A0001101044000102
  21.                     IE: Unknown: DD090010180200F0000000
  22.                     IE: WPA Version 1
  23.                         Group Cipher : TKIP
  24.                         Pairwise Ciphers (1) : TKIP
  25.                         Authentication Suites (1) : PSK
  26.                     IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
  27.                     Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
  28.                               24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
  29.                               12 Mb/s; 48 Mb/s
  30.                     Extra:tsf=0000005f41acbc4d
  31.                     Extra: Last beacon: 660ms ago

Интерфейс поднялся. (не обращаем внимание на сеть, главное что поднялся интерфейс)
Создаем беспроводную сеть:

  1. iwconfig wlan0 mode Ad-Hoc channel 1 essid virens

В /etc/network/interfaces пишем что-то вроде:

  1. auto wlan0
  2. iface wlan0 inet static
  3. address 10.106.146.1
  4. netmask 255.255.255.0
  5. wireless-mode ad-hoc
  6. wireless-channel 1
  7. wireless-rate auto
  8. wireless-essid virens

Пробрасываем форвардинг так:

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

или так:

  1. gedit /etc/sysctl.conf
  2. net.ipv4.ip_forward = 1

Теперь делаем NAT так:

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

При этом eth0 это интерфейс, который подключён к Интернету.

Сохраняем настройки NAT:

  1. iptables-save > /etc/iptables.up.rules

добавляем в /etc/networks/interfaces:

  1. pre-up iptables-restore < /etc/iptables.up.rules

Применяем настройки

  1. 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)

как показано на рисунке

Пингуем:

  1. root@alexlinux:~# ping 10.106.146.2
  2. PING 10.106.146.2 (10.106.146.2) 56(84) bytes of data.
  3. 64 bytes from 10.106.146.2: icmp_seq=1 ttl=64 time=2.88 ms
  4. 64 bytes from 10.106.146.2: icmp_seq=2 ttl=64 time=2.90 ms
  5. 64 bytes from 10.106.146.2: icmp_seq=3 ttl=64 time=3.64 ms
  6. 64 bytes from 10.106.146.2: icmp_seq=4 ttl=64 time=3.02 ms
  7. ^C
  8. --- 10.106.146.2 ping statistics ---
  9. 4 packets transmitted, 4 received, 0% packet loss, time 3003ms
  10. rtt min/avg/max/mdev = 2.883/3.116/3.645/0.315 ms

Пробуем выйти с телефона в инет, все должно работать.

Laptop EeePC 900

Подключаемся к сети:

  1. root@annalinux:/home/colibris# ifconfig wlan0 down
  2. root@annalinux:/home/colibris# iwconfig wlan0 mode ad-hoc
  3. root@annalinux:/home/colibris# iwconfig wlan0 channel 1
  4. root@annalinux:/home/colibris# iwconfig wlan0 essid virens
  5. root@annalinux:/home/colibris# ifconfig wlan0 10.106.146.3/24
  6. root@annalinux:/home/colibris# ifconfig wlan0 up

Пингуем раздающий компьютер:

  1. root@annalinux:/home/colibris# ping 10.106.146.1
  2. PING 10.106.146.1 (10.106.146.1) 56(84) bytes of data.
  3. 64 bytes from 10.106.146.1: icmp_seq=1 ttl=64 time=19.5 ms
  4. 64 bytes from 10.106.146.1: icmp_seq=2 ttl=64 time=2.76 ms
  5. 64 bytes from 10.106.146.1: icmp_seq=3 ttl=64 time=3.17 ms
  6. ^C
  7. --- 10.106.146.1 ping statistics ---
  8. 3 packets transmitted, 3 received, 0% packet loss, time 2003ms
  9. rtt min/avg/max/mdev = 2.765/8.489/19.527/7.806 ms

Пингуем iPhone:

  1. root@annalinux:/home/colibris# ping 10.106.146.2
  2. PING 10.106.146.2 (10.106.146.2) 56(84) bytes of data.
  3. 64 bytes from 10.106.146.2: icmp_seq=1 ttl=64 time=9.73 ms
  4. 64 bytes from 10.106.146.2: icmp_seq=2 ttl=64 time=3.69 ms
  5. 64 bytes from 10.106.146.2: icmp_seq=3 ttl=64 time=2.79 ms
  6. ^C
  7. --- 10.106.146.2 ping statistics ---
  8. 3 packets transmitted, 3 received, 0% packet loss, time 2003ms
  9. rtt min/avg/max/mdev = 2.795/5.408/9.734/3.080 ms

Оба отвечают и это значит мы уже имеем сеть из 3-х устройств. Два из которых имеют доступ в интернет, это раздающий и iPhone.
Предоставим выход в интернет третьему устройству netbook EeePC 900

DNS - берем адрес из файла /etc/resolve.conf - раздающего компьютера:

  1. booch@alexlinux:~$ sudo nano /etc/resolv.conf
  2. nameserver 80.179.52.100
  3. nameserver 80.179.55.100
  1. booch@alexlinux:~$sudo /etc/init.d/networking restart
  1. booch@alexlinux:~$ ping mail.ru
  2. PING mail.ru (194.67.57.20) 56(84) bytes of data.
  3. 64 bytes from mail.ru (194.67.57.20): icmp_seq=1 ttl=109 time=163 ms
  4. 64 bytes from mail.ru (194.67.57.20): icmp_seq=2 ttl=109 time=175 ms
  5. ^C
  6. --- mail.ru ping statistics ---
  7. 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
  8. rtt min/avg/max/mdev = 163.605/169.306/175.008/5.716 ms

Теперь доступ в инет в наличии.

Получаю доступ по SSH к первой машине:

  1. root@annalinux:/home/colibris# ssh booch@10.106.146.1
  2. The authenticity of host '10.106.146.1 (10.106.146.1)' can't be established.
  3. RSA key fingerprint is 3b:34:04:ab:18:2f:78:c3:dd:4c:31:47:d8:dc:5b:ba.
  4. Are you sure you want to continue connecting (yes/no)? yes
  5. Warning: Permanently added '10.106.146.1' (RSA) to the list of known hosts.
  6. booch@10.106.146.1's password:
  7. Linux alexlinux 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686
  8. The programs included with the Ubuntu system are free software;
  9. the exact distribution terms for each program are described in the
  10. individual files in /usr/share/doc/*/copyright.
  11. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
  12. applicable law.
  13. To access official Ubuntu documentation, please visit:
  14.  
  15. http://help.ubuntu.com/
  16.  
  17. 53 packages can be updated.
  18. 27 updates are security updates.
  19. Last login: Sun May 17 19:54:13 2009 from annalinux.local
  20. booch@alexlinux:~$

Доступ получен
Отключаемся.

Передаю с EeePC 900 файлик с настройками что-бы запостить на сайте.

  1. root@annalinux:/home/colibris/Рабочий стол# scp adhoc.txt booch@10.106.146.1:~/
  2. booch@10.106.146.1's password:
  3. adhoc                                         100% 2614     2.6KB/s   00:00

Это все.
Получили сеть из 3-ех разных устройств. Но все три устройства имеют прямое сообщение друг с другом и выход в интернет.

Откат настроек
Отключаем форвардинг:

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

Отключаем NAT:

  1. sudo iptables -t nat -F

Отключаем все правила в iptables:

  1. sudo iptables -F

Запускаем Network Manager:

  1. sudo /etc/init.d/Network Manager start

За сим все. Все предыдущие настройки отменены.


5 комментариев на запись “Как раздать интернет через вторую сетевую карту (wlan0)”

  1. 1 Дмитрий сказала в 6:32, 21.07.2009:

    А что здесь нуно изменить, чтобы wifi-сеть раздачи получилась с паролем?

  2. 2 admin сказала в 12:19, 21.07.2009:

    Вот пример настройки
    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

  3. 3 sf2k10 сказала в 22:35, 24.12.2009:

    привет. спасибо за пост. но!
    а как быть если на этапе «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.

  4. 4 admin сказала в 16:14, 25.12.2009:

    ; Device or resource busy. – устройство занято.
    сделай:
    #ifconfig wlan0 down
    #ifdown wlan0

    посмотри какой процесс висит на данном устройстве

  5. 5 maxim сказала в 16:23, 10.01.2010:

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


Оставить комментарий

  • Доступные теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">

  • *