Доброго времени суток. Пытаюсь открыть nat на несколько компов в сети, но ни чего у меня не получается...
Перелопатил пол инета все что нашел не помогло да и пробросы отдельных портов в основном попадаются.
схема классическая Inet->(ADSL)->("eth0"сервак"eth1")->("hub"local)
IP статика -> ADSL
eth0 смотрит в модем (192.168.0.2)
eth1 локалка (192.168.1.1) воткнут в хаб
Собственно КОНФИГ
#!/bin/bash
IPTABLES="/sbin/iptables"
IF_OUT="eth0"
IF_LAN="eth1"
MASK_LAN="192.168.1.0/24"
IF_LO="lo"
ADDR_LO="127.0.0.1"
LOOPBACK="127.0.0.0/8"
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.ip_dynaddr=1
sysctl net.ipv4.conf.all.forwarding=1
modprobe ip_nat_ftp
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
$IPTABLES -N sshguard
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -I INPUT -p tcp --dport 4000 -j DROP
$IPTABLES -I FORWARD -p tcp --dport 4000 -j ACCEPT
$IPTABLES -I OUTPUT -p tcp --dport 4000 -j ACCEPT
$IPTABLES -N common-check
$IPTABLES -F common-check
$IPTABLES -A common-check -m state --state INVALID -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A common-check -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags ALL NONE -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A common-check -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -N icmp-in
$IPTABLES -F icmp-in
$IPTABLES -A icmp-in -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A icmp-in -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A icmp-in -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPTABLES -N statefull
$IPTABLES -F statefull
$IPTABLES -A statefull -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -j common-check
$IPTABLES -I INPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -i $IF_LAN -j ACCEPT
$IPTABLES -A sshguard -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 2 -j DROP
$IPTABLES -A sshguard -m state --state NEW -m recent --name SSH --set -j ACCEPT
$IPTABLES -A sshguard -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j sshguard
$IPTABLES -A INPUT -i $IF_LAN -j ACCEPT
$IPTABLES -A INPUT -i $IF_LO -d $LOOPBACK -j ACCEPT
$IPTABLES -A INPUT -j statefull
$IPTABLES -A OUTPUT -j common-check
$IPTABLES -A FORWARD -j common-check
$IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m conntrack --ctstate NEW -i eth1 -s 192.168.1.0/24 -j ACCEPT #
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.0.2 --dport 5555 -j DNAT --to 192.168.1.50:5555
iptables -A INPUT -p tcp --dport 5555 -j DROP
$IPTABLES -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 192.168.0.2 -j SNAT --to-source 192.168.1.1
# $IPTABLES -t nat -A POSTROUTING -s $MASK_LAN -o $IF_OUT -j MASQUERADE
$IPTABLES -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080
$IPTABLES -A FORWARD -i $IF_LAN -s $MASK_LAN -j ACCEPT
$IPTABLES -A FORWARD -j statefull
echo done!
# $IPTABLES -t nat -A POSTROUTING -s $MASK_LAN -o $IF_OUT -j MASQUERADE
правило открывает нат на локалку
Помогите разобраться всю голову сломал, может в конфиге где что не так? или можно оптимизировать его....
Заранее благодарен...