
В настоящее время порты Ethernet в здании, где я работаю, отключены, но Wi-Fi работает. У меня есть ноутбук с поддержкой Wi-Fi (Убунту 14.04LTS (Trusty Tahr)) и рабочая станция без поддержки Wi-Fi (Дебиан 8(Джесси)) только с Ethernet-разъемом.
Можно ли соединить их через кабель Ethernet и получить сетевое подключение на рабочей станции?
решение1
Да, вы можете это сделать, и это даже не так уж и сложно. У меня есть ноутбук с беспроводной картой и портом Ethernet. Я подключил к нему RapberryPi с Arch Linux через "перекрестный" кабель Ethernet. Это одна из специальных вещей, которая вам может понадобиться - не все карты Ethernet могут делать прямое соединение машина-машина.
Другая сложная часть — IP-адресация. Лучше всего это проиллюстрировать. Вот мой небольшой скрипт настройки. Опять же, enp9s0 — это порт ethernet ноутбука, а wlp12s0 — беспроводное устройство ноутбука.
#!/bin/bash
/usr/bin/ip link set dev enp9s0 up
/usr/bin/ip addr add 172.16.1.1/24 dev enp9s0
sleep 10
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
iptables -A FORWARD -o enp9s0 -i wlp12s0 -s 172.16.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
dhcpd -cf /etc/dhcpd.enp9s0.conf enp9s0
Скрипт устанавливает статический IP-адрес для карты Ethernet, 172.16.1.1, затем настраивает NAT, загружая модуль ядра. Он включает маршрутизацию IP (на ноутбуке), затем делает какую-то iptables
полумагию, чтобы направить пакеты с беспроводной карты в Ethernet и наоборот.
Я dhcpd
запустил порт Ethernet для выдачи IP-адресов, потому что именно этого хочет Raspberry Pi, но вы можете настроить статический адрес на своей рабочей станции вместе со статической маршрутизацией, DNS-сервером и NTP-сервером.
Файл /etc/dhcpd.enp9s0.conf
выглядит так, на всякий случай, если вы пойдете по этому пути:
option domain-name "subnet";
option domain-name-servers 10.0.0.3;
option routers 172.16.1.1;
option ntp-servers 10.0.0.3;
default-lease-time 14440;
ddns-update-style none;
deny bootp;
shared-network intranet {
subnet 172.16.1.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
pool { range 172.16.1.50 172.16.1.200; }
}
}
Выбор IP-адреса довольно критичен. Я использовал 172.16.1.0/24 для кабеля Ethernet, выходящего из ноутбука. Беспроводная карта на ноутбуке заканчивается на 192.161.1.0/24. Вам нужно посмотреть, какой IP-адрес имеет беспроводная сеть ноутбука, и выбрать какую-то другую подсеть для карты Ethernet. Далее, вам нужно выбрать одну из «bogon» или «non-routable» сетей. В моем примере 172.16.1.0/24 из официальных немаршрутизируемых диапазонов IP-адресов, как и 192.168.1.0/24, а также адрес 10.0.0.3, который dhcpd.enp9s0.conf
выдает DNS-сервер и NTP-сервер. Вам придется использовать свою голову, чтобы выяснить, что подходит для вашей настройки.
решение2
Возможно ли это? Конечно. Все, что вам нужно сделать, это настроить IP-пересылку, или маршрутизацию, или какой-то другой (простой) способ перемещения пакетов из порта Ethernet на ноутбуке в WiFi на ноутбуке и наоборот. Это хорошая идея? Вероятно, нет — ваши сетевые администраторы могут немного расстроиться из-за вас.
решение3
Согласно Википедии, если один из портов Ethernet гигабитный, то подойдет обычный кабель, кроссировка не нужна, у меня гигабит с обеих сторон, и обычный кабель работает.
Вопрос задан в 2016 году, поэтому я предполагаю, что Network Manager запущен на обеих машинах Linux, вы можете использовать его графический интерфейс для настройки IP-адресов. Если нет, вы, вероятно, сделали пользовательскую настройку и знаете, как настроить IP из командной строки, поэтому я опущу эти подробности.
После подключения с помощью кабеля в графическом интерфейсе вы увидите имена сетевых интерфейсов, относящихся к Ethernet на ноутбуке и рабочей станции.
Если вас не волнует периодическое подключение рабочей станции (и/или ноутбука по Ethernet) к другому сетевому оборудованию, вы можете настроить статический IP-адрес на обоих интерфейсах Ethernet.
Установите статический IP-адрес, отличный от подсети для Wi-Fi, например, если Wi-Fi — 192.168.1.0/16, установите 192.168.2.1 и 192.168.2.2, маска подсети — 255.255.255.0, поскольку отличается только последняя «цифра» IP-адреса, DNS на рабочей станции должен быть установлен на тот же DNS IP, что и для Wi-Fi на ноутбуке, чтобы можно было использовать DNS (открывать сайты по имени, а не только по IP-адресу) на рабочей станции.
Вам необходимо включить IP-переадресацию на ноутбуке:
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
Так как весьма вероятно, что ваш сетевой менеджер на ноутбуке считает Ethernet более качественным, чем Wi-Fi, он попытается отправить все на него по умолчанию, и вы потеряете интернет после настройки Ethernet. Чтобы вернуться к использованию Wi-Fi, на ноутбуке вам нужно в разделе [ipv4] файла, относящегося к подключению Ethernet (имя, которое вы видите в графическом интерфейсе сетевого менеджера для Ethernet), в расположении /etc/NetworkManager/
добавить строку
never-default=true
(если в вашем графическом интерфейсе есть что-то вроде флажка «Использовать только для ресурсов этого подключения» для Ethernet — у меня он находится в разделе ip4 свойств подключения, вы можете использовать его).
И наконец, если правила ваших IP-таблиц по умолчанию остаются ПРИНИМАЮЩИМИ ВСЕ, ваши пакеты с рабочей станции будут отправляться в Интернет, но не найдут пути обратно, направляясь только на ноутбук, пока вы не настроите правило NAT на ноутбуке одной командой (где eth0 должно быть именем вашего Wi-Fi-подключения, вы можете узнать имя по ссылке sudo ifconfig
):
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Если после этого ничего не помогло, попробуйте перезапустить сетевой менеджер:
sudo service network-manager restart
Все должно быть готово.