- Вопрос или проблема
- На Windows,
- На Linux,
- Ответ или решение
- Как поделиться интернетом с Windows с помощью Linux?
- Шаг 1: Подготовка к работе
- Шаг 2: Настройка Linux для совместного использования интернета
- Шаг 3: Настройка Windows для использования интернета
- Шаг 4: Тестирование подключения
- Как совместить интернет от Windows к Linux?
- Заключение
Вопрос или проблема
У меня есть ПК с Linux (Ubuntu 12.04), подключенный к интернету через USB-модем Greenpacket WiMax. Я хочу поделиться интернет-соединением с другим компьютером, работающим на Windows 7 Home Premium, который подключен к ПК с Linux по LAN. Это возможно? Как? Возможен ли обратный вариант (подключение интернета к компьютеру с Windows и sharing его с Linux)?
Вам нужно настроить NAT на машине с Linux. В сети есть множество руководств, если вы ищете NAT и iptables, возможно, включая вашу дистрибуцию.
Вот несколько строк из немецкого руководства по Ubuntu:
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i eth1 -s 192.168.0.0/16 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Поместите их в то место, где они будут выполняться при запуске (/etc/rc.local или добавьте “up” перед каждой строкой и вставьте всё в /etc/network/interfaces) и замените eth0 на сетевое устройство, которое подключено к интернету, а eth1 на то, что идет к вашей LAN.
Вам также может понадобиться вручную указать некоторым серверам имен (DNS) на вашем компьютере с Windows, если вы не хотите настраивать bind
на машине с Linux. И я надеюсь, что у вас нет или вы уже имеете DHCP-сервер в вашей LAN.
Вопрос заключается в том,
Возможен ли обратный вариант
(подключение интернета к компьютеру с Windows и sharing его с Linux)?
Вот как вы можете поделиться своим интернет-соединением с Windows на Linux.
На Windows,
-
Убедитесь, что общий доступ к интернету включен.
- Перейдите в Панель управления, найдите сетевое соединение,
затем щелкните правой кнопкой мыши на интернет-адаптере и выберите “Свойства”. - Нажмите “Дополнительно”.
- Там же щелкните по радиокнопке, чтобы включить общий доступ к интернету.
- Перейдите в Панель управления, найдите сетевое соединение,
-
На Windows 7:
- Перейдите в Панель управления → “Центр управления сетями и общим доступом”.
(Возможно, вам нужно будет пройти через “Сеть и интернет”, чтобы попасть туда.) - Щелкните на “Изменить параметры адаптера”.
- Щелкните правой кнопкой мыши на сетевом адаптере и выберите “Свойства”.
Введите пароль администратора, если будет запрошено. - Перейдите на вкладку “Общий доступ” и включите общий доступ.
- Перейдите в Панель управления → “Центр управления сетями и общим доступом”.
На Linux,
С правами root (sudo
или su
),
-
Введите это, чтобы установить шлюз по умолчанию:
route add default gw x.x.x.x
(Примечание: замените x.x.x.x на локальный IP-адрес хоста Windows.
Вы можете найти его, набрав:ipconfig -all
в командной строке Windows.) -
Затем введите это, чтобы установить DNS:
echo "nameserver y.y.y.y" > /etc/resolv.conf
(Примечание: замените y.y.y.y на адрес DNS-сервера в Windows.
Вы можете найти его, набрав:ipconfig -all
в командной строке Windows.)
В этом сценарии Windows уже подключен к интернету.
После всей настройки вы можете попробовать использовать интернет с Linux.
Хосты Linux и Windows
должны иметь возможность одновременно использовать интернет.
Чтобы подключить компьютер с Linux к компьютеру с Windows (для получения интернета), вам нужно работающее LAN (Ethernet) соединение – как было сказано в моем первом сообщении здесь. В общем, вам нужно самостоятельно назначить статические частные IPv4-адреса на обеих машинах. Возможно, также придется установить подключение как “частное” или “доверенное”. Как только оба ПК подключены, перейдите в “Центр управления сетями и общим доступом” -> “изменить параметры адаптера”, и выберите свой сетевой интерфейс, который соответствует вашему интернет-соединению. Щелкните правой кнопкой мыши для выбора свойств и ищите вкладку, связанную с совместным доступом к соединению. Там вы должны иметь возможность выбрать ваше LAN (Ethernet) соединение для совместного использования с вашим другим ПК.
Вам может понадобиться указать DNS на “внутреннем” LAN ПК, как я говорил в своем первом сообщении здесь, на этом форуме. Вам нужно будет запустить ipconfig в Windows в командной строке, чтобы узнать, какой DNS вы используете, или использовать Google’s DNS 8.8.8.8 и/или 8.8.4.4.
Существует простое руководство на https://oracle-base.com/articles/linux/use-iptables-to-implement-packet-filtering-and-configure-nat. Но я узнал, что в Windows адрес DNS, который использует ПК с Linux, также должен быть указан в Windows.
У меня есть 3G USB-модем, подключенный к моему ПК с Linux, и от него я имею два ПК с Windows, которые получают интернет. Это называется (ядро) пакетное пересечение, и это довольно просто и быстро сделать – когда вы наконец его поймете.
Вам нужно будет выяснить названия ваших сетевых интерфейсов, выполнив команду “ifconfig” в Linux (в терминале) и “ipconfig” в Windows (в командной строке). Названия интерфейсов в Linux находятся слева, например: enp2s0, enp3s0, enp0s18f2u6, lo. Теперь вы настраиваете пакетное пересечение:
-
Сначала вам нужно включить пакетное пересечение на вашем ПК с Linux (смотрите руководство, на которое я ссылался с oracle-base.com).
-
Затем вы можете выполнить эти команды, как говорит это руководство oracle-base.com (но подождите и читайте дальше):
sudo iptables -I FORWARD -i my_lan_interface -o my_modem_interface -j ACCEPT
sudo iptables -I FORWARD -i my_modem_interface -o my_lan_interface -j ACCEPT
sudo iptables -t nat -I POSTROUTING -o my_modem_interface -j MASQUERADEНо есть более надежный способ, который я нашел в сети:
sudo iptables -t nat -A POSTROUTING -o my_modem_interface -j MASQUERADE –random
sudo iptables -A FORWARD -i my_lan_interface -o my_modem_interface -j ACCEPT
sudo iptables -A FORWARD -i my_modem_interface -o my_lan_interface -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -j DROPВот объяснение команд выше (примера “более надежного”), в том же порядке:
- Первая команда: включить маскарад на my_modem_interface, чтобы адрес источника переписывался в исходящих пакетах. Флаг –random нужен для симметричного NAT.
Теперь мы собираемся настроить правила пересечения. iptables по умолчанию будет безусловно пересылать весь трафик. Здесь мы предпочитаем ограничить входящий трафик из интернета и разрешить весь исходящий:
- Вторая команда: Разрешить трафик от my_lan_interface к my_modem_interface.
- Третья команда: Разрешить возвратный трафик от my_modem_interface к my_lan_interface.
- Четвертая команда: Отсечь весь другой трафик, который не должен быть переслан.
Когда вы перезагрузите свой ПК с Linux, вам понадобится снова ввести эти команды – у меня есть скрипт, который выполняет их при каждой загрузке. Вы можете сделать эти изменения постоянными с помощью соответствующего вызова “service” (снова смотрите руководство oracle-base.com, данное выше), но я рекомендую выполнять их при каждой загрузке (в скрипте), так как вы можете экспериментировать и изменять вещи, а отменить то, что вы сохранили, это другая задача. Если что-то пойдет не так, или вы захотите изменить что-то, или просто не хотите этой функции для текущей сессии (или вовсе), просто перезагрузите ПК, и они исчезнут – но вы должны самостоятельно отключить пакетное пересечение (прежде чем перезагружать, запишите “net.ipv4.ip_forward = 0” в /etc/sysctl.conf), чтобы полностью отключить эту технологию.
-
Теперь вам нужно создать сетевое соединение (Ethernet соединение) между вашим ПК с Linux и вашими другими компьютерами. Например:
-
A) На ПК с Linux, подключенном к интернету (я использую Fedora), с помощью менеджера сетевых подключений создаю Ethernet-соединение, выбираю соответствующий интерфейс (имя сетевой карты, enp3s0 в моем случае), который подключает этот ПК с Linux к моей LAN. Убедитесь, что выбрана правильная зона брандмауэра, иначе ваша LAN не получит интернет. Поскольку это ваш внутренний LAN интерфейс, установите зону брандмауэра на “доверенную”, а интерфейс подключения модема должен быть установлен на “общественный”. Далее, в разделе настроек IPv4 установите, что IPv4 должен использоваться для соединения (IPv6 можно игнорировать), и выберите ручную настройку адреса. Теперь добавьте адрес 192.168.2.100 – это будет адрес этого ПК с Linux в вашей LAN. Маска сети будет установлена автоматически (255.255.255.0, так как это “C класс” (частный) адрес). Примените свои настройки и подключитесь.
-
B) На втором ПК (с Linux или Windows, подключенном Ethernet-кабелем к первому выше), также создайте сетевое соединение (если это Windows, смотрите ниже для более подробной информации), выберите соответствующий сетевой интерфейс (устройство/карту, которая соединяется с первым ПК), используйте ручную настройку IPv4, как и для первого ПК, но здесь укажите адрес 192.168.2.101 – это будет адрес этого второго ПК в вашей LAN (это “частные” адреса, что означает, что они не будут видны за пределами вашей LAN).
-
B1) Если вы хотите подключить Windows (операционную систему), перейдите в “Центр управления сетями и общим доступом” -> “изменить параметры адаптера” и найдите свой сетевой интерфейс, который соответствует вашей сетевой карте LAN на этом ПК с Windows, который также подключен Ethernet-кабелем к первому ПК. Теперь выберите этот интерфейс, щелкните правой кнопкой мыши для выбора свойств. Вы увидите список. Здесь снимите выбор “Интернет Протокол Версия 6” и дважды щелкните на “Интернет Протокол Версия 4”. Теперь введите адрес 192.168.2.101 – это будет адрес этого ПК с Windows на этом интерфейсе (на этом [LAN/Ethernet] соединении)). Перейдите вниз, чтобы маска сети была автоматически заполнена (255.255.255.0). (Профиль сети может быть установлен на “общественный”).
-
B2) Возможно, потребуется установить адрес шлюза на первом ПК с Linux, поэтому вам нужно будет указать в качестве адреса шлюза 192.168.2.100.
-
C) Теперь вы должны ввести адрес DNS, который использует ваш первый ПК с Linux. Например, мой модем использует адрес DNS 192.168.1.1 (который я могу найти, выполнив команду “nmcli device show | grep IP4.DNS”, где interfacename — это название вашего интерфейса Linux, подключенного к интернету). (Если вы подключаетесь к интернету через Windows, выполните “ipconfig” в терминале/командной строке, найдите адрес DNS). И это все. Информация о DNS критически важна для получения интернет-соединения.
-
Итак, подводя итоги:
Адрес моего модема: 192.168.1.100, DNS 192.168.1.1.
Адрес ПК с Linux в LAN: 192.168.2.100, пакетное пересечение включено с помощью iptables, перенаправляющего трафик, как описано выше, зона брандмауэра установлена на “доверенную”.
Адрес ПК с Windows 1: 192.168.2.101 с DNS, установленным на 192.168.1.1, профиль сети установлен на общественный. (Шлюз по умолчанию установлен на ПК с Linux: 192.168.2.100).
Адрес ПК с Windows 2: 192.168.2.102 с DNS, установленным на 192.168.1.1, профиль сети установлен на общественный. (Шлюз по умолчанию установлен на ПК с Linux: 192.168.2.100).
(Все компьютеры соединены друг с другом с помощью простого Ethernet-коммутатора с обычными Ethernet-кабелями (также называемыми “патч-кабелями” или “патч-кабелями”), не перекрестными, потому что “современные” сетевые карты делают пересечение самостоятельно, так что вы можете использовать перекрестные или не перекрестные кабели, даже смешивать их в соединении.)
Существует также руководство на: https://medium.com/@TarunChinmai/sharing-internet-connection-from-a-linux-machine-over-ethernet-a5cbbd775a4f, которое использует адреса DNS Google вместо этого. Проверьте это.
Ответ или решение
Как поделиться интернетом с Windows с помощью Linux?
Если у вас есть компьютер на базе Linux, работающий под управлением Ubuntu 12.04 и подключенный к интернету через USB-модем Greenpacket WiMax, вы можете легко поделиться этим подключением с компьютером под управлением Windows 7 Home Premium, который подключен к Linux по локальной сети (LAN). В этой статье мы подробно рассмотрим, как это сделать.
Шаг 1: Подготовка к работе
Перед началом настройки убедитесь, что оба компьютера (Linux и Windows) подключены друг к другу через Ethernet-кабель или сетевой свитч. Также вам нужно будет проверить названия сетевых интерфейсов, которые вы будете использовать. Используйте команду ifconfig
на Linux и ipconfig
на Windows для получения этой информации.
Шаг 2: Настройка Linux для совместного использования интернета
На вашем компьютере с Linux выполняйте следующие шаги:
-
Включение пакетной маршрутизации:
Выполните команду, чтобы включить маршрутизацию пакетов:
sudo sysctl -w net.ipv4.ip_forward=1
-
Настройка iptables для NAT:
Используйте
iptables
для настройки NAT, позволяющего делиться интернет-подключением. Заменитеeth0
на интерфейс, который соединяется с интернетом, иeth1
на интерфейс вашего LAN:sudo iptables -A FORWARD -i eth1 -s 192.168.0.0/16 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Чтобы эти команды выполнялись при каждом запуске системы, добавьте их в файл
/etc/rc.local
или создайте отдельный скрипт. -
Настройка статического IP-адреса:
Убедитесь, что вашему Linux-компьютеру назначен статический IP-адрес в пределах вашей локальной сети (например, 192.168.2.100). Настройте это в менеджере сетевых подключений.
-
Настройка DNS:
Если вы не настраивали DNS-сервер на вашем Linux-компьютере, вам нужно будет вручную указать DNS-сервера на Windows. Например, можете использовать серверы Google:
8.8.8.8 8.8.4.4
Шаг 3: Настройка Windows для использования интернета
На вашем компьютере с Windows выполните следующие шаги:
-
Настройка IP-адреса:
Перейдите в "Центр управления сетями и общим доступом" → "Изменение параметров адаптера", выберите адаптер, который подключен к Linux, и выполните его настройки. Убедитесь, что у вас установлен статический IP, например, 192.168.2.101, маска подсети 255.255.255.0, и шлюз по умолчанию 192.168.2.100 (IP-адрес вашего Linux-компьютера).
-
Настройка DNS:
В свойствах протокола IPv4 укажите DNS-сервер (например, 8.8.8.8 или DNS вашего интернет-провайдера).
Шаг 4: Тестирование подключения
Теперь, когда все настроено, попробуйте получить доступ к интернету с вашего компьютера под управлением Windows. Если все было сделано правильно, вы должны быть в состоянии использовать интернет одновременно с обоих компьютеров.
Как совместить интернет от Windows к Linux?
Для организации обратного подключения, где Windows будет делиться интернетом с Linux, выполните следующие шаги:
-
Настройка общего доступа к интернету на Windows:
- Откройте "Центр управления сетями и общим доступом".
- Перейдите в "Изменение параметров адаптера".
- Щелкните правой кнопкой мыши на интернет-адаптере, выберите "Свойства".
- Перейдите на вкладку "Доступ" и разрешите общий доступ к интернету.
-
Настройка Linux:
- Добавьте маршрут по умолчанию к вашему Windows-компьютеру:
sudo route add default gw x.x.x.x
Замените
x.x.x.x
на локальный IP-адрес Windows. - Установите DNS:
echo "nameserver y.y.y.y" | sudo tee /etc/resolv.conf
Замените
y.y.y.y
на DNS-сервер Windows.
- Добавьте маршрут по умолчанию к вашему Windows-компьютеру:
После выполнения этих шагов ваш компьютер с Linux должен получить доступ к интернету через Windows.
Заключение
Используя описанные шаги, вы сможете настроить совместное использование интернет-соединения между вашим Linux и Windows. Это просто и эффективно, позволяя использовать одно интернет-соединение на нескольких устройствах. Надеемся, что эта инструкция была полезной и понятной.