вторник, октября 02, 2012

NAT

Задача: разрешить пользователям локальной сети иметь доступ к ресурсам глобальной сети (Internet).

ОС: CentOS v5.8

Все действия выполняются от пользователя root. Настроим NAT. eth0 - локальная сеть, eth1 - интернет.:

shell> iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
shell> echo 1 > /proc/sys/net/ipv4/ip_forward
shell> /etc/init.d/iptables restart

MASQUERADE - удобно использовать, если у вас динамический IP. Отредактировать в файле /etc/sysctl.conf параметр:

net.ipv4.ip_forward = 1

Применить настройки:

shell> sysctl -p

Если требуется чтоб пользователи могли из локальной сети подключатся к удаленным VPN PPTP серверам тогда потребуется модуль ip_nat_pptp.. Для этого надо отредактировать файл /etc/sysconfig/iptables-config добавив нужные модули:

IPTABLES_MODULES="ip_nat_pptp ip_nat_ftp"

И перезапустить iptables:

/etc/init.d/iptables restart

После этого больше ничего делать не потребуется.

И напоследок минимальный скрипт, который дает доступ только к http/https и разрешает пинговать внешние ресурсы:

!/bin/bash

ipt="/sbin/iptables"
lan="eth0"                      # lan
wan="eth1"                      # wan
subnet="192.168.40.0/22"        # local subnet


# flush all
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X


# policy default
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD DROP

# allow lo
$ipt -A INPUT -i lo -j ACCEPT

# permit established
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# permit ssh
$ipt -A INPUT -p tcp --dport 22 -j ACCEPT

# permit ports
$ipt -t filter -A FORWARD -s $subnet -p tcp -m multiport --dport http,https -j ACCEPT
$ipt -t filter -A FORWARD -s $subnet -p icmp -j ACCEPT

# NAT (lan -> wan)
$ipt -t nat -A POSTROUTING -o $wan -j MASQUERADE
$ipt -t filter -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# save iptables rules
service iptables save

Этот скрипт надо запускать каждый раз когда вы вносите в него изменения. После всех изменений сами правила для iptables будут сохранены в /etc/sysconfig/iptables. Именно его система будет загружать при загрузке системы.


Комментариев нет:

Отправить комментарий