Здравствуйте,
Сам я пока только осваиваю мир линукс, поэтом хочу проконсультироваться у вас у профессионалов.
Читая документацию источники в интернете и исходя из задачи сделал следующий набор правили.
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
IPT=/sbin/iptables
# SIP сеть
SIPNET=192.168.3.0/24
# Локальная сеть
LOCALNET=192.168.1.0/24
LAN_ADAPTER=eth1
WAN_ADAPTER=eth0
/sbin/modprobe iptable_nat
/sbin/modprobe nf_conntrack_sip
/sbin/modprobe nf_nat_sip
# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
# Закрываю изначально всё
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# разрешаю локальный траффик для внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN_ADAPTER -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN_ADAPTER -j ACCEPT
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Включаю фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаю доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN_ADAPTER -o $WAN_ADAPTER -j ACCEPT
# Запрещаю доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN_ADAPTER -o $LAN_ADAPTER -j REJECT
# Включил нат
$IPT -t nat -A POSTROUTING -o $WAN_ADAPTER -s $USERNET -j MASQUERADE
Политика по умолчанию у меня DROP
Мне необходимо чтобы через мой компьютер другие компьютер USERNET ходили в интернет.
Мне также необходимо чтобы доступ снаружи был закрыть, а доступ изнутри был полностью открыт и без ограничений.
Наверное много лишнего? хотелось бы максимально оптимизировать скрипт.