Пуск -> Настройка -> Сетевые подключения -> правой кнопкой... Это все знают. :)
А в 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."
Делаем скрипт исполняемым, создаем в удобном месте на панели или на рабочем столе иконку запуска скрипта.
Собственно, все.
Когда понадобится дать гостям доступ в интернет- просто щелкаем по иконке и вводим свой пароль.