CentOS 5.4
Есть локальная сеть Eth1 192.168.255.0/24, сеть провайдера eth0 DHCP. Доступ в интернет осуществляется через pptp. Адрес VPN сервера всегда разный и лежит в подсети 192.168.0.0/255.255.255.0. DNS 81.28.160.1 81.28.160.111. Для ДНС и ВПН сервера прописаны постоянные маршруты при поднятии eth0.В /etc/sysctl.conf net.ipv4.ip_forward=1
Сделаны:
/sbin/modprobe ipt_nat
/sbin/modprobe ipt_masqueradePptp поднимается на линух машине и с него все пингуется и через wget можно скачать страницу, например ya.ru. На Вынь ХР, находящейся в сети пинги, проходят нормально, но через explorer страницы не грузятся.
Не могу понять где затык...
Все листинги сняты при поднятом pptp.
[root@homegate tmp]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:1B:11:C3:06:DB
inet addr:10.13.136.29 Bcast:10.13.136.63 Mask:255.255.255.192
inet6 addr: fe80::21b:11ff:fec3:6db/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10769 errors:0 dropped:0 overruns:0 frame:0
TX packets:7377 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7292589 (6.9 MiB) TX bytes:1353202 (1.2 MiB)
Interrupt:185 Base address:0x2000eth1 Link encap:Ethernet HWaddr 00:11:5B:98:6C:D5
inet addr:192.168.255.1 Bcast:192.168.255.255 Mask:255.255.255.0
inet6 addr: fe80::211:5bff:fe98:6cd5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7776 errors:0 dropped:0 overruns:0 frame:0
TX packets:7916 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1452977 (1.3 MiB) TX bytes:7201324 (6.8 MiB)
Interrupt:193 Base address:0x4000lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)ppp0 Link encap:Point-to-Point Protocol
inet addr:31.28.43.199 P-t-P:31.28.43.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1464 Metric:1
RX packets:6026 errors:0 dropped:0 overruns:0 frame:0
TX packets:4166 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:6680145 (6.3 MiB) TX bytes:936852 (914.8 KiB)[root@homegate tmp]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.9 * 255.255.255.255 UH 0 0 0 eth0
192.168.0.8 * 255.255.255.255 UH 0 0 0 eth0
192.168.0.11 * 255.255.255.255 UH 0 0 0 eth0
192.168.0.10 * 255.255.255.255 UH 0 0 0 eth0
192.168.0.13 * 255.255.255.255 UH 0 0 0 eth0
31.28.43.1 * 255.255.255.255 UH 0 0 0 ppp0
ns2.tlt.aist.ne * 255.255.255.255 UH 0 0 0 eth0
192.168.0.14 * 255.255.255.255 UH 0 0 0 eth0
ns1.tlt.aist.ne * 255.255.255.255 UH 0 0 0 eth0
192.168.0.2 * 255.255.255.255 UH 0 0 0 eth0
192.168.0.5 * 255.255.255.255 UH 0 0 0 eth0
10.13.136.0 * 255.255.255.192 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.255.0 * 255.255.255.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
default * 0.0.0.0 U 0 0 0 ppp0
[root@homegate tmp]# iptables-save
# Generated by iptables-save v1.3.5 on Wed Oct 10 03:30:56 2012
*nat
:PREROUTING ACCEPT [356:27853]
:POSTROUTING ACCEPT [1:108]
:OUTPUT ACCEPT [65:4749]
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
# Completed on Wed Oct 10 03:30:56 2012
# Generated by iptables-save v1.3.5 on Wed Oct 10 03:30:56 2012
*mangle
:PREROUTING ACCEPT [17022:14759828]
:INPUT ACCEPT [6719:7000944]
:FORWARD ACCEPT [10301:7758784]
:OUTPUT ACCEPT [5980:1244185]
:POSTROUTING ACCEPT [16157:8945122]
COMMIT
# Completed on Wed Oct 10 03:30:56 2012
# Generated by iptables-save v1.3.5 on Wed Oct 10 03:30:56 2012
*filter
:INPUT DROP [155:17102]
:FORWARD DROP [26:1399]
:OUTPUT DROP [98:56448]
:allowed - [0:0]
:bad_tcp_packets - [0:0]
:icmp_packets - [0:0]
:tcp_packets - [0:0]
:udp_packets - [0:0]
-A INPUT -p tcp -j bad_tcp_packets
-A INPUT -s 192.168.255.0/255.255.255.0 -i eth1 -j ACCEPT
-A INPUT -s 127.0.0.1 -i lo -j ACCEPT
-A INPUT -s 192.168.255.1 -i lo -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i eth1 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -j tcp_packets
-A INPUT -i eth0 -p udp -j udp_packets
-A INPUT -i eth0 -p icmp -j icmp_packets
-A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i ppp0 -p tcp -j tcp_packets
-A INPUT -i ppp0 -p udp -j udp_packets
-A INPUT -i ppp0 -p icmp -j icmp_packets
-A FORWARD -p tcp -j bad_tcp_packets
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -s 192.168.255.1 -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
-A OUTPUT -o ppp0 -j ACCEPT
-A allowed -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A allowed -p tcp -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "New not syn:"
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A tcp_packets -p tcp -m tcp --dport 22 -j allowed
COMMIT
# Completed on Wed Oct 10 03:30:56 2012С линух машины
[root@homegate tmp]# ping gosuslugi.ru
PING gosuslugi.ru (109.207.1.97) 56(84) bytes of data.
64 bytes from gosuslugi.ru (109.207.1.97): icmp_seq=1 ttl=244 time=32.9 ms
64 bytes from gosuslugi.ru (109.207.1.97): icmp_seq=2 ttl=244 time=32.5 msС Вынь ХР машины
C:\Users\user>ping gosuslugi.ruОбмен пакетами с gosuslugi.ru [109.207.1.97] с 32 байтами данных:
Ответ от 109.207.1.97: число байт=32 время=34мс TTL=243
Ответ от 109.207.1.97: число байт=32 время=33мс TTL=243Статистика Ping для 109.207.1.97:
Пакетов: отправлено = 2, получено = 2, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 33мсек, Максимальное = 34 мсек, Среднее = 33 мсекЗЫ: внешний IP динамический...
Пинг работает на icmp протоколе, "explorer" на tcp. Это так для справки.
попробуйте с линукс машины wget -d http://gosuslugi.ruПосмотрите tcpdump'ом на шлюзе, проблема скорее всего в mtu/mss.
> Пинг работает на icmp протоколе, "explorer" на tcp. Это так для
> справки.
> попробуйте с линукс машины wget -d http://gosuslugi.ruПробовал сразу после пинга, wget ya.ru загружает вполне читабельный index.html
> Посмотрите tcpdump'ом на шлюзе, проблема скорее всего в mtu/mss.
спс, посмотрю...
> спс, посмотрю...Как верно указал выше коллега - подобная проблема именно в МТУ. :) И в том, что в файрволле не разрешены ICMP Path MTU Discovery.
Это в дополнение.
1. http://www.znep.com/~marcs/mtu/
2. http://en.wikipedia.org/wiki/Path_MTU_Discovery
Вот, кстати целый трактат от cisco. :) http://www.cisco.com/en/US/tech/tk827/tk369/technologies_whi...
Попробуй# iptables -t mangle -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
---
Конфиг был полностью взят с http://www.opennet.me/docs/RUS/iptables/iptables-rus.tar.gz, там почему-то
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
и в самом конфиге есть строки
if [ $PPPOE_PMTU == "yes" ] ; then
$IPTABLES -t nat -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
fi
Только вот по ночи забыл PPPOE_PMTU = "yes" прописать.
Зато теперь буду полностью знать что такое --clamp-mss-to-pmtuПолезные ссылки
http://www.opennet.me/base/net/pppoe_mtu.txt.html  ...полностью описание проявления проблемы и ее исправление
http://tldp.org/HOWTO/IP-Masquerade-HOWTO/mtu-issues.htmlПроблему решили строки
$IPTABLES -A icmp_packets -p ICMP -s 0/0 -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtuВсем спасибо.
> Проблему решили строки
> $IPTABLES -A icmp_packets -p ICMP -s 0/0 -j ACCEPTне обязательно все типы пропускать, но это уже мелочи
>> Проблему решили строки
>> $IPTABLES -A icmp_packets -p ICMP -s 0/0 -j ACCEPT
> не обязательно все типы пропускать, но это уже мелочиРешение временное, буду копать дальше.
Если следовать http://www.cymru.com/Documents/icmp-messages.html, то достаточно
NAME TYPE CODE COMMENT
ICMP_ECHO 8 0 /* Ping. */
ICMP_ECHOREPLY 0 0 /* Ping response. */
ICMP_UNREACH 3 4 /* ICMP_UNREACH_NEEDFRAG - Used by Path */
/* MTU to determine the optimal MTU setting. */
ICMP_TIMXCEED 11 0 /* TTL expired in transit. Used by UNIX */
/* traceroute and Windows tracert. Note that */
/* UNIX traceroute also uses a high UDP port. */
/* This message is also important when */
/* routing loops occur. */
Если не сложно, поделитесь минимально необходимыми типами icmp.