Система чем мне интересная что у меня в скрипте можна быстро делать изменения по ip доступ и порты. Нужно для того чтобы организовать nat с маскарадингом ну как полный так и по портах. Сервер с 2 сетями и PPPOE поднят к провайдеру как раз на него и нужен NAT. Кто не сочтет за трудность помогите буду признателен. Заранее благодарю.

И вот обязательно ли это:
Для работы nat в ipfw надо :
В /etc/make.conf добавить строку CFLAGS+= -DIPFIREWALL_NAT
и пересобрать модуль ipfw.ko
# cd /usr/src/sys/modules/ipfw
# make && make install
Код: Выделить всё
#!/bin/bash
fr=/sbin/iptables
rt=/sbin/route
#RUN config PPTP TUNEL
pptp="0" #Start pptp yes(1) pptp no(0)
pidtun="/var/run/ppp0.pid" #Procesed TUNEL
#READ NAT IP
natip=`cat /etc/firewall/nat/ip`
natport=`cat /etc/firewall/nat/port`
inter=`cat /etc/firewall/nat/interfiseNAT`
#READ IP SSH
ipssh=`cat /etc/firewall/openssh/ssh_ip`
#Ethernet interfase
internal1=`cat /etc/firewall/lan1`
internal2=`cat /etc/firewall/lan2`
external=`cat /etc/firewall/wan`
#Ports READ LAN 1
tcplan1=`cat /etc/firewall/port.lan1/tcp`
udplan1=`cat /etc/firewall/port.lan1/udp`
#Ports READ LAN 2
tcplan2=`cat /etc/firewall/port.lan2/tcp`
udplan2=`cat /etc/firewall/port.lan2/udp`
#Ports READ WAN
tcpwan=`cat /etc/firewall/port.wan/tcp`
udpwan=`cat /etc/firewall/port.wan/udp`
#IP_READ
vip_ip=`cat /etc/firewall/vip_ip`
ban_ip=`cat /etc/firewall/ban_ip`
#PPTP + LAN + PPPE
ipl=`cat /etc/firewall/vpn/ipl`
ipgw=`cat /etc/firewall/vpn/gw`
lanvpn=`cat /etc/firewall/vpn/vpninterfise`
provider=`cat /etc/firewall/vpn/provider`
#CLEAR_ALL
echo -en "Clear all..."
$fr -F INPUT
$fr -F OUTPUT
$fr -F FORWARD
$fr -t nat -F
echo "OK"
#Forearding
echo -en "Forwarding open ..."
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "OK"
#Nat setings
echo -en "Nat aplay setings..."
$fr -t nat -A POSTROUTING -s $natip -m multiport -p tcp --dports $natport -o $inter -j MASQUERADE
$fr -t nat -A POSTROUTING -s $natip -p icmp -o $inter -j MASQUERADE
#iptables -t nat -A POSTROUTING -s 192.168.4.1 -m multiport -p tcp --dports 80,21,49152:65534 -o eth0 -j MASQUERADE
#$fr -t nat -A POSTROUTING -s $natip -p tcp --dport $natport -o eth0 -j MASQUERADE
#$fr -t nat -D POSTROUTING -s 192.168.4.1 -o eth0 -j MASQUERADE
#? ?°?·???µ?????‚?? ?????‘ ???? ???°???°???°????
#$fr -A FORWARD -p tcp --dport 80 -i eth0 -j ACCEPT
#$fr -A FORWARD -i eth0 -o eth1 -p tcp -m tcp -d 192.168.4.17 -m multiport --sports pop3,smtp -j ACCEPT
#$fr -A FORWARD -o eth0 -i eth1 -p tcp -m tcp -s 192.168.4.17 -m multiport --dports pop3,smtp -j ACCEPT
echo "OK"
#LOCALHOST_OPEN
echo -en "Open localhost..."
$fr -A INPUT -s localhost -j ACCEPT
$fr -A INPUT -d localhost -j ACCEPT
$fr -A OUTPUT -s localhost -j ACCEPT
$fr -A OUTPUT -d localhost -j ACCEPT
echo "OK"
#VIP_IP
echo -en "Open VIP IP..."
for ip in $vip_ip
{
$fr -A INPUT -s $ip -j ACCEPT
$fr -A OUTPUT -s $ip -j ACCEPT
}
echo "OK"
#BAN_IP
echo -en "Cloced BAN IP..."
for ip in $ban_ip
{
$fr -A INPUT -s $ip -j DROP
$fr -A OUTPUT -s $ip -j DROP
}
echo "OK"
#TCP_PORTS LAN 1
echo -en "Open TCP LNA1..."
for port in $tcplan1
{
$fr -A INPUT -i $internal1 -p tcp -m tcp --dport $port -j ACCEPT
}
echo "OK"
echo -en "Open UDP LAN1..."
for port in $udplan1
{
$fr -A INPUT -i $internal1 -p udp --dport $port -j ACCEPT
}
echo "OK"
#TCP_PORTS LAN 2
echo -en "Open TCP LNA2..."
for port in $tcplan2
{
$fr -A INPUT -i $internal2 -p tcp -m tcp --dport $port -j ACCEPT
}
echo "OK"
echo -en "Open UDP LAN2..."
for port in $udplan2
{
$fr -A INPUT -i $internal2 -p udp --dport $port -j ACCEPT
}
echo "OK"
#UDP_PORTS WLAN
echo -en "Open TCP WAN..."
for port in $tcpwan
{
$fr -A INPUT -i $external -p tcp -m tcp --dport $port -j ACCEPT
}
echo "OK"
echo -en "Open UDP WAN..."
for port in $udpwan
{
$fr -A INPUT -i $external -p udp --dport $port -j ACCEPT
}
echo "OK"
#Open SSH IP Adress
echo -en "Open IP ssh..."
$fr -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
$fr -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j LOG --log-prefix "SSH_brute_force "
$fr -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j DROP
for ips in $ipssh
{
$fr -A INPUT -s $ips -p tcp -m tcp --dport 22 -j ACCEPT
}
echo "OK"
$fr -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$fr -A INPUT -j REJECT --reject-with icmp-net-unreachable
#CLOSED_ALL
echo -en "Closed all..."
$fr -A INPUT -j DROP
$fr -A OUTPUT -j DROP
#$fr -P FORWARD DROP
echo "OK"
sleep 1
echo -en "Script Done ...."
echo "OK"