Как раздать интернет с ноутбука linux

Обновлено: 04.07.2024

В этой заметке будет рассказано как с помощью iptables настроить системы с Ubuntu и Debian для раздачи интернета другим компьютерам локальной сети. На простом примере будет показано как машину с двумя сетевыми интерфейсами (в один поступает интернет, из другого — «выходит») сделать шлюзом.

Допустим, что аппаратно-сетевая часть уже полностью настроена, на вашей машине имеются работоспособный интернет и вы видите другие компьютеры сети. Поэтому давайте разберемся что к чему, для этого введем команду:

(с Debian 9 эта команда устарела, используйте ip a вместо нее)

Она выдаст список работающих в данный момент сетевых интерфейсов. Среди них надо опознать те, что начинаются со слов «Link encap:Ethernet» — это интерфейсы сетевых карт. Как правило, это eth0 и eth1.
Теперь потребуется опознать в какой из них поступает интернет, а из какого «выходит». Проще всего это сделать по их ip-адресам.
Итак, допустим через eth0 вы получаете интернет (например через adsl-модем по протоколу ppp), а eth1 связывает вас с локальной сетью.
Если локальная сеть настроена через Network Manager, то мы рекомендуем прописать эти настройки непосредственно в системном конфигурационном файле сети:

sudo nano /etc/network/interfaces

Здесь исправьте настройки вашего сетевого интерфейса, подключенного к локальной сети (в нашем случае eth1), соответствующим образом:

auto eth1
iface eth1 inet static
address 192.168.0.10
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

Значение address — это айпи вашей машины в локальной сети, по этому адресу собственно и будет располагаться шлюз.
Значение netmask — в локальных сетях для этого диапазона чаще всего такая. Для других диапазонов можно вычислить здесь.
Значения network и broadcast будут зависеть от вашего адреса. То есть, если ваш локальный ip — 10.0.0.10, то network и broadcast будут 10.0.0.0 и 10.255.255.255 соответственно.

Либо, это можно проделать всего одной командой:

sudo ifconfig eth1 192.168.0.10

Эта команда самостоятельно настроит вашу сетевую карту eth1 на использование статичного айпи-адреса, и самостоятельно пропишет описанные выше настройки в файл /etc/network/interfaces

В любом случае, после этих изменений перезапустите networking:

sudo /etc/init.d/networking restart

проверьте, что изменения вступили в силу и все работает.

Теперь осталось дело за малым. В случае если вы уже пытались настроить вашу систему шлюзом, но у вас не получилось или по каким-то другим причинам вы желаете обнулить все настройки файрвола iptables, то это можно сделать следующими командами:

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain

Если прямой необходимости в сбросе настроек iptables нет, то лучше этого не делать.

Следующие команды настроят ваш iptables для NAT-трансляции (NAT, Network Address Translation — «преобразование сетевых адресов») через Ubuntu-шлюз:

sudo iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE

Если необходимые вам сетевые интерфейсы отличаются от eth0 и eth1, то просто измените первую строку соответствующим образом.
Если ваша локальная сеть находится вне диапазона 192.168.x.x, то маску подсети для указания в первой строке вы сможете легко вычислить через сервис Network Calculators.

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

И последний штрих: надо отредактировать файл sysctl.conf:

sudo nano /etc/sysctl.conf

Добавьте в него вот эти две строки для активации роутинга:

В Debian 9 достаточно добавить (раскомментрировать) всего одну строку:

После этого ваш интернет-шлюз готов к работе. Можете настраивать клиентские машины. На нашем примере для них gateway будет 192.168.0.10

Если все внесенные вами изменения работают корректно и вы желаете внести эти настройки в автозагрузку (а именно, вышеприведенные настройки iptables теряют активность после перезагрузки системы), то сохраните нынешнюю рабочую конфигурацию iptables в файл командой:

sudo sh -c "iptables-save > /etc/iptables.up.rules"

То есть оно станет примерно такого вида:

