LINUX.ORG.RU
ФорумAdmin

грабли с сетевым стеком

 


0

1

Всем добрый день.

Недавно пришлось переносить прозрачный сквид: ранее схема была такая - хост машина подключена к интернету, на ней же крутится openvz, в ней прозрачный сквид, в иптейблс делался соответсвующий днат на сквид. Короче всё работало.

Сейчас схема стала такая: хост машина так же подключена к интернету, на ней крутится xen, сеть в доменах как bridge. Сквид крутится в domU так же настроенный как прозрачный. Ну и иптейблс на хост машине соответственно. Но вот проблема - не работает. Само соединение проходит вот так

хост машина

iptables -L -n -t nat:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp  — 192.168.1.144 !192.168.0.0/16 tcp dpt:80 to:192.168.1.51:3128

iptables -L -n:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all  — 192.168.0.0/16 0.0.0.0/0

192.168.1.144 - адрес моей машины которую пробрасываю через сквид, 192.168.1.51 - сквид


в домене со сквидом
ifconfig
eth0 Link encap:Ethernet HWaddr A0:A1:A6:A4:E2:1F
inet addr:192.168.1.51 Bcast:192.168.255.255 Mask:255.255.0.0
inet6 addr: fe80::a2a1:a6ff:fea4:e21f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1706033 errors:0 dropped:0 overruns:0 frame:0
TX packets:104983 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:229373115 (218.7 MiB) TX bytes:25963712 (24.7 MiB)


иптейблс пустой, форвардинг включён на всякий.

а вот и сам долгожданный дамп tcpdump в сквидовом домене
tcpdump -nnnn port 80 or port 3128
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
03:54:23.011809 IP 192.168.1.144.24962 > 192.168.1.51.3128: S 1843036251:1843036251(0) win 65535 <mss 1460,nop,nop,sackOK>
03:54:23.011916 IP 192.168.1.51.3128 > 192.168.1.144.24962: S 3837390554:3837390554(0) ack 1843036252 win 5840 <mss 1460,nop,nop,sackOK>
03:54:23.014786 IP 192.168.1.144.24962 > 192.168.1.51.3128: R 1843036252:1843036252(0) win 0

те само соединение начинает устанавливаться, а потом закрывается с моей же стороны!

wireshark на моей машине на закрывающем пакете пишет нечто вида «Acknowledgement number: Broken TCP. The acknowledge field is nonzero while the ACK flag is not set».


конфиг сквида (на версии 3.1 такая же портянка)

squid -v
Squid Cache: Version 2.7.STABLE9
configure options: '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share' '--localstatedir=/var/lib' '--sysconfdir=/etc/squid' '--libexecdir=/usr/libexec/squid' '--localstatedir=/var' '--datadir=/usr/share/squid' '--enable-removal-policies=lru,heap' '--enable-icmp' '--disable-ident-lookups' '--enable-cache-digests' '--enable-delay-pools' '--enable-arp-acl' '--with-pthreads' '--with-large-files' '--enable-htcp' '--enable-carp' '--enable-follow-x-forwarded-for' '--enable-snmp' '--enable-ssl' '--enable-async-io=32' '--enable-epoll' '--disable-poll' '--with-maxfd=16384' '--enable-linux-netfilter' '--enable-linux-tproxy'


Те затык даже не на сквиде, а где-то на уровне сети. Но идеи как-то закончились :) Есть идеи где грабли?

Ещё вот какой момент возможно имеет смысл. ya.ru резолвится к примеру в 87.250.3.251

wireshark на моей пробрасываемой машине показывает

192.168.1.144 -> 87.250.3.251 (syn) 192.168.1.51 -> 192.168.1.144 (syn, ack) 192.168.1.144 -> 192.168.1.51 (RST!)

192.168.1.144 - моя машина, 192.168.1.51 - сквид. Собственно сначала соединение устанавливается (syn) с одним ип, а продолжает его (syn,ack) уже другой адрес (192.168.1.51). мож в этом проблема?

loginrl103
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.