#!/bin/sh # настройка сетевого беспредела # eth0 - внутрення сеть eth1 - внешняя сеть (упыри) #заполняем нужные адреса export lanlist="192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.5 192.168.0.6 192.168.0.9 192.168.0.10 192.168.0.12 192.168.0.13 192.168.0.14 192.168.0.15 192.168.0.17 192.168.0.19 192.168.0.22 192.168.0.23 192.168.0.27 192.168.0.28 192.168.0.30 192.168.0.31 192.168.0.32 192.168.0.33 192.168.0.34 192.168.0.38 192.168.0.44 192.168.0.47 192.168.0.50 192.168.0.62 192.168.0.65 192.168.0.68 192.168.0.71 192.168.0.87 192.168.0.97" export inetlist="172.1.2.3 172.1.2.4" PROXY_IP="192.168.0.1" PROXY_PORT="8080" THIS_PORT="8081" # по умолчанию все в append ACTION="A" #поехали case "$1" in serv_stop) service iptables stop #Так надо echo 0 > /proc/sys/net/ipv4/ip_forward ;; serv_start) #Так надо echo 1 > /proc/sys/net/ipv4/ip_forward service iptables save service iptables start chkconfig iptables on ;; all_drop) $0 serv_stop #Очистка всех правил iptables -F -t nat iptables -F -t filter #Правила по умолчанию iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP $0 serv_start ;; rule) $0 serv_stop echo "метод $ACTION сеть" #  Секция входящего (по отношению к серверу) трафика #Для этой машины (сервера) iptables -$ACTION INPUT -j ACCEPT -i lo for addr in ${lanlist} do #Для клиентов #Секция входящего (по отношению к серверу) трафика #Клиенты iptables -$ACTION INPUT -j ACCEPT -p all -i eth0 -s ${addr}/32 #  Секция перенаправления трафика #Клиенты #вход iptables -$ACTION FORWARD -j ACCEPT -s ${addr}/32 #выход iptables -$ACTION FORWARD -j ACCEPT -d ${addr}/32 #  Секция исходящего (по отношению к серверу) трафика # Несмотря на то, что по умолчанию OUTPUT ACCEPT, прописываем всех явно #Клиенты iptables -$ACTION OUTPUT -j ACCEPT -p all -d ${addr}/32 done # собственно сама таблица NAT #iptables -t nat -$ACTION POSTROUTING -o eth1 -j MASQUERADE #iptables -t nat -$ACTION POSTROUTING -s 192.168.0.0/24 -j MASQUERADE iptables -t nat -$ACTION POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 192.168.1.12 #iptables -t nat -$ACTION POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE #$0 serv_start #;; #inet_rule) #$0 serv_stop #Заделываем проброс клиентво извне на прокси echo "метод $ACTION клиенты инета" for addr in ${inetlist} do #Заделываем проброс клиентво извне на прокси iptables -t nat -$ACTION PREROUTING -s ${addr} -p tcp --dport $THIS_PORT -j DNAT --to $PROXY_IP:$PROXY_PORT iptables -$ACTION FORWARD -s ${addr} -p tcp --dport $THIS_PORT -d $PROXY_IP -j ACCEPT done $0 serv_start ;; rule_on) ACTION="A" $0 rule ;; rule_off) ACTION="D" $0 rule ;; show) iptables -L -t nat iptables -L -t filter ;; *) echo "m_rule (all_go | all_drop | rule_on | rule_off | show)" exit;; esac exit