Помогите настроить NAT

Технические вопросы по UTM 5.0
Ответить
OxOyD
Сообщения: 36
Зарегистрирован: Вс сен 16, 2012 16:29

Помогите настроить NAT

Сообщение OxOyD »

настройка биллинга встала на настройке сети, iptables ни в какую не дает подключать или отключать пользователей по одному. Имеется два интерфейса eth0 и eth1, eth0 получает инет, eth1 раздает.
Пробывал такие правила:

iptables -P FORWARD DROP

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.20.30.40

c последующим подключением:

iptables -A FORWARD -s 192.168.1.50 -j ACCEPT

и отключением пользователя:

iptables -D FORWARD -s 192.168.1.50 -j ACCEPT

Не работает, работает только если полностью открыть проброс пакетов:

iptables -A FORWARD -j ACCEPT

Что делаю не так? Как заствить nat открывать форвардинг не всей сети, а конкретным пользователям?

RuffiAn
Сообщения: 107
Зарегистрирован: Пн янв 24, 2011 16:11

Сообщение RuffiAn »

Попробуй вот этот скрипт думаю поможет

#!/bin/sh
# /etc/init.d/firewall: set up the firewall
### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $networking
# Required-Stop: $networking
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO

# Переменная, задающая путь к файлу запуска iptables.
IPT="/usr/local/sbin/iptables"

# Интернет интерфейс
INET_IFACE2="eth3"

# Внутренний интерфейс
INET_IFACE0="eth4"
INET_IFACE1="eth2"

start_fw()
{
# Сбросить правила и удалить цепочки.
$IPT -F
$IPT -X

# Политики по умолчанию - запретить все
$IPT -P INPUT DROP
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

# Стандартная защита от некоторых видов атак извне
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP

# Разрешаем прохождение любого трафика по интерфейсу обратной петли.
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# Разрешаем прохождение любого трафика по внутренней сети
$IPT -A INPUT -i $INET_IFACE1 -j ACCEPT
$IPT -A OUTPUT -o $INET_IFACE1 -j ACCEPT
$IPT -A INPUT -i $INET_IFACE0 -j ACCEPT
$IPT -A OUTPUT -o $INET_IFACE0 -j ACCEPT

# Коллектор
$IPT -I FORWARD -j NETFLOW

# Включить OSPF Quagga
# 89 протокол для 224.0.0.5, 224.0.0.6 и ip_of_gre.
$IPT -t filter -I INPUT -p 89 -j ACCEPT
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -I FORWARD -m udp -p udp -m string --hex-string "|7F FF FF FF AB|" --algo kmp --from 40 --to 44 -j DROP

$IPT -A FORWARD -s 195.x.x.0/22 -p tcp -m tcp --dport 25 -m state --state NEW -m recent --set --name SMTP
$IPT -A FORWARD -s 188.x.x.0/21 -p tcp -m tcp --dport 25 -m state --state NEW -m recent --set --name SMTP
$IPT -A FORWARD -s 172.0.0.0/8 -p tcp -m tcp --dport 25 -m state --state NEW -m recent --set --name SMTP
$IPT -A FORWARD -s 195.x.x.0/22 -p tcp -m tcp --dport 25 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --name SMTP -j REJECT --reject-with icmp-port-unreachable
$IPT -A FORWARD -s 188.x.x.0/21 -p tcp -m tcp --dport 25 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --name SMTP -j REJECT --reject-with icmp-port-unreachable
$IPT -A FORWARD -s 172.0.0.0/8 -p tcp -m tcp --dport 25 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --name SMTP -j REJECT --reject-with icmp-port-unreachable


# Разрешаем ICMP соединение.
$IPT -A INPUT -p icmp -m icmp -i $INET_IFACE2 --icmp-type source-quench -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE2 --icmp-type source-quench -j ACCEPT

# Разрешаем себе ping наружу - нас же не попингуешь - пакеты отбрасываются.
$IPT -A INPUT -p icmp -m icmp -i $INET_IFACE2 --icmp-type echo-reply -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE2 --icmp-type echo-request -j ACCEPT

$IPT -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1460


$IPT -t nat -A POSTROUTING -s 172.16.0.0/16 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 172.18.0.0/16 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 172.19.0.0/16 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 172.20.0.0/16 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 172.21.0.0/16 -j MASQUERADE

}

case "$1" in
start) echo -n "Starting firewall: iptables"
start_fw
echo "."
;;
stop) echo -n "Stopping firewall: iptables"
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "."
;;
*) echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac
exit 0

TheUser
Сообщения: 33
Зарегистрирован: Чт мар 30, 2006 12:52

Re: Помогите настроить NAT

Сообщение TheUser »

OxOyD писал(а): Что делаю не так? Как заствить nat открывать форвардинг не всей сети, а конкретным пользователям?
Может дело в том, что -s IP пропускает только исходящий, а нужно еще -d IP для входящего?

Ответить