Account Options

  1. Sign in
The old Google Groups will be going away soon.
Switch to the new Google Groups.
Google Groups Home
« Groups Home
Нетграф, ng_nat и incorrect checksum в пакетах
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  7 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Alexey Markov  
View profile   Translate to Translated (View Original)
 More options Jan 26 2007, 10:30 am
Newsgroups: fido7.ru.unix.bsd
From: "Alexey Markov" <a...@asdg.ru>
Date: Fri, 26 Jan 2007 15:30:49 +0000 (UTC)
Local: Fri, Jan 26 2007 10:30 am
Subject: Нетграф, ng_nat и incorrect checksum в пакетах
Всем, всего, и много!

FreeBSD 6.2-RELEASE, настроен NAT через ng_nat с адресом A.B.C.D:

=========Beginning of the citation==============
00100 allow ip from any to any via lo0
00200 deny ip from any to 127.0.0.0/8
00300 deny ip from 127.0.0.0/8 to any
00321 netgraph 321 ip from any to A.B.C.D in via xl0
00322 netgraph 322 ip from 192.168.10.0/24 to any out via xl0
=========The end of the citation================

При попытке соединения из внутренней сети на внешний сервер E.F.G.H
в tcpdump на xl0 вижу следующее:

=========Beginning of the citation==============
IP (tos 0x10, ttl  64, id 31559, offset 0, flags [DF], proto: TCP (6),
length: 64) A.B.C.D.63381 > E.F.G.H.25: S, cksum 0x42c3 (incorrect (->
0x4cef), 428483941:428483941(0) win 65535 <mss 1460,nop,scale 1,nop,nop,
timestamp 270637050 0,sackOK,eol>

IP (tos 0x10, ttl  64, id 31564, offset 0, flags [DF], proto: TCP (6),
length: 64) A.B.C.D.63381 > E.F.G.H.25: S, cksum 0x370b (incorrect (->
0x4137), 428483941:428483941(0) win 65535 <mss 1460,nop,scale 1,nop,nop,
timestamp 270640050 0,sackOK,eol>
=========The end of the citation================

Понятное дело, что провайдерский гейт эти пакеты с битой чексуммой
просто дропает. Осталось выяснить - кто эти чексуммы корёжит? И как
можно отследить прохождение пакета через внутренние ноды нетграфа?
В общем, буду благодарен, если мне укажут место, где стоит копать...

P.S. С адреса самого интерфейса пакеты уходят с нормальной чексуммой.

--
С уважением, Алексей Марков.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Vadim Goncharov  
View profile   Translate to Translated (View Original)
 More options Jan 27 2007, 6:34 am
Newsgroups: fido7.ru.unix.bsd
From: Vadim Goncharov <vadimnucli...@tpu.ru>
Date: Sat, 27 Jan 2007 11:34:29 +0000 (UTC)
Local: Sat, Jan 27 2007 6:34 am
Subject: Re: Нетграф, ng_nat и incorrect checksum в пакетах
Hi Alexey Markov!

On Fri, 26 Jan 2007 15:30:49 +0000 (UTC); Alexey Markov wrote about 'Нетграф, ng_nat и incorrect checksum в пакетах':

 AM> IP (tos 0x10, ttl  64, id 31559, offset 0, flags [DF], proto: TCP (6),
 AM> length: 64) A.B.C.D.63381 > E.F.G.H.25: S, cksum 0x42c3 (incorrect (->
 AM> 0x4cef), 428483941:428483941(0) win 65535 <mss 1460,nop,scale 1,nop,nop,
 AM> timestamp 270637050 0,sackOK,eol>

 AM> IP (tos 0x10, ttl  64, id 31564, offset 0, flags [DF], proto: TCP (6),
 AM> length: 64) A.B.C.D.63381 > E.F.G.H.25: S, cksum 0x370b (incorrect (->
 AM> 0x4137), 428483941:428483941(0) win 65535 <mss 1460,nop,scale 1,nop,nop,
 AM> timestamp 270640050 0,sackOK,eol>

В пакетах без IP-опций - чексумма нормальная? Если да, то попробуй
обновиться до вчерашнего 6-STABLE, там был MFC фикса подсчета длины
заголовка (хотя может, дело и не в этом).

--
WBR, Vadim Goncharov. ICQ#166852181       mailto:vadim_nucli...@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Alexey Markov  
View profile   Translate to Translated (View Original)
 More options Jan 29 2007, 6:05 am
Newsgroups: fido7.ru.unix.bsd
From: "Alexey Markov" <a...@asdg.ru>
Date: Mon, 29 Jan 2007 11:05:29 +0000 (UTC)
Local: Mon, Jan 29 2007 6:05 am
Subject: Re[2]: Нетграф, ng_nat и incorrect checksum в пакетах
Рад видеть тебя, Vadim!
Помнится, 27 января 2007 в 14:34 ты писал для Alexey Markov:

VG> В пакетах без IP-опций - чексумма нормальная?

Гм. Что ты имеешь в виду под словами "без IP-опций"? Пакеты, отправленные
с реального адреса и через НАТ отличаются только в одном поле - чексумме,
все остальные поля и опции у них совпадают. Кстати, ломается только TCP,
UDP ходит нормально (предполагаемая причина - ниже).

VG> Если да, то попробуй обновиться до вчерашнего 6-STABLE, там был MFC
VG> фикса подсчета длины заголовка (хотя может, дело и не в этом).

Обновил ng_nat.c до 1.4.2.1, 2007/01/25 21:42:47, симптомы не изменились.

Похоже, дело вот в этом куске кода (комментарий Глеба):

    if ((ip->ip_off & htons(IP_OFFMASK)) == 0 &&
        ip->ip_p == IPPROTO_TCP) {
            struct tcphdr *th = (struct tcphdr *)((caddr_t)ip +
                (ip->ip_hl << 2));

            /*
             * Here is our terrible HACK.
             *
             * Sometimes LibAlias edits contents of TCP packet.
             * In this case it needs to recompute full TCP
             * checksum. However, the problem is that LibAlias
             * doesn't have any idea about checksum offloading
             * in kernel. To workaround this, we do not do
             * checksumming in LibAlias, but only mark the
             * packets in th_x2 field. If we receive a marked
             * packet, we calculate correct checksum for it
             * aware of offloading.
             *
             * Why do I do such a terrible hack instead of
             * recalculating checksum for each packet?
             * Because the previous checksum was not checked!
             * Recalculating checksums for EVERY packet will
             * hide ALL transmission errors. Yes, marked packets
             * still suffer from this problem. But, sigh, natd(8)
             * has this problem, too.
             */

            if (th->th_x2) {
                th->th_x2 = 0;
                ip->ip_len = ntohs(ip->ip_len);
                th->th_sum = in_pseudo(ip->ip_src.s_addr,
                    ip->ip_dst.s_addr, htons(IPPROTO_TCP +
                    ip->ip_len - (ip->ip_hl << 2)));
                if ((m->m_pkthdr.csum_flags & CSUM_TCP) == 0) {
                    m->m_pkthdr.csum_data = offsetof(struct tcphdr,th_sum);
                    in_delayed_cksum(m);
                }
                ip->ip_len = htons(ip->ip_len);
            }
        }

Осталось понять, почему LibAlias не выставляет th_x2 флаг для отнатленных
пакетов, и как это можно исправить. Жаль, что Глеба в эхе нету... :-/

P.S. Интересно, а кто-нибудь вообще использует ng_nat на боевых серверах?

--
С уважением, Алексей Марков.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Vadim Goncharov  
View profile   Translate to Translated (View Original)
 More options Jan 30 2007, 12:22 pm
Newsgroups: fido7.ru.unix.bsd
From: Vadim Goncharov <vadimnucli...@tpu.ru>
Date: Tue, 30 Jan 2007 17:22:56 +0000 (UTC)
Local: Tues, Jan 30 2007 12:22 pm
Subject: Re: Нетграф, ng_nat и incorrect checksum в пакетах
Hi Alexey Markov!

On Mon, 29 Jan 2007 11:05:29 +0000 (UTC); Alexey Markov wrote about 'Re[2]: Нетграф, ng_nat и incorrect checksum в пакетах':

 VG>> В пакетах без IP-опций - чексумма нормальная?
 AM> Гм. Что ты имеешь в виду под словами "без IP-опций"? Пакеты, отправленные
 AM> с реального адреса и через НАТ отличаются только в одном поле - чексумме,
 AM> все остальные поля и опции у них совпадают. Кстати, ломается только TCP,
 AM> UDP ходит нормально (предполагаемая причина - ниже).
[...]
 AM> Осталось понять, почему LibAlias не выставляет th_x2 флаг для отнатленных
 AM> пакетов, и как это можно исправить. Жаль, что Глеба в эхе нету... :-/

Напиши ему на glebius@ - наверняка ответит...

 AM> P.S. Интересно, а кто-нибудь вообще использует ng_nat на боевых серверах?

Вообще, я слышал о боевом использовании, и у кого-то даже успешно
(некоторые ругались, что оно память жрет)

--
WBR, Vadim Goncharov. ICQ#166852181       mailto:vadim_nucli...@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dmitriy Kirhlarov  
View profile   Translate to Translated (View Original)
 More options Feb 15 2007, 8:17 am
Newsgroups: fido7.ru.unix.bsd
From: Dmitriy Kirhlarov <di...@higis.ru>
Date: Thu, 15 Feb 2007 13:17:47 +0000 (UTC)
Local: Thurs, Feb 15 2007 8:17 am
Subject: Re: Нетграф, ng_nat и incorrect checksum в пакетах
Hi!

On Mon, Jan 29, 2007 at 11:05:29AM +0000, Alexey Markov wrote:
> Осталось понять, почему LibAlias не выставляет th_x2 флаг для отнатленных
> пакетов, и как это можно исправить. Жаль, что Глеба в эхе нету... :-/

13:01 < kyrh> glebius: народ в r.u.b с ng_nat мается.
13:02 <@glebius> пусть к piso обращаются

By.
Dmitriy


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Alexey Markov  
View profile   Translate to Translated (View Original)
 More options Feb 15 2007, 10:31 am
Newsgroups: fido7.ru.unix.bsd
From: "Alexey Markov" <a...@asdg.ru>
Date: Thu, 15 Feb 2007 15:31:58 +0000 (UTC)
Local: Thurs, Feb 15 2007 10:31 am
Subject: Re[2]: Нетграф, ng_nat и incorrect checksum в пакетах
Рад видеть тебя, Dmitriy!
Помнится, 15 февраля 2007 в 16:17 ты писал для Alexey Markov:

 DK> 13:01 < kyrh> glebius: народ в r.u.b с ng_nat мается.
 DK> 13:02 <@glebius> пусть к piso обращаются

Да я бы с удовольствием, только кто это - piso? Судя по фамилии,
он не здешний? ;-)

--
С уважением, Алексей Марков.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dmitriy Kirhlarov  
View profile   Translate to Translated (View Original)
 More options Feb 15 2007, 10:55 am
Newsgroups: fido7.ru.unix.bsd
From: Dmitriy Kirhlarov <di...@higis.ru>
Date: Thu, 15 Feb 2007 15:55:39 +0000 (UTC)
Local: Thurs, Feb 15 2007 10:55 am
Subject: Re: Нетграф, ng_nat и incorrect checksum в пакетах
Hi!

On Thu, Feb 15, 2007 at 03:31:58PM +0000, Alexey Markov wrote:
> DK> 13:01 < kyrh> glebius: народ в r.u.b с ng_nat мается.
> DK> 13:02 <@glebius> пусть к piso обращаются

> Да я бы с удовольствием, только кто это - piso? Судя по фамилии,
> он не здешний? ;-)

piso@ видимо.
Домен догадаешься какой? ;)
http://people.freebsd.org/~piso/

By.
Dmitriy


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »