Бывает
такая ситуация, когда интернет подключён
через 3G модем, но в доме больше одного
компьютера. И всем нужен интернет. Выхода
из положения тут 3:
1)
Купить каждому компьютеру по модему.
2)
Купить маршрутизатор (роутер) с USB
разъёмом и раздавать интернет через
него.
3)
Расшарить модем в общий доступ по
локальной сети.
Первый
вариант нам не подходит, так как нужно
раскошеливаться на ещё один или больше
модемов. А это ещё и увеличенные
ежемесячные абонентские платы. Второй
вариант также затратен, но тут есть два
преимущества: во первых вы платите один
раз только за роутер, а во-вторых –
простота настройки и подключения
дополнительных устройств (например
планшетов и смартфонов по wi-fi). Но мы не
хотим ничего покупать, и имеем на руках
один 3G модем и патч-корд (сетевой кабель)
для соединения двух компов. Чтож,
приступим.
Один
из компьютеров будет выступать в качестве
шлюза, раздающего интернет. Настройку
я буду приводить на примере Debian, что
также будет касаться и Ubuntu и прочих
дэбианоподобных. Итак, в системе у нас
одна сетевая карта, определённая как
eth0, и 3G модем, определённый как ppp0. Для
начала настроим статический IP адрес
для сетевой карты. Вводим команду:
sudo
nano /etc/network/interfaces
Перед
нами будет примерно такое содержимое:
# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interfaceauto loiface lo inet loopback
Изменим
его таким образом:
# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interfaceauto loiface lo inet loopback
allow-hotplug eth0iface eth0 inet staticaddress 192.168.0.1netmask 255.255.255.0network 192.168.0.0broadcast 192.168.0.255
Сохраняем
и перезапускаем сеть
Для
Debian 8/Ubuntu 15.04
sudo
systemctl restart networking
Для
Debian 7/Ubuntu 14.04/14.10
sudo
ifdown -a
sudo
ifup -a
Отлично.
Самое простое сделали :) Что дальше? Нам
нужно настроить наш шлюз таким образом,
чтобы он принимал все сетевые пакеты с
интерфейса ppp0 (нашего модема) и передавал
их на нашу локальную сеть (eth0), и наоборот.
Для этого нужно насроить NAT (Netwiork Address
Translation, трансляция сетевых адресов) и
настроить фаерволл. Настройка будет
проводиться через пакетный фильтр
iptables – консольный интерфейс для
"ядерного" фаерволла netfilter. Напишем
несколько правил для него. Так как эти
правила слетят после перезагрузки, дабы
не вводить их по сто раз, напишем небольшой
скрипт.
Для
начала, нужно включить переадресацию
в ядре. Открываем файл /etc/systctl.conf
sudo
nano /etc/sysctl.conf
Ищем
строку net.ipv4.ip_forward=1, удаляем перед ней
решётку и сохраняем (Ctrl+O, Enter, Ctrl+X)
Применяем
изменения
sudo
sysctl -p
Теперь
создадим файл gateway.sh со следующим
содержимым:
#!/bin/sh
# Очищаем правила
iptables -v -F
iptables -v -X
# Определяем выходной интерфейс для которого будет применяться замена адресов (NAT)
iptables -v -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Пересылаем все пакеты, пришедшие на модем из глобальной сети (0.0.0.0/0) в локальную сеть (192.168.0.0/24)
iptables -v -A FORWARD -i ppp0 -o eth0 -s 0.0.0.0/0 -d 192.168.0.0/24 -j ACCEPT
# Пересылаем все пакеты, пришедшие из локальной сети (192.168.0.0/24) в глобальную (0.0.0.0/0)
iptables -v -A FORWARD -i eth0 -o ppp0 -s 192.168.0.0/24 -d 0.0.0.0/0 -j ACCEPT
Сохраняем
и даём права на выполнение:
chmod
+x gateway.sh
Скрипт
нужно запускать от sudo. Всё что теперь
осталось – настроить второй ПК. Для
этого в его сетевых настройках нужно
указать в качестве шлюза 192.168.0.1, а также указать DNS-сервер (например стандартный Гугловский 8.8.8.8). Для этого откройте файл /etc/resolv.conf, и добавьте в начало строку:
nameserver 8.8.8.8
Можно также поднять DNS-сервер на самом шлюзе, но это лишнее.
Ссылки:
Русскоязычное руководство по iptables
Руководство по iptables на Ubuntu Wiki
Комментариев нет:
Отправить комментарий