Только не меняйте значения в строке iface, просто добавьте указанную строку последней в разделе auto eth0 (ну или какого-то другого сетевого интерфейса). После этого при перезагрузке сохраненные настройки iptables будут подниматься автоматически.

Если вы хотите добавить к этому автоматическую раздачу адресов (dhcp) и прокси, то воспользуйтесь для этого, например, вот этой инструкцией.

В этой инструкции я покажу очень простой способ создания своей собственной Wi-Fi сети. После установки необходимой программы и её зависимостей, вы сможете создавать беспроводные точки доступа одной командой — никакой правки конфигурационных файлов и прописывания маршрутов. Благодаря большому количеству опций достижима практически такая же гибкость как и при «ручном» поднятии Wi-Fi сети.

Для этого мы будем использовать программу create_ap. Она представляет собой скрипт, который автоматизирует и значительно упрощает настройку всех необходимых программ и настройку маршрутизации трафика. Установим её следующими командами.

Ubuntu, Linux Mint, Debian, Kali Linux

ArchLinux

Gentoo

Для запуска беспроводной точки доступа с create_ap достаточно знать только имена интерфейсов. Вы можете посмотреть их командой:

Имена моих интерфейсов wlan0 и eth0.

Теперь просто запустите create_ap:

Если вы не знаете, какой из ваших интерфейсов является беспроводным, то запустите команду

Эта команда выведет названия только беспроводных интерфейсов.

Если вы уже подключены к беспроводной сети, то вам нужно отключить от неё Wi-Fi адаптер, который вы хотите превратить в точку доступа.

Примеры настройки беспроводной точки доступа (Wi-Fi)

В следующих примерах я создаю точку доступа с названием MyAccessPoint.

Создание открытой Wi-Fi сети (без пароля):

sudo create_ap wlan0 eth0 MyAccessPoint

WPA + WPA2 пароль, где MyPassPhrase для подключения к беспроводной точке доступа:

Точка доступа без предоставления Интернет-доступа:

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

Интернет с подключением по мосту (мостовой интерфейс заранее настроен):

Раздача интернета с этого же WiFi интерфейса:

Выбор другого драйвера WiFi адаптера:

Без пароля (открытая сеть) с передачей параметров по трубе:

WPA + WPA2 пароль с передачей данных по трубе:

Включение IEEE 802.11n

Изоляция клиентов:

Запуск как системной службы

Использование постоянной системной службы systemd.

Немедленный запуск службы:

Запуск при загрузке системы:

С другими опциями вы сможете ознакомиться на этой страничке.

Выбор беспроводной карты для Wi-Fi точки доступа

Я проводил свои тесты и самый лучший результат показала двухдиапазонная карта Alfa AWUS052NH. Она поддерживает протокол n, имеет две антенны и работает на длинные дистанции — дальше и с более надёжной связью чем многие роутеры.

В бюджетных ноутбуках часто используются беспроводные сетевые адаптеры от компании Broadcom. Если в Windows не возникает никаких проблем при создании точки доступа на карте практически любого производителя, то в Linux про точку доступа мы уже не говорим, просто подключиться к сети через WiFi может вызвать очень серьезные затруднения. Правда, в последнее время ситуация немного улучшилась.

В этой инструкции мы рассмотрим как создать точку доступа Wifi Ubuntu, на примере карты на карте Broadcom. В других дистрибутивах действия и настройки будут похожие, только файлы и команды установки могут немного отличаться. Мы разберемся как сделать точку доступа wifi через графический интерфейс и в терминале.

Подготовка к созданию точки доступа

Для карт Broadcom есть четыре драйвера: стандартный и по умолчанию включенный b43, входящие в состав ядра brcmsmac и brcmfmac, а также проприетарный драйвер broadcom linux под названием wl. Сразу скажу что проприетарный драйвер совсем никудышный, так как не поддерживает не только режим точки доступа, но и неразборчивый режим тоже.

Стандартный b43 и brcmfmac для карты B4313 не подходят потому что не работают в режиме точки доступа, хотя эти уже поддерживают режим монитора. Посмотреть поддерживает ли ваш драйвер режим точки доступа (Master Mode) можно на этой странице. Остается только brcmsmac, который можно заставить раздать wfi linux. Сначала разберемся с драйверами ядра. Теперь, когда мы определились что будем использовать, перейдем к настройке broadcom linux. Смотрим какой драйвер загружен:

