При соединении компьютеров по локальной сети можно совместно использовать не только файлы и папки, как это описано в статье Локальная сеть между Ubuntu Linux и MS Windows, но и самое значительное достижение человеческой цивилизации — Интернет.
В этой статье будет рассмотрен простейший случай локальной сети — одноранговая полностью доверенная сеть. Или, если проще выражаться, соединены несколько равноценных компьютеров и доступ разрешен всем ко всем. Именно это наиболее актуально для домашних сетей и маленьких компаний. И такие сети все чаще становятся гетерогенными, то есть кроме всеми известной и любимой ОС MS Windows, появляется ОС GNU/Linux.
Для начала немного теории. Раздача или расшаривание Интернет, это выражение просторечное, у специалистов же это называется создание Интернет-шлюза, а компания Microsoft называет это Internet Connection Sharing. Но как это ни назови, суть одна и та же — к Интернет подключается лишь одни из компьютеров локальной сети, а остальные компьютеры «получают» Интернет с него. Такой компьютер и называется Интернет-шлюз, его работа заключается в том, чтобы получать запросы от локальной сети и передавать эти запросы «в Интернет» и затем получив «из Интернета» ответы, отправить их в локальную сеть. Сложно? Но на практике все вполне просто.
Хотя в этой статье будет рассмотрена настройка Интернет-шлюза для гетерогенной сети, абсолютно так же настраивается раздача Интернет и для однотипной сети (где только Windows или только Linux).
В этой статье будет описано как настроить Интернет по локальной сети между Ubuntu Linux и Windows в самом простейшем варианте — максимально быстро и с минимальными знаниями и навыками.
Вариант 1, расшарить (раздать) Интернет с Windows на Ubuntu Linux
Вариант 1, расшарить (раздать) Интернет с Windows на Ubuntu Linux
Для начала нужно убедиться, что на компьютере бесперебойно работают и подключение к Интернет и к локальной сети. При настройке Интернет-шлюза не имеет значения, каким образом компьютер подключен к Интернет и к локальной сети. Например подключение к Интернет может быть Dial-up типа через сотовый 3G или 4G USB модем. А к локальной сети компьютер может быть подключен через проводную Ethernet сетевую карту или беспроводную карту Wi-fi.
Шаг первый, настройка Windows
Шаг первый, настройка Windows
Настройка Интернет-шлюза будет показана на примере Windows XP, но для Windows 7 все делается точно так же.
Нажать на клавиатуре клавиши Windows+R и в открывшемся окне вписать «ncpa.cpl» и нажать кнопку «Ок»:
В списке доступных сетевых подключений нужно выбрать то, через которое компьютер подключается к Интернет, затем нажать на нем правую кнопку мыши и выбрать строку меню «Свойства»:
Примечание. «Сетевое окружение» можно открыть и другими способами — через меню «Пуск — Настройка» и через «Панель управления» в элементе «Мой компьютер».
В окне свойств подключения к Интернет, нужно открыть вкладку «Доступ», на этой вкладке включить опцию «Разрешить другим пользователям …» и в списке доступных соединений выбрать то, через которое подключена локальная сеть:
После нажатия кнопки «Ок», в Windows будет включена переадресация Интернет трафика между двумя сетевыми интерфейсами. После этого можно настраивать компьютеры в локальной сети, для того, чтобы они могли получать трафик с Интернет-шлюза. Для этого нужно узнать какой Интернет-адрес Windows присвоила тому соединению, которую подключена локальная сеть, это можно сделать открыв окно «Свойства» этого соединения. В этом окне нужно открыть вкладку «Общие», затем выделить «Протокол Интернета TCP\IP» и нажать кнопку «Свойства». Откроется новое окно и в нем будет вписан адрес этого соединения. Этот адрес нужно запомнить или записать. Именно этот адрес нужно будет использовать при настройке компьютеров локальной сети:
По умолчанию Windows XP использует адрес 192.168.0.1, а Windows 7 192.168.137.1.
Шаг второй, настройка Ubuntu Linux
Шаг второй, настройка Ubuntu Linux
На компьютере(ах) с ОС Ubuntu Linux, которые должны «получить» Интернет, нужно всего лишь указать адрес Интернет-шлюза в настройках того сетевого подключения, через которое этот компьютер подключен к локальной сети. Сделать это можно как через графический интерфейс, так и через консольную команду.
Настройка через графический интерфейс.
Откройте список сетевых подключений, через значок «Сеть» в трее или через меню «Система — Параметры — Сетевые соединения»:
В окне с перечнем соединений выберите то, через которое этот компьютер подключен к локальной сети, выделите его и нажмите кнопку «Изменить»:
Далее, в новом окне откройте вкладку «Параметры IPv4» и укажите метод «Вручную», впишите адрес для этого подключения, а также адрес Интернет-шлюза:
Затем нажмите кнопку «Применить».
Все готово, можно пользоваться Интернет.
Через консоль то же самое можно сделать одной командой «sudo route add default gw 192.168.0.1 eth0»:
Примечание. Консольную команду нужно повторять после перезагрузки Linux.
Вариант 2, расшарить (раздать) Интернет с Ubuntu Linux на Windows
Вариант 2, расшарить (раздать) Интернет с Ubuntu Linux на Windows
Порядок такой же как и в первом варианте, сначала настраивается компьютер-шлюз, который подключен к Интернет, затем клиенты. Только в этом случае Интернет-шлюз будет на ОС Ubuntu Linux.
Шаг первый, настройка Интернет-шлюза на ОС Ubuntu Linux
Шаг первый, настройка Интернет-шлюза на ОС Ubuntu Linux
Для начала нужно убедиться, что на компьютере бесперебойно работают и подключение к Интернет и к локальной сети. При настройке Интернет-шлюза не имеет значения, каким образом компьютер подключен к Интернет и к локальной сети. Например подключение к Интернет может быть Dial-up типа через сотовый 3G или 4G USB модем. А к локальной сети компьютер может быть подключен через проводную Ethernet сетевую карту или беспроводную карту Wi-fi.
Настройка через графический интерфейс.
Откройте список сетевых подключений, через значок «Сеть» в трее или через меню «Система — Параметры — Сетевые соединения». В окне с перечнем соединений выберите то, через которое этот компьютер подключен к локальной сети, выделите его и нажмите кнопку «Изменить». Далее, в новом окне откройте вкладку «Параметры IPv4» и укажите метод «Общий с другими компьютерами»:
После перезапуска службы «Network Manager» начнет работать переадресация Интернет трафика между двумя сетевыми интерфейсами. Перезапуск Network Manager происходит при перезагрузке Ubuntu Linux, но можно это сделать вручную, если в консоли выполнить команду «sudo service network-manager restart» или «sudo /etc/init.d/NetworkManager restart».
После этого нужно узнать адрес, который Network Manager присвоил вашему сетевому интерфейсу. Это можно сделать через консоль, набрав там команду «ifconfig -a» и затем, в результатах этой команды найти нужный интерфейс. Например «eth0 …. inet addr:10.42.43.1». Этот адрес (10.42.43.1) нужно будет использовать на компьютерах в локальной сети как адрес Интернет-шлюза.
Через консоль то же самое можно сделать двумя командами:
-
-
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
-
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
-
Примечание. Адрес «192.168.1.0/24» нужно заменить на адрес вашей локальной сети.
Вместо двух команд можно сделать скрипт:
И точно так же, нужно знать адрес вашего сетевого интерфейса локальной сети для настройки компьютеров-клиентов.
Примечание. При использовании консольных команд или скрипта, их нужно будет выполнять при каждом запуске Linux.
Шаг второй, настройка Windows
Шаг второй, настройка Windows
На компьютере(ах) с ОС Windows, которые должны «получить» Интернет, нужно всего лишь указать адрес Интернет-шлюза в настройках того сетевого подключения, через которое этот компьютер подключен к локальной сети. Открываете «Сетевые подключения», далее свойства нужного подключения, далее вкладка «Общие», затем выделить «Протокол Интернета TCP\IP» и нажать кнопку «Свойства»:
и в этом окне вписать адрес Интернет-шлюза.
Важно помнить, что:
-
-
Адрес шлюза должен совпадать с адресом сетевого интерфейса на компьютере-шлюзе.
-
Собственный адрес компьютера должен быть из той же подсети. Подсеть это первые три группы цифр адреса, в этом примере подсеть «192.168.0»
-
Собственный адрес компьютера и адрес шлюза в разных подсетях!
Существуют и другие способы совместного использования Интернет по локальной сети, например можно «раздавать» Интернет при помощи специальной программы — прокси-сервер.
В этой статье не определены меры по обеспечению безопасности Интернет-шлюза и локальной сети от проникновения из Интернет. Наипростейшие способы такой защиты:
-
-
Использовать в качестве Интернет-шлюза ОС Ubuntu Linux.
-
Если вы используете в качестве Интернет-шлюза ОС Windows, установите какой-либо комплекс антивирус + файерволл, например Касперский Интернет Секьюрити.
-
При настройке компьютеров-клиентов, можно указывать не только адрес шлюза, но и адреса DNS серверов. В качестве DNS сервера можно указать:
-
-
Адрес Интернет-шлюза.
-
Адреса DNS серверов вашего Интернет-провайдера.
-
Адреса любых DNS серверов, которые стабильно доступны в сети.
-
Сопутствующие статьи:
Локальная сеть между Ubuntu Linux и MS Windows
http://ru.d-ws.biz/articles/icsLinuxAndWindows.shtml
Как раздать интернет из Linux на Windows в VirtualBox?
VirtualBox является одной из наиболее популярных виртуальных машин, позволяющих пользователю создавать и использовать виртуальные операционные системы на своем компьютере. Одним из распространенных сценариев использования VirtualBox является создание виртуальной операционной системы Windows и настройка ее для доступа к интернету через операционную систему Linux, которая является хостом. В этой статье мы рассмотрим шаги по настройке такого подключения.
Шаг 1: Загрузка и установка VirtualBox
Для начала вам нужно загрузить последнюю версию VirtualBox с официального сайта (https://www.virtualbox.org/wiki/Downloads). После загрузки установите программу, следуя инструкциям мастера установки.
Шаг 2: Создание виртуальной машины
После установки откройте VirtualBox и нажмите на кнопку «Создать» для создания новой виртуальной машины. Задайте имя и тип операционной системы (в данном случае Windows) и выберите количество выделенной оперативной памяти и размер жесткого диска. После завершения настройки нажмите «Создать».
Шаг 3: Установка операционной системы в виртуальной машине
Для установки операционной системы Windows на виртуальную машину выберите виртуальную машину в списке и нажмите на кнопку «Пуск». Вам будет предложено выбрать образ диска с операционной системой. Выберите соответствующий файл образа и нажмите «Старт». Следуйте инструкциям мастера установки Windows для установки ОС в виртуальной машине.
Шаг 4: Настройка сети в виртуальной машине
После установки Windows откройте виртуальную машину и выберите «Настройки». В разделе «Сеть» выберите «Адаптер 1» и включите опцию «Активировать сетевой адаптер». В меню раскрывающегося списка «Способ подключения» выберите «Сетевой мост» или «Авто» (в зависимости от настроек вашей системы). Нажмите «ОК», чтобы сохранить настройки.
Шаг 5: Настройка сети хоста
Теперь перейдем на хостовую систему Linux. Откройте терминал и выполните команду ifconfig, чтобы получить информацию о сетевых интерфейсах на вашей машине. Обычно первый интерфейс называется eth0. Запишите IP-адрес и маску подсети для дальнейшей настройки в виртуальной машине.
Шаг 6: Настройка моста в Linux
Вернитесь к VirtualBox и откройте меню «Настройки». В разделе «Сеть» выберите «Создание сети хоста». Введите имя сети и выберите режим «Правило адресации сети (DHCP)». Нажмите «ОК» для сохранения настроек.
Теперь перейдите к настройке моста в Linux. Откройте терминал и выполните команду sudo nano /etc/network/interfaces, чтобы открыть файл настроек сетевого интерфейса. Добавьте следующие строки в файл:
auto br0
iface br0 inet dhcp
bridge_ports eth0
Сохраните изменения и закройте файл. Затем выполите команду sudo /etc/init.d/networking restart для перезапуска сети.
Шаг 7: Подключение виртуальной машины к мосту
Вернитесь к виртуальной машине в VirtualBox и откройте настройки сети. В разделе «Сеть» выберите «Адаптер 1» и выберите вариант «Создать новое подключение моста». Используйте раскрывающийся список «Имя подключения» для выбора созданного вами моста. Нажмите «ОК» для сохранения изменений.
Шаг 8: Подключение к интернету
Теперь у вас должно быть подключение к интернету внутри виртуальной машины Windows. Откройте браузер в Windows и проверьте доступность веб-сайтов, чтобы убедиться, что интернет работает правильно.
Если подключение к интернету внутри виртуальной машины не работает, выполните следующие действия:
— Убедитесь, что сетевой адаптер VirtualBox выбран правильно.
— Проверьте настройки межсетевого экрана, чтобы разрешить доступ к интернету из виртуальной машины.
— Проверьте настройки DHCP, чтобы убедиться, что виртуальная машина получает правильный IP-адрес и маску подсети.
— Проверьте настройки сети хоста Linux.
В заключение можно сказать, что настройка раздачи интернета из Linux на Windows в VirtualBox является достаточно простой задачей, но потребует некоторых шагов настройки. Однако, если все настройки выполнены правильно, вы сможете наслаждаться доступом к интернету в вашей виртуальной машине Windows.
Содержание
Инструкций уже много, в которых много всего написано, да так, что новички увидев это «многабукаф» закроют в ужасе. Попробую показать короткую инструкцию для раздачи Интернета для самого популярного случая с одного компьютера на другой, будь то Интернет через 3g-модем или PPPoE — не важно.
Исходные данные
Итак, что мы обычно имеем на дому?
-
комп с 2 сетевыми картами, одна на ДСЛ-модем (или на провайдера), другая на второй комп.
-
комп с 1 сетевой картой, но с выходом в Интернет с помощью usb 3g-модема.
Если у вас один из этих случаев, то инструкция для вас.
Считаем что инет висит на ppp0. Локальная сеть 192.168.0.0/24
Вместо ppp0 может быть eth0/1/2, wlan0 и т.п. Важно то, что мы знаем, что Инет приходит через этот интерфейс. Локальная сеть мб другой, поправьте под свой вариант или настройте свою сеть из 2-х компов как предложено здесь.
Настройка iptables
В терминале:
sudo su iptables -t nat -A POSTROUTING -o ppp0 ! -d 192.168.0.0/24 -j MASQUERADE iptables-save > /etc/iptables.up.rules echo "pre-up iptables-restore < /etc/iptables.up.rules" >> /etc/network/interfaces apt-get install bind9
-
Зашли в консоль рута
-
Включили NAT, указав, что интерфейс с Инетом ppp0 и ему предназначены пакеты, не адресованные локальной сети 192.168.0.0/24
-
Сохранили правила iptables
-
Прописали команду, восстанавливающую правила при старте сетевых интерфейсов (после перезагрузки)
-
Установили сервер DNS, он будет транслировать DNS
Можно обойтись без bind9. В этом случае на 2-м компе нужно будет указать те же IP DNS-серверов, что и на 1-м, либо просто указать гугловский DNS-сервер — 8.8.8.8
Включаем форвардинг (перенаправление пакетов)
nano /etc/sysctl.conf
находим и раскоментируем эту строку:
net.ipv4.ip_forward=1
Чтобы изменения вступили в силу без перезагрузки ОС.
sysctl -p
Всё, компьютер является шлюзом в Интернет. Для того, чтобы 2-й комп получил доступ в Инет нужно настроить сеть, указав шлюзом данный компьютер, в роли DNS-сервера выступает он же.
В этой заметке будет рассказано как с помощью iptables настроить системы с Ubuntu и Debian для раздачи интернета другим компьютерам локальной сети. На простом примере будет показано как машину с двумя сетевыми интерфейсами (в один поступает интернет, из другого — «выходит») сделать шлюзом.
Настроить этот функционал через веб-интерфейс можно с помощью Webmin, через графический интерфейс – с помощью GAdmintools. Но мы рекомендуем настраивать шлюз напямую, а не через сторонние утилиты.
Допустим, что аппаратно-сетевая часть уже полностью настроена, на вашей машине имеются работоспособный интернет и вы видите другие компьютеры сети. Поэтому давайте разберемся что к чему, для этого введем команду:
ifconfig
(с Debian 9 эта команда устарела, используйте ip a
вместо нее)
Она выдаст список работающих в данный момент сетевых интерфейсов. Среди них надо опознать те, что начинаются со слов «Link encap:Ethernet» — это интерфейсы сетевых карт. Как правило, это eth0 и eth1.
Теперь потребуется опознать в какой из них поступает интернет, а из какого «выходит». Проще всего это сделать по их ip-адресам.
Итак, допустим через eth0 вы получаете интернет (например через adsl-модем по протоколу ppp), а eth1 связывает вас с локальной сетью.
Если локальная сеть настроена через Network Manager, то мы рекомендуем прописать эти настройки непосредственно в системном конфигурационном файле сети:
sudo nano /etc/network/interfaces
Здесь исправьте настройки вашего сетевого интерфейса, подключенного к локальной сети (в нашем случае eth1), соответствующим образом:
auto eth1
iface eth1 inet static
address 192.168.0.10
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
Значение address — это айпи вашей машины в локальной сети, по этому адресу собственно и будет располагаться шлюз.
Значение netmask — в локальных сетях для этого диапазона чаще всего такая. Для других диапазонов можно вычислить здесь.
Значения network и broadcast будут зависеть от вашего адреса. То есть, если ваш локальный ip — 10.0.0.10, то network и broadcast будут 10.0.0.0 и 10.255.255.255 соответственно.
Либо, это можно проделать всего одной командой:
sudo ifconfig eth1 192.168.0.10
Эта команда самостоятельно настроит вашу сетевую карту eth1 на использование статичного айпи-адреса, и самостоятельно пропишет описанные выше настройки в файл /etc/network/interfaces
В любом случае, после этих изменений перезапустите networking:
sudo /etc/init.d/networking restart
Командой:
ifconfig
(ip a
)
проверьте, что изменения вступили в силу и все работает.
Теперь осталось дело за малым. В случае если вы уже пытались настроить вашу систему шлюзом, но у вас не получилось или по каким-то другим причинам вы желаете обнулить все настройки файрвола iptables, то это можно сделать следующими командами:
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
Если прямой необходимости в сбросе настроек iptables нет, то лучше этого не делать.
Следующие команды настроят ваш iptables для NAT-трансляции (NAT, Network Address Translation — «преобразование сетевых адресов») через Ubuntu-шлюз:
sudo iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Если необходимые вам сетевые интерфейсы отличаются от eth0 и eth1, то просто измените первую строку соответствующим образом.
Если ваша локальная сеть находится вне диапазона 192.168.x.x, то маску подсети для указания в первой строке вы сможете легко вычислить через сервис Network Calculators.
Теперь для конфигурации gateway’я для роутинга между двумя интерфейсами необходимо включить IP-форвардинг командой:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
И последний штрих: надо отредактировать файл sysctl.conf:
sudo nano /etc/sysctl.conf
Добавьте в него вот эти две строки для активации роутинга:
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1
В Debian 9 достаточно добавить (раскомментрировать) всего одну строку:
net.ipv4.ip_forward=1
После этого ваш интернет-шлюз готов к работе. Можете настраивать клиентские машины. На нашем примере для них gateway будет 192.168.0.10
Если все внесенные вами изменения работают корректно и вы желаете внести эти настройки в автозагрузку (а именно, вышеприведенные настройки iptables теряют активность после перезагрузки системы), то сохраните нынешнюю рабочую конфигурацию iptables в файл командой:
sudo sh -c "iptables-save > /etc/iptables.up.rules"
После этого в сам файл сетевых настроек /etc/network/interfaces (sudo nano /etc/network/interfaces
) к параметрам вашего сетевого интерфейса, например, из которого к вам поступает интернет (в нашем случае – это eth0) добавьте строку:
pre-up iptables-restore < /etc/iptables.up.rules
То есть оно станет примерно такого вида:
auto eth0
iface eth0 inet manual
pre-up iptables-restore < /etc/iptables.up.rules
Только не меняйте значения в строке iface, просто добавьте указанную строку последней в разделе auto eth0 (ну или какого-то другого сетевого интерфейса). После этого при перезагрузке сохраненные настройки iptables будут подниматься автоматически.
Если вы хотите добавить к этому автоматическую раздачу адресов (dhcp) и прокси, то воспользуйтесь для этого, например, вот этой инструкцией.
копия моего ответа на идентичный по сути, но иной по форме вопрос:
если на компьютерах в подсети шлюзом по умолчанию указано использование того самого сервера, который вы настраиваете, то достаточно:
-
разрешить на этом сервере передачу пакетов между интерфейсами:
$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
для того, чтобы эта настройка применялась и после перезагрузки, раскомментируйте (или добавьте, если нет) строку в
/etc/sysctl.conf
:net.ipv4.ip_forward=1
- проконтролировать, что эти пакеты не искажаются и не блокируются netfilter-ом (см. вывод
$ sudo iptables-save
). -
добавить правило netfiler-а для подмены адреса отправителя у пакетов, поступивших с «внутреннего» интерфейса, и уходящих на внешний интерфейс:
$ sudo iptables -t nat -A POSTROUTING -o внешний_интерфейс -j MASQUERADE
если же на этих компьютерах шлюзом по умолчанию служит другая машина (или вообще таковой не задан), то, в дополнение к разрешению передачи пакетов между интерфейсами, вам ещё придётся эти пакеты «искажать».
как минимум потребуется подмена адреса источника у пакетов, поступивших на «внешний» интерфейс, и адресованных компьютерам подсети, а также обратная подмена адреса назначения у «ответных» пакетов.
оба данных действия может выполнять директива netfilter-а под названием snat (source nat). пример её добавления с помощью программы iptables:
$ sudo iptables -t nat -A POSTROUTING -o внутренний_интерфейс -j SNAT --to-source ip-адрес
где ip-адрес
— адрес, закреплённый за «внутренним» интерфейсом.
для того, чтобы не вводить упомянутые выше одну или две команды (iptables ...
) после каждой перезагрузки настраиваемого сервера, их можно добавить, например, в конец файла /etc/rc.local
, но до строки exit 0
, которая там обычно присутствует (если нет — просто добавляйте в конец файла). добавка sudo
, конечно, в этом файле не нужна.