logo search
Методичка - Администрирование

Раздача интернет на локальную сеть.

Источник: ru.wikipedia.org, Lafox.Net

Мы хотим, чтобы машины из локальной сети имели доступ к Internet. В данном случае наш сервер должен выполнять функции роутера (маршрутизатора). В нем должно быть как минимум два интерфейса:

Для “раздачи” интернет во внутреннюю сеть часто используется IP маскарадинг (IPMASQUARADE). Работает это, вкратце, следующим образом: пакет, поступающий из локальной сети на роутер, в своем заголовке содержит IP адрес создавшего его компьютера (далее ip-источника) и IP-адрес пункта назначения (далее ip-получателя). Роутер в этом случае подменяет ip-источника на свой ip и отправляет этот пакет получателю. Получатель формирует ответный пакет для роутера. Роутер принимает этот пакет, но он знает, что этот пакет предназначен не ему (путем запоминания номера пакета) и, заменяет в нем ip-получателя на ip-источника, затем отправляет этот пакет локальной машине в сети. Таким образом, получается, что машины во внутренней сети получают доступ в интернет от имени роутера. Отсюда и название “IP-маскарадинг”, так как маршрутизатор маскирует своим IP машины внутри локальной сети. Это дает возможность серьезно повысить защищенность рабочих станций внутри сети и обеспечить их интернетом без раздачи им реальных IP адресов.

В отличии от прокси сервера (например SQUID), этот способ позволяет хорошо работать не только http, но и ftp/pop3/smtp/ssh/telnet/...... практически ЛЮБОМУ сервису. При этом не нужно объяснять сервису, что он работает через прокси.

Для организации раздачи можно использовать следующий скрипт.

#!/bin/sh

# полная версия находится здесь: http://lafox.net/docs/masq/

IPTABLES=/sbin/iptables

DEPMOD=/sbin/depmod

MODPROBE=/sbin/modprobe

EXTIF="eth0"

INTIF="eth1"

$DEPMOD -a

$MODPROBE ip_tables

$MODPROBE ip_conntrack

$MODPROBE ip_conntrack_ftp

$MODPROBE ip_conntrack_irc

$MODPROBE iptable_nat

$MODPROBE ip_nat_ftp

$MODPROBE ip_nat_irc

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT ACCEPT

$IPTABLES -F INPUT

$IPTABLES -P OUTPUT ACCEPT

$IPTABLES -F OUTPUT

$IPTABLES -P FORWARD DROP

$IPTABLES -F FORWARD

$IPTABLES -t nat -F

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

$IPTABLES -A FORWARD -j LOG

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

echo -e "done.\n"

Давайте сохраним это в файлик и назовем его, к примеру masq.sh. Далее поправляем переменные:

Также, возможно, следует закомментировать строку:

$IPTABLES -A FORWARD -j LOG

Этим мы отключим логирование. Иначе, в больших сетях могут возникнуть проблемы с огромными размерами log файлов.

Далее просто запускаем этот скрипт и радуемся тому, что локальная сеть получила интернет. :-)

Посмотреть на то, что сделал этот скрипт с iptables, можно командочками:

# iptables -L

# iptables -L -t nat

Задания:

  1. Раздать интернет