Если есть вот такие строчки, то все хорошо и драйвер загружен правильно:

brcmsmac 497481 0
cordic 1024 1 brcmsmac
brcmutil 4596 1 brcmsmac

Но если загружен b43 или broadcom-wl их нужно удалить. Например, для b43:

И запустить brcmsmac:

sudo modprobe brcmsmac

Лучше полностью удалить проприетарный драйвер broadcom linux из системы если он установлен и добавить в черный список ненужные драйверы, оставив только brcmsmac. Чтобы при перезагрузке грузился только он, для этого добавляем такие строчки в файл /etc/modprobe.d/50-blacklist.conf:

sudo vi /etc/modprobe.d/50-blacklist.conf

blacklist b43
blacklist b43-legacy

Для сетевых карт других производителей, вам следует сначала попробовать раздавать Wifi и только если не получится пробовать использовать другой драйвер.

Настройка точки доступа Wifi в Ubuntu

Чтобы создать точку доступа Ubuntu сначала нужно кликнуть по значку сети в правом верхнем углу и выбрать Параметры Wifi:


В открывшемся меню кликните по кнопке бутерброда и выберите Включить точку доступа:


Перед активацией компьютер предупредит вас, что вы не сможете подключится к интернету по Wifi если включёна точка доступа:


Затем покажет имя сети и пароль от неё, который создаётся автоматически:


Используя эти данные вы можете подключится к только что созданной точке доступа. Всё должно работать. Отключить её можно здесь же, надо только кликнуть по соответствующему переключателю.

Настройка точки доступа вручную

Для того чтобы раздать Wifi вручную нам понадобится пакет hostapd. Установите его командой:

sudo apt install hostapd

Стандартная конфигурация программы нам не подойдет, поэтому оригинальный конфигурационный файл переименовываем и создаем вот такой:

sudo vi /etc/hostapd/hostapd.conf

interface=wlp3s0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
macaddr_acl=1
ssid=LosstAccessPoint
hw_mode=g
channel=7
macaddr_acl=0
auth_algs=3
ieee80211n=1
wmm_enabled=1
eap_server=0
eap_message=hello
eapol_key_index_workaround=0
own_ip_addr=127.0.0.1
wpa=2
wpa_passphrase=your_password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP TKIP
rsn_pairwise=CCMP

Здесь и далее wlp3s0 - ваш сетевой интерфейс wifi адаптера. В поле ssid укажите желаемое имя точки доступа, в wpa_passphrase - пароль.

Сервис файл hostapd по умолчанию замаскирован, его нужно розмаскировать, для этого выполните:

sudo systemctl unmask hostapd

Затем в конфигурационном файле /etc/default/hostapd в строчке DAEMON_CONF добавьте путь к конфигурационному файлу:

sudo vi /etc/default/hostapd

С настройкой hostapd все, но запускать точку доступа еще рано, я бы даже сказал очень рано. Перейдем к конфигурации сетевого интерфейса. Нам нужно задать статический ip, DNS, режим и еще несколько настроек. Для этого идем в /etc/network/interfaces и добавляем следующие строки:

auto wlp3s0
iface wlp3s0 inet static
address 10.10.0.1
netmask 255.255.255.0

Это нужно в том числе для того, чтобы NetworkManager не трогал сетевой интерфейс Wifi. После сохранения настроек перезапустите компьютер. Осталось настроить DHCP сервер для раздачи IP пользователям, которые будут подключаться к нашей сети. Для этого используем dnsmasq:

sudo apt install dnsmasq

После установки открываем конфигурационный файл и добавляем туда несколько строк, чтобы программа слушала интерфейс wlp3s0, и выдавала адреса в диапазоне 10.10.0.x:

sudo vi /etc/dnsmasq/dnsmasq.conf

