Май 18 2009

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

Как расширить домашнюю сеть устройств и обеспечить их всех интернетом, не затрачивая на это средств? Это легко сделать в том случае, если у вас есть один компьютер (лэптоп) с двумя сетевыми картами подключенный к интернету. В случае с лэптопом, то их там точно две, одна – это сетевая, для проводного соединения и вторая это для беспроводного соединения. В ПК же можно доставить вторую сетевую карту. Я буду рассматривать первый случай. Т.е. перенаправив входящий интернет на беспроводную карточку и начав передавать его, вы сможете подключить любое устройство, будь то телефон, КПК, смартфон, нетбук, лэптоп. Как это сделать, ниже.

В качестве эксперимента я решил оформить статью не в виде пошагового руководства, а запостить прямиком все мои действия с консоли со всей сопровождающей информацией. Сопроводив это все скришотами и комментариями.

Плюс ко всему, небольшая прогулка по 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
2
booch@alexlinux:~$ su - 
Пароль:
1
2
root@alexlinux:~# /etc/init.d/NetworkManager stop
 * Stopping network connection manager NetworkManager                       [ OK ]

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.
1
2
3
4
5
6
7
8
9
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 прошел
Поднимаем беспроводной интерфейс.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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

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

1
iwconfig wlan0 mode Ad-Hoc channel 1 essid virens

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

1
2
3
4
5
6
7
8
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

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

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

или так

1
gedit /etc/sysctl.conf
1
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
2
3
4
5
6
7
8
9
10
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

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

1
2
3
4
5
6
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

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

1
2
3
4
5
6
7
8
9
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

1
2
3
4
5
6
7
8
9
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 – раздающего компьютера

1
2
3
booch@alexlinux:~$ sudo nano /etc/resolv.conf 
nameserver 80.179.52.100
nameserver 80.179.55.100
1
booch@alexlinux:~$sudo /etc/init.d/networking restart
1
2
3
4
5
6
7
8
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 к первой машине

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 файлик с настройками что-бы запостить на сайте.

1
2
3
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-ех разных устройств. Но все три устройства имеют прямое сообщение друг с другом и выход в интернет.

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

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

Отключаем NAT

1
iptables -t nat -F

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

1
iptables -F

Запускаем Network Manager

1
/etc/init.d/Network Manager start

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

Viewed 1301 times by 535 viewers

Комментарии (5)

  • By Дмитрий, 21 Июль 2009 @ 6:32

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

  • By admin, 21 Июль 2009 @ 12:19

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

  • By sf2k10, 24 Декабрь 2009 @ 22:35

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

  • By admin, 25 Декабрь 2009 @ 16:14

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

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

  • By maxim, 10 Январь 2010 @ 16:23

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

Other Links to this Post

RSS-лента комментариев к этой записи. TrackBack URI

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

CAPTCHA image