Сервер не хочет работать как шлюз [SOLVED]

Привет всем.
При настройке граничного сервера возникла проблема с NATом. iptables не пропускает пакеты во внешнюю сеть.
интерфейс eth0 - локальная сеть, 192.168.0.100
интерфейс eth1 - внешка, через роутер, 192.168.1.100. Роутер 192.168.1.3

rules-save:

# Generated by iptables-save v1.4.3.2 on Tue May 11 18:20:28 2010
*raw
:PREROUTING ACCEPT [492580053:315870131833]
:OUTPUT ACCEPT [486590949:699392723817]
COMMIT
# Completed on Tue May 11 18:20:28 2010
# Generated by iptables-save v1.4.3.2 on Tue May 11 18:20:28 2010
*nat
:PREROUTING ACCEPT [18523526:2056689826]
:POSTROUTING ACCEPT [9377843:856100067]
:OUTPUT ACCEPT [31950154:2989114079]
[3:276] -A POSTROUTING -s 192.168.0.0/24 -d 86.57.151.0/27 -o eth1 -j SNAT --to-source 192.168.1.3 
COMMIT
# Completed on Tue May 11 18:20:28 2010
# Generated by iptables-save v1.4.3.2 on Tue May 11 18:20:28 2010
*mangle
:PREROUTING ACCEPT [492580052:315870144312]
:INPUT ACCEPT [483583572:314174892272]
:FORWARD ACCEPT [8796604:1684064349]
:OUTPUT ACCEPT [486590913:699392730524]
:POSTROUTING ACCEPT [495406662:701082785178]
COMMIT
# Completed on Tue May 11 18:20:28 2010
# Generated by iptables-save v1.4.3.2 on Tue May 11 18:20:28 2010
*filter
:INPUT ACCEPT [388676050:286937159990]
:FORWARD ACCEPT [84208:4836879]
:OUTPUT ACCEPT [486590869:699392723010]
[3344958:605252014] -A INPUT -i eth1 -j ACCEPT 
[18421:12528151] -A INPUT -i eth1 -p tcp -m multiport --dports 6666,6881 -j ACCEPT 
[24:2062] -A INPUT -i eth1 -p udp -m multiport --dports 6666,6881 -j ACCEPT 
[38194:1842704] -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
[538789:365788344] -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 
[3973106:219802057] -A FORWARD -i eth0 -o eth1 -j ACCEPT 
[259767:77546751] -A FORWARD -d 192.168.0.0/24 -i eth1 -j ACCEPT 
COMMIT
# Completed on Tue May 11 18:20:28 2010

sysctl.conf

# /etc/sysctl.conf
#
# For more information on how this file works, please see
# the manpages sysctl(8) and sysctl.conf(5).
#
# In order for this file to work properly, you must first
# enable 'Sysctl support' in the kernel.
#
# Look in /proc/sys/ for all the things you can setup.
#

# Disables packet forwarding
net.ipv4.ip_forward = 1
# Disables IP dynaddr
net.ipv4.ip_dynaddr = 1
# Disable ECN
net.ipv4.tcp_ecn = 1
# Enables source route verification
net.ipv4.conf.default.rp_filter = 1
# Enable reverse path
net.ipv4.conf.all.rp_filter = 1

# Enable SYN cookies (yum!)
# http://cr.yp.to/syncookies.html
#net.ipv4.tcp_syncookies = 1

# Disable source route
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv4.conf.default.accept_source_route = 0

# Disable redirects
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.default.accept_redirects = 1

# Disable secure redirects
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.default.secure_redirects = 1

# Ignore ICMP broadcasts
#net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disables the magic-sysrq key
#kernel.sysrq = 0
# When the kernel panics, automatically reboot in 3 seconds
#kernel.panic = 3
# Allow for more PIDs (cool factor!); may break some programs
#kernel.pid_max = 999999

# You should compile nfsd into the kernel or add it
# to modules.autoload for this to work properly
# TCP Port for lock manager
#fs.nfs.nlm_tcpport = 0
# UDP Port for lock manager
#fs.nfs.nlm_udpport = 0

Что я делаю не так?

eth0 - локальная сеть,

eth0 - локальная сеть, 192.168.0.100
eth1 - внешка, через роутер, 192.168.1.100

Скрипт

#!/bin/bash
IPT='/sbin/iptables'
LAN=eth0
LAN_IP=192.168.0.100
LAN_NET=192.168.0.0/24
WAN=eth1
WAN_IP=192.168.1.100
WAN_NET=192.168.1.0/24

echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

$IPT -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m conntrack --ctstate NEW -i ${LAN} -s 192.168.0.0/24 -j ACCEPT # Форвардить новые соединения приходящие с интерфейса LAN с адресами 192.168.0.0/24
$IPT -P FORWARD DROP # все остальные в сад!

$IPT -t nat -F POSTROUTING # очистим POSTROUTING
$IPT -t nat -A POSTROUTING -o ${WAN} -j SNAT --to-source ${WAN_IP} # все что идет на eth1 подменять на 192.168.1.100

как то так

Спасибо, помогло!!!

Спасибо, помогло!!!

gentooman написал(а): Привет

gentooman написал(а):
Привет всем.
При настройке граничного сервера возникла проблема с NATом. iptables не пропускает пакеты во внешнюю сеть.
интерфейс eth0 - локальная сеть, 192.168.0.100
интерфейс eth1 - внешка, через роутер, 192.168.1.100. Роутер 192.168.1.3
...
Что я делаю не так?

Я, например, не совсем понял как у вас устроена сеть.
1) 192.168.1.3 - это случайно не ADSL модем или какой-нибудь маршрутизатор провайдера?
2) У сети 192.168.0.100 какая маска? 24 бита на сеть (255.255.255.0)?
3) 192.168.1.100 - это адрес интерфейса вашего сервера в локальной сети, который предположительно соединен вторым интерфейсом в ADSL модемом?
Если на все вопросы ответ ДА, тогда вам по всей видимости достаточно только этих правил фильтрации:
iptables -t filter -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

А POSTROUTING удалите.

Справедливость восторжествует.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".