Manjaro Linux

Русское сообщество

Расшарить интернет.

Если не знаете где задать вопрос, смело задавайте тут

Расшарить интернет.

Сообщение dimonmmk » 15 июл 2014, 06:29

Многие новички теряются, не зная с чего начать и в какую сторону копать.
Пуск -> Настройка -> Сетевые подключения -> правой кнопкой... Это все знают. :)
А в Linux-е все не так. Проще или сложнее... Как посмотреть.


Исходные:
1. Есть комп, подключенный к интернет через сотовый модем-"свисток". Или как-то иначе, неважно. И есть еще один сетевой интерфейс (обычно встроенная сетевуха).
2. Есть ноут или другой комп, которому нужно дать выход в интернет.
3. Купить роутер жаба душит, да и ни к чему он постоянно- другие компы в доме появляются только время от времени. Зато есть патчкорды и старый хаб или свитч. Или скрестный кабель на худой конец.

Задача:
1. Сделать так чтобы гость пришедший в дом со своим ноутбуком, мог без лишних телодвижений залезть в свой фейсбук или куда там ему надо, пользуясь вашим подключением. Ну или смог согнать какое-то файло со своего ноута в ваш комп. Или обратно.
2. Иметь возможность включить эту схему в любой момент. Постоянно держать ее включенной ни к чему. Внутренняя сетевуха тоже пусть зря не моргает- будем включать ее по мере надобности.

Что нам для этого нужно:
1. NAT. Чтобы пакеты ходили из локалки в интернет и обратно.
2. DHCP на внутреннем интерфейсе. Чтобы ноут гостя автоматом получал настройки для доступа в интернет. И в локалку заодно.

Стазу скажу- всё это можно сделать изящнее и грамотнее. Но тупо неохота заморачиваться, будем проще. Кто скажет "squid"- тот зануда. :)

Что у нас в Manjaro уже есть:
Network Manager.
Открываем его и назначаем внутреннему интерфейсу статический IP. Допустим, 192.168.1.1 Ну и маску стандартную- 255.255.255.0 Шлюз и DNS не указываем.

Чего не хватает в Manjaro:
Возможно, пакетов iptables и dhcp. Ставим любым способом (pamac, pacman, octopi, без разницы). Если уже есть- отлично...

Включаем форвардинг в ядре:
Открываем от рута файл /etc/sysctl.d/30-ipforward.conf
Убеждаемся, что в нем есть строка "net.ipv4.ip_forward=1" Если нет, или нет самого файла- создаем.
Мой файл выглядит так:
Код: Выделить всё
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1


Настраиваем DHCP:
Открываем от рута файл /etc/dhcpd.conf
Вставляем в него строки:
Код: Выделить всё
default-lease-time 21600;
max-lease-time 43200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers первый DNS, второй DNS;

subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.10 192.168.1.100;
}

Да, знаю, я пишу в старой нотации. И что? Работает же.
Адреса DNS берем такие же как на нашем внешнем интерфейсе или ставим свои, любимые. Не обязательно же пользоваться DNS провайдера, верно?

Включаем демон:
Код: Выделить всё
systemctl enable dhcpd

Хотя можно и без этого.

В терминале командой "nmcli c" смотрим UUID нашего внутреннего интерфейса, запоминаем его. Он выглядит примерно так: 8be94788-b573-4db0-bd27-ab87ca68e137

Создаем скрипт запуска. ppp0 и enp1s0 меняем на имена своих внешних и внутренних интерфейсов. Имена можно посмотреть через "Сведения о соединении" в Network Manager'e.
Код: Выделить всё
#!/bin/sh
# включаем сетевуху
sudo nmcli con up uuid здесь вставляем UUID нашего внутреннего интерфейса
# пауза, пусть карта включится...
sleep 2
# включаем NAT
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
sudo iptables -A FORWARD -i enp1s0 -o ppp0 -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# чтоб не забыть: # sudo iptables -F Clean rules  # sudo iptables -S Wiev rules
# пауза, пусть NAT стартует...
sleep 5
# включаем DHCP ###(если нет автостарта демона. У меня- нет.)
sudo dhcpd
# Выводим  на рабочий стол сообщение о запуске
sudo notify-send -i network-transmit-receive "Включен NAT, включен сервер DHCP."


Делаем скрипт исполняемым, создаем в удобном месте на панели или на рабочем столе иконку запуска скрипта.
Собственно, все.
Когда понадобится дать гостям доступ в интернет- просто щелкаем по иконке и вводим свой пароль.
Последний раз редактировалось dimonmmk 15 июл 2014, 11:33, всего редактировалось 1 раз.
Аватара пользователя
dimonmmk
 
Автор темы
Сообщения: 604
Зарегистрирован: 10 июл 2014, 19:08
Откуда: 57° 3'51.28" 36° 1'43.38"
Благодарил (а): 14 раз.
Поблагодарили: 134 раз.

Re: Расшарить интернет.

Сообщение AlexTalker » 15 июл 2014, 18:37

Мде, а в NetworkManager просто создать еще одно соединение....
Аватара пользователя
AlexTalker
 
Сообщения: 32
Зарегистрирован: 30 июн 2014, 22:21
Откуда: Hell
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.

Re: Расшарить интернет.

Сообщение manjarqo » 15 июл 2014, 18:41

AlexTalker писал(а):Мде, а в NetworkManager просто создать еще одно соединение....

как показывает практика networkmanager не всегда работает так как хотелось бы, посему dimonmmkу
спасибо огромное за отличный мануал :good:
Аватара пользователя
manjarqo
Администратор
 
Сообщения: 407
Зарегистрирован: 30 июн 2014, 15:36
Откуда: Краснодар
Благодарил (а): 51 раз.
Поблагодарили: 64 раз.

Re: Расшарить интернет.

Сообщение dimonmmk » 16 июл 2014, 22:04

AlexTalker писал(а):Мде, а в NetworkManager просто

Он (NM) у меня столько раз слетал на разных дистрибутивах что я ему как-то не очень доверяю. Хотя и пользуюсь- удобно, чо. В последние полгода вроде бы глюков не было, кстати. <dimonmmk стучит по дереву> Поэтому держу в загашнике скрипты для поднятия всех своих соединений в обход NM. Привычка уже.
Аватара пользователя
dimonmmk
 
Автор темы
Сообщения: 604
Зарегистрирован: 10 июл 2014, 19:08
Откуда: 57° 3'51.28" 36° 1'43.38"
Благодарил (а): 14 раз.
Поблагодарили: 134 раз.


Вернуться в Уголок новичка



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1