Как мне поделиться интернетом с 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),

  1. Введите это, чтобы установить шлюз по умолчанию:

    route add default gw x.x.x.x

    (Примечание: замените x.x.x.x на локальный IP-адрес хоста Windows.
    Вы можете найти его, набрав: ipconfig -all в командной строке Windows.)

  2. Затем введите это, чтобы установить 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. Теперь вы настраиваете пакетное пересечение:

  1. Сначала вам нужно включить пакетное пересечение на вашем ПК с Linux (смотрите руководство, на которое я ссылался с oracle-base.com).

  2. Затем вы можете выполнить эти команды, как говорит это руководство 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), чтобы полностью отключить эту технологию.

  3. Теперь вам нужно создать сетевое соединение (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 выполняйте следующие шаги:

  1. Включение пакетной маршрутизации:

    Выполните команду, чтобы включить маршрутизацию пакетов:

    sudo sysctl -w net.ipv4.ip_forward=1
  2. Настройка 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 или создайте отдельный скрипт.

  3. Настройка статического IP-адреса:

    Убедитесь, что вашему Linux-компьютеру назначен статический IP-адрес в пределах вашей локальной сети (например, 192.168.2.100). Настройте это в менеджере сетевых подключений.

  4. Настройка DNS:

    Если вы не настраивали DNS-сервер на вашем Linux-компьютере, вам нужно будет вручную указать DNS-сервера на Windows. Например, можете использовать серверы Google:

    8.8.8.8
    8.8.4.4

Шаг 3: Настройка Windows для использования интернета

На вашем компьютере с Windows выполните следующие шаги:

  1. Настройка IP-адреса:

    Перейдите в "Центр управления сетями и общим доступом" → "Изменение параметров адаптера", выберите адаптер, который подключен к Linux, и выполните его настройки. Убедитесь, что у вас установлен статический IP, например, 192.168.2.101, маска подсети 255.255.255.0, и шлюз по умолчанию 192.168.2.100 (IP-адрес вашего Linux-компьютера).

  2. Настройка DNS:

    В свойствах протокола IPv4 укажите DNS-сервер (например, 8.8.8.8 или DNS вашего интернет-провайдера).

Шаг 4: Тестирование подключения

Теперь, когда все настроено, попробуйте получить доступ к интернету с вашего компьютера под управлением Windows. Если все было сделано правильно, вы должны быть в состоянии использовать интернет одновременно с обоих компьютеров.

Как совместить интернет от Windows к Linux?

Для организации обратного подключения, где Windows будет делиться интернетом с Linux, выполните следующие шаги:

  1. Настройка общего доступа к интернету на Windows:

    • Откройте "Центр управления сетями и общим доступом".
    • Перейдите в "Изменение параметров адаптера".
    • Щелкните правой кнопкой мыши на интернет-адаптере, выберите "Свойства".
    • Перейдите на вкладку "Доступ" и разрешите общий доступ к интернету.
  2. Настройка 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.

После выполнения этих шагов ваш компьютер с Linux должен получить доступ к интернету через Windows.

Заключение

Используя описанные шаги, вы сможете настроить совместное использование интернет-соединения между вашим Linux и Windows. Это просто и эффективно, позволяя использовать одно интернет-соединение на нескольких устройствах. Надеемся, что эта инструкция была полезной и понятной.

Оцените материал
Добавить комментарий

Капча загружается...