iptables и беременность мозга (просто мистика)

Ситуация такая:
Сервер имеет две сетевые карты
tux-server ~ # ifconfig
eth0 Link encap:Ethernet HWaddr 00:e0:4c:51:6a:6f
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0

eth2 Link encap:Ethernet HWaddr 00:21:91:7a:32:a0
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0

eth0 смотрит на ADSL модем с которого получает инет как с роутера
eth2 смотрит в локалку

нцжно дать инет локалке через сервер, делаю следующее:
tux-server ~ # iptables -F
tux-server ~ # iptables -t nat -F
tux-server ~ # iptables -P INPUT ACCEPT
tux-server ~ # iptables -P OUTPUT ACCEPT
tux-server ~ # iptables -P FORWARD DROP
tux-server ~ # export LAN=eth2
tux-server ~ # export WAN=eth0
tux-server ~ # iptables -I FORWARD -i ${LAN} -d 192.168.1.0/255.255.0.0 -j DROP
tux-server ~ # iptables -A FORWARD -i ${LAN} -s 192.168.1.0/255.255.0.0 -j ACCEPT
tux-server ~ # iptables -A FORWARD -i ${WAN} -d 192.168.1.0/255.255.0.0 -j ACCEPT
tux-server ~ # iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

После этого на машине с сетевой настроенной так:
config_eth0=( "192.168.1.77 netmask 255.255.255.0 brd 192.168.1.255" )
routes_eth0=( "default via 192.168.1.2" )
dns_servers_eth0="212.96.96.38 212.96.104.129"

vitek-laptop vitek # ping ya.ru
PING ya.ru (213.180.204.8) 56(84) bytes of data.
64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=55 time=37.6 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=55 time=36.8 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=3 ttl=55 time=39.3 ms

Тоесть с командной строки сайты пингуются, но инета на машине нет, ни один браузер инет не показывает. Немогу понять что делаю не так?

на всякий случай:
tux-server ~ # iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy DROP)
target prot opt source destination
DROP all -- anywhere 192.168.1.0/24
ACCEPT all -- 192.168.1.0/24 anywhere
ACCEPT all -- anywhere 192.168.1.0/24

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
tux-server ~ # iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

быть

быть может,

http://www.gentoo.org/doc/en/home-router-howto.xml написал(а):
Incorrect MTU Value

If you experience odd errors (such as not being able to access some webpages while others load fine), you may be having Path MTU Discovery trouble. The quick way to test is to run this iptables command:

Code Listing 7.2: Circumvent MTU issues
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

This will affect all new connections, so just refresh the website you're having problems with in order to test. In case it helps, the standard MTU value for 100mbit ethernet connections is 1500; this value also applies to PPPoA. For PPPoE connections it is 1492. For more info, you should read Chapter 15 of the Linux Advanced Routing & Traffic Control HOWTO.

If that command does not work for you, you may want to try putting the rule into the mangle table. Simply add -t mangle to the command.

Или забыли сделать это:echo

Или забыли сделать на сервере это:
echo 1 > /proc/sys/net/ipv4/ip_forward

Нащяльника, мая сервира паставиль, фрибизьдя инсталя сделаль, апачи сабраль, пыхапе патключиль, сапускаю, а ано - ажамбех пашамбе эшельбе шайтанама!

Пока ничего не помогло,

Пока ничего не помогло, добавил правило
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Но ситуация никак не поменялась.

# cat /proc/sys/net/ipv4/ip_forward
1

что-то

что-то с утра на трезвую голову не догоняю назначение правил

vitek написал(а):
Ситуация такая:
tux-server ~ # iptables -I FORWARD -i ${LAN} -d 192.168.1.0/255.255.0.0 -j DROP
tux-server ~ # iptables -A FORWARD -i ${LAN} -s 192.168.1.0/255.255.0.0 -j ACCEPT

а потому добавил бы тупо перед ними

iptables -A FORWARD -i 192.168.1.2 -o 192.168.0.2 -j ACCEPT

что-то добрый я сегодня ....

Не помогло :( сейчас есть

Не помогло :( сейчас есть мысль сформировать которую трудно попробую отпишусь

Попробуйте для начала

Попробуйте для начала так:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p ALL -i ${LAN} -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

Как писал evadim, скорее

Как писал evadim, скорее всего Ваша проблема в размере MTU (неспособности Вашей системы работать с фрагментированными пакетами). По крайней мере симптомы именно такие - маленькие пакеты ходят - ping, DNS (по UDP), а большие умирают. Отследить это можно при помощи tcpdump. Если так Вас есть два варианта:
1. Правильный вариант: настроить работу с фрагментированными пакетами.
2. Так себе вариант: выставить значение MTU поменьше (стандартное 1500).

совершенно не обязательно

совершенно не обязательно использовать tcpdump. достаточно
использовать ping с опцией -s. например.

kvolodin@gamma ~/Scripts/Python $ ping 78.36.235.237 -s 1469 -c 3
PING 78.36.235.237 (78.36.235.237) 1469(1497) bytes of data.

--- 78.36.235.237 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms

kvolodin@gamma ~/Scripts/Python $ ping 78.36.235.237 -s 1468 -c 3
PING 78.36.235.237 (78.36.235.237) 1468(1496) bytes of data.
1476 bytes from 78.36.235.237: icmp_seq=1 ttl=56 time=20.9 ms
1476 bytes from 78.36.235.237: icmp_seq=2 ttl=56 time=22.3 ms
1476 bytes from 78.36.235.237: icmp_seq=3 ttl=56 time=21.4 ms

--- 78.36.235.237 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 20.979/21.571/22.301/0.573 ms

таким образом можно вычислить mtu.

хм.. а зачем, уже имея РОУТЕР

хм.. а зачем, уже имея РОУТЕР (ADSL) еще один настраивать? который в принципе ничего не делает... squd+pdnsd+авторизация(если надо) - и все есть. И даже больше, чем указанными правилами.

P.S.: Linux - это красная таблетка :-) Windows - синяя...

лично у меня старый комп

лично у меня старый комп работает быстрее роутера.

В моем случае роутер это

В моем случае роутер это D-link 2500U не такой уж он и функциональный. + мне просто интересно заставить сервер работать в качестве роутера. + скоро мне нужно будет настроить подобную связку так чтобы можно было посчитать трафик копмов в сети, пока остановился на NetAMS для этих целей.

Я бы сделал таким

Я бы сделал таким образом

~#sysctl net.ipv4.ip_forward = 1

и на будующее чтобы после перезагрузки не писать по новой

~#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

правила iptables

-t nat -A POSTROUTING -s 192.168.1.0/24 -o ${WAN} -j SNAT --to-source 192.168.0.2
-t filter -A FORWARD -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT
-t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

политики можно оставить открытыми все кроме FORWARD но я предпочитаю такой вариант

INPUT:DROP
FORWARD:DROP
OUTPUT:ACCEPT

а в правила добавить

-t filter -A INPUT -s <ip_доверенного_хоста> -j ACCEPT
-t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

также для правил INPUT при помощи ключей -p и --dport можно при желании четко ограничить порты и протокол для подключения, но это уже другая история :)

Вобщем именно в такой связке у меня все и работает, за исключением только, что сервак у меня одновременно и устройство соединения с оператором :). Про mtu кстати тоже очень логичное замечание, но подсказать по этому поводу ничего не могу - не секу в этом почти :)

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

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