Вопрос
Есть ли общий сценарий, который передает Wi-Fi через Ethernet с сервера Ubuntu на другой (у которого нет карты Wi-Fi)? я видел этот вопрос (и это, и это) решает его для версии с графическим интерфейсом с помощью щелчков мыши, и я подумал, что смогу предотвратить повторное изобретение колеса, если эквивалентный скрипт уже существует.
Серверная часть (CLI-работа)
Найдена урезанная версия этого скрипта на GitHub, в сочетании с инструкциями по этот сайт работал на стороне сервера.
судо нано /etc/sysctl.conf
Раскомментировать (можно сделать с помощью судо тройник
команда в скрипте):
сеть.ipv4.ip_forward=1
Сохранить с ctrl+s
, ctrl+х
. Перезагрузите с помощью:
судо sysctl -p /etc/sysctl.conf
Создайте следующий скрипт с именем share_wifi.sh
:
lan_device="eth0"
онлайн_устройство = "wlan0"
iptables -t nat -A POSTROUTING -o $online_device -j MASQUERADE
iptables -A FORWARD -i $online_device -o $lan_device -m состояние --state СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A FORWARD -i $lan_device -o $online_device -j ПРИНЯТЬ
Сделайте его работоспособным и запустите его с помощью:
chmod +x share_wifi.sh
судо ./share_wifi.sh
Затем я сохранил локальный IP-адрес «сервера», выполнив:
имя хоста -я
Который вернул что-то вроде 123.145.16.18 415.141.14.15
, я сохранил первый возвращенный IP-адрес.
Клиентская сторона (только GUI)
Тем не менее, я установил клиентский компьютер вручную, используя графический интерфейс вместо CLI. Сначала я пробовал команды CLI, но эти возвращали ошибки:
sudo ip route del default
sudo ip route добавить по умолчанию через <ip шлюза>
судо нано /etc/resolv.conf
И добавил: сервер имен 8.8.8.8
, сохранил его с ctrl+s
, ctrl+х
.
Это не обеспечивало доступ в Интернет к устройству, поэтому я попробовал решение с ручным / графическим интерфейсом, которое сработало:
Я щелкнул в верхнем правом символе Wi-Fi/LAN на проводные настройки
, нажал на вкладку: IPv4
, нажал на Метод IPv4
и в этом разделе нажал на Руководство
. Далее в разделе Адреса
Я заполнил:
Адрес:123.145.16.55
Сетевая маска: 255.255.255.0
Шлюз: 123.145.16.18
- Примечание в
Адрес
Я ввел случайный IP-адрес в том же
формат/диапазон в качестве локального IP-адреса сервера. Так, например,
сервер имел: 123.145.16.18
и я выбрал 123.145.16.55
, Я думаю я
повезло, что этот IP еще не был занят другим устройством.
- Примечание в
Сетевая маска
Я ввел значение по умолчанию/стандартное значение.
- Примечание в
Шлюз
Я ввел локальный IP-адрес сервера, который я записал ранее с помощью имя хоста -я
команда.
Затем я нажал «Применить», и все, клиентский компьютер автоматически подключился к Интернету.
Поэтому я стремлюсь автоматизировать последний шаг. В идеале, автоматически обнаружив клиентский компьютер через ssh, войдя в систему и запустив на нем скрипт с хост-компьютера, который в основном устанавливает это ручное подключение к хосту. В противном случае используйте два отдельных сценария, один для хоста, другой для клиента.