dhcp-range=10.10.0.2,10.10.0.255,255.255.255.0,12h
interface=wlp3s0
listen-address=127.0.0.1
dhcp-host=00:0f:00:5a:b6:42,10.10.0.1
cache-size=300
dhcp-authoritative
server=8.8.8.8
no-resolv
address=/backbone/10.10.0.1
dhcp-option=3,10.10.0.1
dhcp-option=1,255.255.255.0
log-queries
log-dhcp

ip addr list | grep wlp3s0

В выводе команды ищите параметр link:

Осталось настроить iptables для пропускания трафика и настроить автозагрузку всего этого, но предлагаю пойти другим путем. Мы напишем скрипт, которым можно будет в любой момент раздать Wifi в Linux, а также остановить раздачу. Вот сам скрипт:

sudo vi /usr/local/bin/wifi_access_point.sh

После сохранения скрипта дайте ему права на выполнение:

sudo chmod ugo+x /usr/local/bin/wifi_access_point.sh

И вот только теперь можно тестировать. Для чтобы раздать Wifi Ubuntu используйте:

sudo /usr/local/bin/wifi_access_point.sh start

А для остановки:

sudo /usr/local/bin/wifi_access_point.sh stop

Вы можете добавить этот скрипт в автозагрузку, чтобы настройка точки доступа wifi linux выполнялась автоматически.

Выводы

Вот и все. Теперь вы знаете как выполняется настройка точки доступа Ubuntu и сможете раздать Wifi на своем компьютере или ноутбуке. Это довольно сложный процесс, но если разобраться, то вполне можно выполнить. Если у вас остались вопросы, спрашивайте в комментариях!

В этой статье будет описано как сделать точку доступа wifi используя ОС Ubuntu 12.04. Инструкция, шаг за шагом. Хотя в основном народ интересует вопрос как сделать ноутбук точкой доступа wifi, на самом деле не имеет значения будет ли это ноутбук или обычный стационарный компьютер. Создание точки доступа wifi одинаково в обоих случаях.

Если у вас Ubuntu 14.04 тогда читайте другую статью: Настройка точки доступа WiFi на Ubuntu 14.04

Аналогичные статьи для других операционных систем:

Но для начала немного теории.

Что такое WiFi

Аббревиатура WiFi (вай-фай) расшифровывается так: Wireless Fidelity (беспроводная привязанность). WiFi это передача сетевых данных по радиоканалу. Чаще всего wifi используется для "раздачи" Интернет. Для этих целей WiFi используется в различных общественных местах - кафе, ресторанах, вокзалах, торговых центрах. Но в последние год-два wifi роутеры стали активно устанавливать в квартирах. Это объясняется тем, что сегодня у людей много мобильных устройств с которых можно выходить в Интернет - ноутбуки, планшетники, смартфоны, нетбуки. И часто wifi не только самый удобный способ подключения такого устройства к Интернет, но и единственно возможный. Например на планшетах и смартфонах нет старых сетевых адаптеров Ethernet, так, что через кабель их нельзя подключить к сети.

Хотя wifi чаще всего используется для раздачи Интернет, тем не менее ничто не мешает построить обычную локальную сеть через wifi. И кстати в некоторых офисах это делают, поскольку установить один wifi роутер (точку доступа) это дешевле и проще чем прокладывать сетевые кабели UTP. Домашняя wifi сеть позволяет не только получать Интернет через wifi на все устройства, но и удобно обмениваться различной информацией - можно легко копировать фотографии со смартфона на компьютер или ноутбук. Или музыку с компьютера на смартфон. Не нужно возиться с различными USB кабелями.

Спецификации WiFi описываются международным стандартом 802.11. Существует деление на режимы, по скорости доступа которую могут обеспечить устройства стандарта 802.11:

  • 802.11а - скорости от 6 до 54 мегабит в секунду.
  • 802.11b - скорости от 1 мегабита в секунду до 11 мегабит в секунду.
  • 802.11g - скорости от 6 до 54 мегабит в секунду.
  • 802.11n - скорость до 150 мегабит в секунду по одной антенне, а если используется четыре антенны, то до 600 мегабит в секунду.

