Как раздать интернет через NAT
Допустим, вам необходимо, чтобы машины из локальной сети имели доступ к интернету. В этом случае сервер должен выполнять функции роутера (маршрутизатора). В нем должно быть как минимум две сетевых карты (два сетевых интерфейса):
- один подключен к интернет-провайдеру (например, eth0);
- второй включен во внутреннюю сеть (например, eth1).
Для раздачи интернета во внутреннюю сеть можно использовать:
- NAT или, как он еще называется, IP маскарадинг
- Прокси-сервер (например, squid).
NAT в отличие от Proxy, позволяет хорошо работать не только http, но и ftp, pop3, smtp, ssh, telnet, - то ест практически любому протоколу. При этом не нужно объяснять сервису, что он работает через прокси, прописывая соответствующие настройки в клиентские программы.
Для того, что начать раздавать в локальную сеть интернет через NAT на PCLinuxOS, нужно написать скрипт с таким содержанием:
#!/bin/sh
IPTABLES=/sbin/iptables
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe
# EXTIF - это интерфейс, который смотрит в сторону провайдера.
EXTIF="eth0"
# INTIF - это интерфейс, который смотрит во внутреннюю сеть.
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"
И сохранить его в файл, назвав, например, nat.sh.
Также можно закомментировать строку $IPTABLES -A FORWARD -j LOG, чтобы отключить логирование. Иначе, в больших сетях могут возникнуть проблемы с огромными размерами log файлов.
Далее необходимо запустить этот скрипт, чтобы локальная сеть получила интернет через NAT.
Примечания
* Посмотреть, что делает скрипт с iptables, можно командами:
# iptables -L
# iptables -L -t nat
** IP-маскарадинг можно использовать совместно с кэширующим прокси-сервером.
*** Существует более простой способ настройки NAT. По идее, чтобы все заработало, достаточно добавить в файл /etc/init.d/network следующие строки:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables-save
echo 1 > /proc/sys/net/ipv4/ip_forward