URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 36969
[ Назад ]

Исходное сообщение
"Тематический каталог: Скрипт для включения NAT в Gentoo Linux (gentoo linux script nat msquerade)"

Отправлено auto_topic , 19-Мрт-07 01:52 
Обсуждение статьи тематического каталога: Скрипт для включения NAT в Gentoo Linux (gentoo linux script nat msquerade)

Ссылка на текст статьи: http://www.opennet.me/base/net/gentoo_masquerade.txt.html


Содержание

Сообщения в этом обсуждении
"Скрипт для включения NAT в Gentoo Linux (gentoo linux script nat msquerade)"
Отправлено drew , 19-Мрт-07 01:52 
ИМХО, iptables интересней инициализировать из единого скрипта, в котором все (а не только NAT-related) modprobe´ы нужных модулей и правила

"Скрипт для включения NAT в Gentoo Linux (gentoo linux script nat msquerade)"
Отправлено sabitov , 19-Мрт-07 10:02 
МММ, лучше все ж делать чуть-чуть не так :)))

~ # cat /etc/init.d/firewall
#!/sbin/runscript


opts="depend start stop status restart reload force-reload test"

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

COMMON=/usr/local/lib/firewall/firewall-common-rules
MAC=/usr/local/lib/firewall/MAC-allowed

NAME=firewall
DESC="firewall setup"
TESTDELAY=10

depend () {
    use logger
}

start () {
        echo "Starting $DESC"
        echo
        $COMMON
        $MAC
}

stop () {
        echo "Cleaning $DESC"

        iptables -P INPUT   ACCEPT
        iptables -P OUTPUT  ACCEPT
        iptables -P FORWARD ACCEPT

        for t in filter nat mangle; do
                iptables -t $t -F
                iptables -t $t -X
                iptables -t $t -Z
        done
}

status () {
        for t in filter nat mangle; do
                echo "============================================================= $t ======"
                iptables -t $t -L -n
        done
}

restart () {
        echo "Restarting $DESC"
        svc_stop
        sleep 1
        svc_start
}

reload () {
        restart
}

force-reload () {
        restart
}

test () {
        echo "Testing $DESC"
        start
        sleep $TESTDELAY
        stop
}

Тот что /usr/local/lib/firewall/firewall-common-rules содержит примерно такое (показываю только куски, что бы была понятна идея :))) ):

NET_L=172.16.0.0/16
NET_R=1.1.1.0/25
NET_Rold=2.2.2.0/24

black_file="/usr/local/lib/firewall/black-list"
white_file="/usr/local/lib/firewall/white-list"

#INPUT
#Список хостов с которых допустим ssh (только своя сетка)
accept_ssh="$NET_L $NET_R $NET_Rold"
#Список служб к которым открыт доступ всем (публичные)
accept_from_all_tcp="53 80 443 17000"
accept_from_all_udp="53 "

#Список служб к которым открыт доступ только из локальной сети (публичные)
accept_from_local_tcp="3128 137 138 139 445"
accept_from_local_udp="67 68 137 138 139 445"

# Разрешено из локальной сети
for a in $accept_from_local_tcp; do
    iptables -A tcp_packets -p TCP -s $NET_R    --dport  $a -j allowed_tcp
    iptables -A tcp_packets -p TCP -s $NET_L    --dport  $a -j allowed_tcp
    iptables -A tcp_packets -p TCP -s $NET_Rold --dport  $a -j allowed_tcp
done

# Разрешено всем
for a in $accept_from_all_tcp; do
    iptables -A tcp_packets -p TCP -s 0/0 --dport  $a -j allowed_tcp
done

iptables -A INPUT -p TCP  -j bad_tcp_packets
iptables -A INPUT -p ALL  -j mac_allowed

for a in $white_list; do
    iptables -A INPUT -p ALL -s $a -j ACCEPT
done

for a in $black_list; do
    iptables -A INPUT -p ALL -s $a -j DROP
done

iptables -A INPUT -p TCP  -j tcp_packets
iptables -A INPUT -p UDP  -j udp_packets
iptables -A INPUT -p ICMP -j icmp_packets

#Убиваем все входящие пакеты, дошедшие до этого места
iptables -A INPUT   -p ALL    -j LOG --log-prefix "INPUT died: "
iptables -A INPUT   -p ALL    -j DROP


iptables -t nat -A PREROUTING -p tcp -s 172.16.0.0/16 --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp -s 172.16.0.0/16 --dport 8080 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp -s 172.16.0.0/16 --dport 9080 -j REDIRECT --to-ports 3128

iptables -A POSTROUTING -t nat -s 172.16.0.0/16 -o $INET_IF -j SNAT --to-source $IP


/usr/local/lib/firewall/MAC-allowed заполняет цепочку такими правилами (создаютя автоматом):
iptables -A mac_allowed -s  172.16.2.72 -m mac --mac-source 08:00:09:ed:8b:80 -j RETURN
iptables -A mac_allowed -s  172.16.2.73 -m mac --mac-source 00:10:83:2e:c6:40 -j RETURN
iptables -A mac_allowed -s  172.16.2.74 -m mac --mac-source 00:30:c1:55:af:ec -j RETURN
iptables -A mac_allowed  -j LOG --log-prefix "MAC Dropped: "
iptables -A mac_allowed  -j DROP


"Скрипт для включения NAT в Gentoo Linux (gentoo linux script nat msque"
Отправлено anonymous , 22-Фев-08 00:03 
какие-то вы извращенцы. Нафиг вообще пихать правила iptables в загрузочный скрипт? /var/lib/rules.save и /etc/init.d/iptables для чего?

"Скрипт для включения NAT в Gentoo Linux (gentoo linux script nat msque"
Отправлено anonymous , 22-Фев-08 00:04 
* /var/lip/iptables/rulez.save