Наиболее распространены сейчас устройства которые поддерживают wifi режимы 802.11 b и g. В спецификациях таких устройств так и пишут - 802.11b/g. В последние пару лет основная масса устройств выпускается с поддержкой трех режимов wifi - 802.11b/g/n. Режим 802.11а используется редко и несовместим с b и g.

Что такое точка доступа

Это обычный сетевой роутер, только передающий сетевые пакеты по радиосигналу стандарта 802.11. Выполяет те же функции, что и простой сетевой роутер - присвоить подключаемому устройству IP адрес, передать ему сетевые настройки и далее обеспечить передачу сетевых пакетов от этого устройства к другим устройствам сети (маршрутизацию).

Получаемый Интернет wifi роутер раздает через WiFi.

Как создать точку доступа WiFi на Ubuntu 12.04

Нам нужно на основе ubuntu 12.04 создать программный wifi роутер, который будет получать Интернет каким-либо способом и сможет раздать этот Интернет по wifi.

Что нам понадобиться.

  • ubuntu 12.04.
  • Нестарый wifi адаптер. Например для этой статьи использовался USB wifi адаптер TP-Link TL-WN722NC.
  • Соединение с Интернет. Для этой статьи было использовано Ethernet соединение через оператора Ростелеком. Но это может быть например и МТС (USB модем МТС). И любое другое соединение - PPPoE, VPN, Dail-Up, WiFi.

sudo apt-get install hostapd dnsmasq

После завершения установки нужно остановить службы этих программ:

  • sudo update-rc.d hostapd disable
  • sudo update-rc.d dnsmasq disable

Далее отредактировать три файла:

1) sudo gedit /etc/dnsmasq.conf :

  • bind-interfaces
  • interface=wlan0
  • dhcp-range=192.168.10.2,192.168.10.5

Примечание. В примере (параметр dhcp-range) указан короткий диапазон, всего на 4 адреса, что означает - к этой точке доступа смогут подключиться только 4 клиента. Если вам необходимо подключать большее количество клиентов тогда расширьте этот диапазон.

2) sudo gedit /etc/hostapd.conf :

3) sudo gedit /etc/NetworkManager/NetworkManager.conf :

dns=dnsmasq эту строку закомменитровать или удалить.

После редактирования NetworkManager.conf нужно перезапустить nm:

sudo restart network-manager

После этого создать два скрипта. Для запуска точки доступа и для остановки.

Запускать скрипты нужно будет через sudo или gksu. Удобнее запускать в консоли, поскольку в этом случае будет видно подключенных к точке доступа клиентов.

Управление точкой доступа

Узнать состояние точки доступа на Ubuntu 14.04

Узнать о том, запущена точка доступа или нет, можно командой


Наличие интерфейса mon.wlan0, а также присвоенный IP-адрес интерфейсу wlan0 это индикатор, того, что точка доступа работает.

Узнать клиентов точки доступа на Ubuntu 14.04

Узнать о подключенных к точке доступа клиентах можно командой:

В выводе команды нужно смотреть по названию интерфейса wlan0:

(192.168.150.5) 58:12:43:6f:2d:bc [ether] на wlan0

Или можно скачать скрипт ap-clients, извлечь из архива и запустить его:

Вывод скрипта показывает клиентов подключенных к точке доступа:

192.168.150.5 android-73d63f2392091d87 58:12:43:6f:2d:bc

Примечание 1

Если при первом запуске скрипта будет ошибка dnsmasq: failed to create listening socket for 127.0.0.1, тогда нужно сделать:

sudo netstat -anp | grep -i listen | grep 53

Вывод будет примерно такой:

tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 6877/dnsmasq

Это процесс запущенный через Network Manager. Его нужно прибить: sudo kill 6877

Примечание 2

Если вы получаете Интернет не с Ethernet в скриптах укажите свой интерфейс. Ну и пароль конечно поставьте посложнее чем 12345678. Да не забудьте, что минимальная длина пароля для WPA2 равна 8 символов.

Читайте также: