- Как работает раздача интернета с Linux?
- Что такое NAT, Masquerade и SNAT? Или как Linux маскирует свои намерения
- Настройка iptables — охранника вашей сети
- Что такое dropped packets, overruns и прочие страшные слова?
- Можно ли раздать интернет через Network Manager без «копания в конфигах»?
- Как настроить интерфейсы и что значат все эти prefixlen, txqueuelen и mtu?
- Ошибки при раздаче интернета: где чаще всего спотыкаются
- Как сделать настройки постоянными?
- Итоговая шпаргалка: как раздать интернет через Linux
- FAQ: часто задаваемые вопросы
- Советы для суперсчастливого раздачи интернета
Представьте: у вас есть два компьютера — один с Windows, другой с Linux (скажем, Arch), и вы хотите, чтобы Windows-сервер интернет «раздавал» через кабель второму. Или ноутбук с вайфаем должен раздать интернет на стационарный комп по проводу. Казалось бы — дело плёвое, воткнул кабель и всё работает? Не тут-то было! Сетевые настройки — это как сломанный аккордеон, играешь на нём, а звук то странный, то совсем пропадает.
В этой статье мы подробно разберём, как настроить локальную сеть с общим доступом к интернету через Linux, объясним понятия IP forwarding, NAT, iptables, и даже поднимем тему ошибок dropped packets и overruns. Всё просто и понятно, даже если вы не знаете, что такое prefixlen или txqueuelen!
Как работает раздача интернета с Linux?
Первое, что нужно понять — Linux в роли роутера должен уметь перенаправлять пакеты между интерфейсами. Если представить интернет как реку, то Linux — это мост, по которому вода (данные) должна свободно течь из одного берега (внешний интерфейс, например Wi-Fi) на другой (внутренний интерфейс, например Ethernet).
Для этого есть системная опция — IP forwarding. Без неё пакетам запрещено перепрыгивать с одного интерфейса на другой.
Включение IP forwarding
Чтобы разрешить Linux быть мостом для интернета, выполните команду:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Это включит пересылку пакетов на лету. Но после перезагрузки настройки сойдут на нет, поэтому добавьте или раскомментируйте строку в /etc/sysctl.conf:
net.ipv4.ip_forward=1
Теперь ваш Linux готов к тому, чтобы быть «проводником» интернет-пакетов.
Что такое NAT, Masquerade и SNAT? Или как Linux маскирует свои намерения
Допустим, ваш Linux-мост подключен к интернету через Wi-Fi, а внутренний компьютер находится в локальной сети. Внешний провайдер видит только ваш Linux с одним IP-адресом, а не все внутренние компьютеры. Как Linux это делает? Через NAT (Network Address Translation) — трансляцию сетевых адресов.
Masquerade (маскарадинг)
Это особый вид NAT, который подменяет адрес отправителя у пакетов из внутренней сети на внешний IP вашего Linux. Настраивается так:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Где wlan0 — внешний интерфейс, по которому идёт интернет.
SNAT (Source NAT)
Если у вас статический IP и хотите более точный контроль, можно использовать SNAT:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to-source 192.168.1.100
Где 192.168.1.100 — IP вашего внешнего интерфейса.
Настройка iptables — охранника вашей сети
iptables — это как таможня на границе, которая пропускает только нужные пакеты. Чтобы раздать интернет, нужно разрешить пересылку и настроить правила маскарадинга. Вот минимальный набор:
| Действие | Команда |
|---|---|
| Включить маскарадинг на внешнем интерфейсе | sudo iptables -t nat -A POSTROUTING -o <внешний интерфейс> -j MASQUERADE |
| Разрешить пересылку пакетов | sudo iptables -A FORWARD -i <внутренний интерфейс> -o <внешний интерфейс> -j ACCEPT |
| Разрешить обратный трафик | sudo iptables -A FORWARD -i <внешний интерфейс> -o <внутренний интерфейс> -m state --state RELATED,ESTABLISHED -j ACCEPT |
Без этих правил интернет просто не «пройдёт» на внутренний компьютер.
Что такое dropped packets, overruns и прочие страшные слова?
Если смотреть на статистику интерфейса через ifconfig или ip -s link, можно увидеть столбцы dropped, errors, overruns. Это — счётчики проблем с пакетами.
- Dropped (отброшенные пакеты) — пакеты, которые интерфейс не смог обработать. Представьте, как если в магазин пришло слишком много покупателей, а кассир не успевает всех обслужить.
- Errors (ошибки) — пакеты с повреждёнными данными.
- Overruns — переполнение буфера интерфейса.
Если видите много dropped — возможно, нагрузка слишком высокая, или неправильные настройки драйвера.
Можно ли раздать интернет через Network Manager без «копания в конфигах»?
Многие пользователи хотят волшебной кнопки «раздать интернет» в Network Manager — чтобы не лезть в терминал и не запоминать iptables. К сожалению, на практике это не всегда работает просто.
Network Manager умеет создавать общий доступ к интернету, но часто сталкивается с конфликтами IP-адресов, ошибками в маскарадинге и неправильной настройкой DHCP-сервера. В Windows всё просто: поставил галочку — и всё работает. В Linux — чаще всего придется «руками» настраивать маршрутизацию и iptables.
Как настроить интерфейсы и что значат все эти prefixlen, txqueuelen и mtu?
Команда ifconfig -a или ip addr покажет все параметры сетевых интерфейсов. Вот кратко:
| Параметр | Что значит? | Аналогия |
|---|---|---|
| inet | IP-адрес интерфейса | Адрес дома |
| netmask | Маска подсети, например 255.255.255.0 | Граница района |
| broadcast | Широковещательный адрес подсети | Мегафон для всех соседей |
| prefixlen | Количество бит в маске сети, например 24 | Как много улиц в районе |
| txqueuelen | Размер очереди исходящих пакетов | Очередь на кассу |
| MTU | Максимальный размер пакета (обычно 1500 байт) | Максимальный размер посылки |
| RX/TX packets | Получено/отправлено пакетов | Количество писем в ящике |
| dropped/errors/overruns | Проблемы с пакетами | Забракованные посылки |
Ошибки при раздаче интернета: где чаще всего спотыкаются
- Не включен IP forwarding — пакеты не идут вообще.
- Неправильно настроен iptables — пакеты блокируются или адреса не трансформируются.
- Конфликты IP-адресов — внутренние устройства получают одинаковые адреса или неправильные шлюзы.
- Неправильный интерфейс в командах — перепутали
wlan0иeth0. - Настройки DHCP не настроены — внутренний компьютер не получает IP или настройки сети.
- Network Manager конфликтует с ручными настройками — не стоит совмещать оба способа.
Как сделать настройки постоянными?
Команды iptables и включение ip_forward сбрасываются при перезагрузке. Есть несколько способов сохранить настройки:
- Добавить нужные команды в скрипт
/etc/rc.local(до строкиexit 0). - Использовать специализированные сервисы и скрипты для iptables (например,
iptables-persistent). - Изменить
/etc/sysctl.confдля IP forwarding.
Итоговая шпаргалка: как раздать интернет через Linux
| Шаг | Команда/Действие |
|---|---|
| Включить пересылку пакетов | echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward и net.ipv4.ip_forward=1 в /etc/sysctl.conf |
| Настроить NAT маскарадинг | sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE |
| Разрешить форвардинг | sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT и sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT |
| Сохранить настройки | Добавить команды в /etc/rc.local или использовать iptables-persistent |
| Проверить интерфейсы | ifconfig или ip addr |
| Проверить наличие dropped/errors | ifconfig или ip -s link |
FAQ: часто задаваемые вопросы
Можно ли раздать интернет, не лезя в настройки и терминал?
Чисто через Network Manager иногда можно, но часто придётся делать ручные настройки, чтобы всё работало надёжно.
Почему пинг есть, а интернета нет?
Часто из-за неправильных правил iptables или отсутствия NAT.
Что делать, если dropped packets растут?
Проверить нагрузку, качество кабелей, возможно, драйвера.
Можно ли использовать SNAT вместо MASQUERADE?
Да, если у вас статический IP и хотите более контролируемую трансляцию.
Советы для суперсчастливого раздачи интернета
- Всегда делайте резервную копию конфигураций перед изменениями.
- Используйте
sudo iptables -L -vдля проверки правил. - Не смешивайте ручную настройку и Network Manager.
- Помните, что «пакет» — это как посылка с данными, и если её потерять — интернет не работает.
- И наконец, не бойтесь экспериментировать — сетевые настройки в Linux как кулинария: иногда нужно добавить специи, чтобы получился шедевр!
Вот и всё, теперь вы можете с гордостью сказать, что сделали Linux роутером и раздали интернет друзьям, соседям и даже бабушке по USB-кабелю! Пусть пакеты текут рекой, а dropped пакеты уйдут в прошлое!