Это ошибка в FreeBSD 5.3, патч здесь:
http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/71910URL: http://www.opennet.me/openforum/vsluhforumID1/50946.html#3
Обсуждается: http://www.opennet.me/tips/info/802.shtml
У меня фаерволом весь нттр трафик форвардится на порт 8080 сквида и всё работает. Конечно должна быть поддержка в ядре при пересобирании.
>У меня фаерволом весь нттр трафик форвардится на порт 8080 сквида и
>всё работает. Конечно должна быть поддержка в ядре при пересобирании.
Description
'ipfw fwd' don't forward packet for specified destination
when packet ip_src is the same machine's.
у тебя надо думать ip_src принадлежит другой машине. проблема возникнет, если ты решишь организовать policy based routing в связке с натом
имеется в виду 5.3 beta 4
>имеется в виду 5.3 beta 4Читайте внимательнее:
"The problem still exists on FreeBSD-5.3-STABLE system, and the patch
fixes my problem too."
у меня все работает на одной машине.
на самом деле очень странно что пофиксен этот баг только недавно в пререлизе 5.4 хотя о нём было известно ещё с беты текущего STABLE. грустно это всё особенно когда c этим в плотную сталкиваешься.. :(
Ну так кому-нибудь помог этот патч или все равно не работает форвадинг пакетов?
Очень помог
без него не пашит
>Очень помог
>без него не пашитНапишите пожалуйста как пропатчить у меня не чего не выходит.
freebsd 5.3-STABLE делаю такзахожу в деректорию "usr/src/sys/netinet/"
с файлом ip_output.c
делаю# patch < /путь/к/файлу/патча
Это текст файла патча
Index: ip_output.c
===================================================================
RCS file: /FreeBSD-CVS/src/sys/netinet/ip_output.c,v
retrieving revision 1.225.2.3
diff -u -b -r1.225.2.3 ip_output.c
--- ip_output.c15 Sep 2004 15:07:09 -00001.225.2.3
+++ ip_output.c19 Sep 2004 15:51:42 -0000
@@ -713,7 +713,7 @@
/* Or forward to some other address? */
fwd_tag = m_tag_find(m, PACKET_TAG_IPFORWARD, NULL);
if (fwd_tag) {
-if (!in_localip(ip->ip_src) && !in_localaddr(ip->ip_dst)) {
+if (!in_localaddr(ip->ip_dst)) {
dst = (struct sockaddr_in *)&ro->ro_dst;
bcopy((fwd_tag+1), dst, sizeof(struct sockaddr_in));
m->m_flags |= M_SKIP_FIREWALL;вот что пишет
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: ip_output.c
|===================================================================
|RCS file: /FreeBSD-CVS/src/sys/netinet/ip_output.c,v
|retrieving revision 1.225.2.3
|diff -u -b -r1.225.2.3 ip_output.c
|--- ip_output.c15 Sep 2004 15:07:09 -00001.225.2.3
|+++ ip_output.c19 Sep 2004 15:51:42 -0000
--------------------------
Patching file ip_output.c using Plan A...
Hunk #1 failed at 713.
1 out of 1 hunks failed--saving rejects to ip_output.c.rej
Hmm... Ignoring the trailing garbage.
doneПомогите!!!!
этот патч для 5.3бета4, а в релизе надо это исполнять руками, потому
как эта строчка чуток в другом месте.
и, видимо, либо я тоже сделал что-то не так, либо таблетка не помогает...делал так:
нашел в файле ip_output.c
if (!in_localip(ip->ip_src) && !in_localaddr(ip->ip_dst)) {
поменял на
if (!in_localaddr(ip->ip_dst)) {cd /usr/src/sys/modules/ipfw
make
make installcd /usr/src/sbin/ipfw
make
make install... и ни фига ...
напишите рецепт у кого заработало...
взял статью заменил как написано
убрал if (!in_localip(ip->ip_src) && !in_localaddr(ip->ip_dst)) {
вписал if (!in_localaddr(ip->ip_dst)) {И! перекомпили ядро !!!
/sys/i386/conf
config GENERIC
... и т.д
А вообще это блин такое свинство я три дня пытался понять почему не работает..!!!!
>взял статью заменил как написано
>убрал if (!in_localip(ip->ip_src) && !in_localaddr(ip->ip_dst)) {
>вписал if (!in_localaddr(ip->ip_dst)) {
>
>И! перекомпили ядро !!!
>/sys/i386/conf
>config GENERIC
>... и т.д
>А вообще это блин такое свинство я три дня пытался понять почему
>не работает..!!!!Я вот сделал также, а нифига не работает...
5.3 Release
>Я вот сделал также, а нифига не работает...
>5.3 Release
аналогично - не работает
Парни, у меня заработало. ася 249500739 FreeBSD 6.2/ Тот же глюк.