ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] postrouting
@ 2004-12-28  3:52 Peter V. Saveliev
  2004-12-28 10:07 ` Denis Ovsienko
  2004-12-28 22:55 ` Peter V. Saveliev
  0 siblings, 2 replies; 15+ messages in thread
From: Peter V. Saveliev @ 2004-12-28  3:52 UTC (permalink / raw)
  To: devel

...

Столкнулся с прелюбопытнейшей проблемой.

Имеем eth0, 192.168.0.2/24, на нём запущен pppoe-server. Криминала в ip-адресе 
нет, это не запрещено, afair. Сервер pppoe работает нормально, клиент 
логинится и авторизуется. Но.

Этот eth0 -- единственный интерфейс на машине. То есть, он же для приёма 
пакетов через pppoe, он же и для выхода на гейт. Надо сделать маскарад 
пакетов, приходящих от клиентов через pppoe наружу.

Маршрутизация идёт нормально, все пакеты, приходящие через pppX дружно идут на 
гейт. Но не маскарадятся. Дальнейшее исследование показало, что пакеты, 
приходящие через pppX и уходящие через eth0, _вообще_ не проходят таблицу 
nat.

Согласно откопанным схемам

http://open-source.arkoon.net/kernel/kernel_net.png
http://www.docum.org/docum.org/kptd/

этого не может быть, потому что не может быть никогда. Вопрос: а почему?

Ещё раз суть: это не обсуждение функционирования pppoe-сервера на машине с 
одним интерфейсом и т.п. Это попытка понять, почему пакеты минуют одну из 
таблиц iptables.

-- 
Peter V. Saveliev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28  3:52 [devel] postrouting Peter V. Saveliev
@ 2004-12-28 10:07 ` Denis Ovsienko
  2004-12-28 11:16   ` alexey lubimov
  2004-12-28 14:58   ` Peter V. Saveliev
  2004-12-28 22:55 ` Peter V. Saveliev
  1 sibling, 2 replies; 15+ messages in thread
From: Denis Ovsienko @ 2004-12-28 10:07 UTC (permalink / raw)
  To: ALT Devel discussion list


>Ещё раз суть: это не обсуждение функционирования pppoe-сервера на машине
>с одним интерфейсом и т.п. Это попытка понять, почему пакеты минуют одну
>из таблиц iptables.
Так всё-таки там два интерфейса или один? Не считая lo.

-- 
    DO4-UANIC


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 10:07 ` Denis Ovsienko
@ 2004-12-28 11:16   ` alexey lubimov
  2004-12-28 14:59     ` Peter V. Saveliev
  2004-12-28 14:58   ` Peter V. Saveliev
  1 sibling, 1 reply; 15+ messages in thread
From: alexey lubimov @ 2004-12-28 11:16 UTC (permalink / raw)
  To: ALT Devel discussion list

И какой pppoe - ядерный или в userspace?
Denis Ovsienko wrote:

>>Ещё раз суть: это не обсуждение функционирования pppoe-сервера на машине
>>с одним интерфейсом и т.п. Это попытка понять, почему пакеты минуют одну
>>из таблиц iptables.
>>    
>>
>Так всё-таки там два интерфейса или один? Не считая lo.
>
>  
>



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 10:07 ` Denis Ovsienko
  2004-12-28 11:16   ` alexey lubimov
@ 2004-12-28 14:58   ` Peter V. Saveliev
  2004-12-28 15:13     ` Denis Ovsienko
  2004-12-28 17:24     ` Антон
  1 sibling, 2 replies; 15+ messages in thread
From: Peter V. Saveliev @ 2004-12-28 14:58 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tuesday 28 December 2004 13:07, Denis Ovsienko wrote:
<skip />
> Так всё-таки там два интерфейса или один? Не считая lo.

lo: 127.0.0.1/8
eth0: 192..../24

# pppoe-server -I eth0

После соединения с клиентом добавляется по pppХ на клиента.

Всё  работает нормально, за одним исключением -- пакеты минуют таблицу nat.

-- 
Peter V. Saveliev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 11:16   ` alexey lubimov
@ 2004-12-28 14:59     ` Peter V. Saveliev
  2004-12-28 15:56       ` alexey lubimov
  0 siblings, 1 reply; 15+ messages in thread
From: Peter V. Saveliev @ 2004-12-28 14:59 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tuesday 28 December 2004 14:16, alexey lubimov wrote:
> И какой pppoe - ядерный или в userspace?
<skip />

Судя по всему, userspace. Запуск:

# modprobe pppoe
# modprobe ppp_async
# pppoe-server -I eth0

-- 
Peter V. Saveliev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 14:58   ` Peter V. Saveliev
@ 2004-12-28 15:13     ` Denis Ovsienko
  2004-12-28 17:24     ` Антон
  1 sibling, 0 replies; 15+ messages in thread
From: Denis Ovsienko @ 2004-12-28 15:13 UTC (permalink / raw)
  To: ALT Devel discussion list

> После соединения с клиентом добавляется по pppХ на клиента.
>
> Всё  работает нормально, за одним исключением -- пакеты минуют таблицу
> nat.
Если таблица существует, то очень странно.

-- 
    DO4-UANIC


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 14:59     ` Peter V. Saveliev
@ 2004-12-28 15:56       ` alexey lubimov
  2004-12-28 18:57         ` Peter V. Saveliev
  0 siblings, 1 reply; 15+ messages in thread
From: alexey lubimov @ 2004-12-28 15:56 UTC (permalink / raw)
  To: ALT Devel discussion list

Это ядерный.
Можно попробовать аналогичный в userspace.



Peter V. Saveliev wrote:

>On Tuesday 28 December 2004 14:16, alexey lubimov wrote:
>  
>
>>И какой pppoe - ядерный или в userspace?
>>    
>>
><skip />
>
>Судя по всему, userspace. Запуск:
>
># modprobe pppoe
># modprobe ppp_async
># pppoe-server -I eth0
>
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Devel mailing list
>Devel@altlinux.ru
>https://lists.altlinux.ru/mailman/listinfo/devel
>



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 14:58   ` Peter V. Saveliev
  2004-12-28 15:13     ` Denis Ovsienko
@ 2004-12-28 17:24     ` Антон
  2004-12-28 19:12       ` Peter V. Saveliev
  1 sibling, 1 reply; 15+ messages in thread
From: Антон @ 2004-12-28 17:24 UTC (permalink / raw)
  To: ALT Devel discussion list

В сообщении от Вторник 28 Декабрь 2004 17:58 Peter V. Saveliev написал(a):
> On Tuesday 28 December 2004 13:07, Denis Ovsienko wrote:
> <skip />
>
> > Так всё-таки там два интерфейса или один? Не считая lo.
>
> lo: 127.0.0.1/8
> eth0: 192..../24
>
> # pppoe-server -I eth0
>
> После соединения с клиентом добавляется по pppХ на клиента.
>
> Всё  работает нормально, за одним исключением -- пакеты минуют таблицу nat.

Такое невозможно. Я думаю ошибка в правилах iptables.
Конфиги можно увидеть...
Имеется ввиду цепочка POST...?
Какой интерфейс указывается в качестве out?

-- 
Антон.
AltLinux Team.
Etersoft Team.


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 15:56       ` alexey lubimov
@ 2004-12-28 18:57         ` Peter V. Saveliev
  0 siblings, 0 replies; 15+ messages in thread
From: Peter V. Saveliev @ 2004-12-28 18:57 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tuesday 28 December 2004 18:56, alexey lubimov wrote:
> Это ядерный.
> Можно попробовать аналогичный в userspace.
<skip />

Как?

-- 
Peter V. Saveliev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 17:24     ` Антон
@ 2004-12-28 19:12       ` Peter V. Saveliev
  2004-12-28 23:01         ` Антон
  0 siblings, 1 reply; 15+ messages in thread
From: Peter V. Saveliev @ 2004-12-28 19:12 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tuesday 28 December 2004 20:24, Антон wrote:
<skip />
> Такое невозможно. Я думаю ошибка в правилах iptables.

Дык а я про что!! Невозможно.

> Конфиги можно увидеть...

Да какие там конфиги, нет там ничего. Просто голяком запущен pppoe-server, 
остальное см. ниже.

> Имеется ввиду цепочка POST...?
> Какой интерфейс указывается в качестве out?

Правил нет. Нет смысла, пакеты просто _не_светятся_ в таблице nat. Их там нет.

Вот всё, что могу показать:

~ # ps | grep ppp
  690 root        408 S   pppoe-server -I eth0 
  701 root        980 S   pppd pty /usr/sbin/pppoe -n -I eth0 -e \ 
1:00:0c:29:16:56:7a -S '' file /etc/ppp/pppo
  702 root        452 S   sh -c /usr/sbin/pppoe -n -I eth0 -e \ 
1:00:0c:29:16:56:7a -S '' 
  704 root        380 S   /usr/sbin/pppoe -n -I eth0 -e 1:00:0c:29:16:56:7a -S  

~ # ip addr show
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/32 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:32:b3:98 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.250/24 scope global eth0
3: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 3
    link/ppp 
    inet 10.0.0.1 peer 10.67.15.1/32 scope global ppp0

~ # ip route show
10.67.15.1 dev ppp0  proto kernel  scope link  src 10.0.0.1 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.250 
default via 192.168.0.1 dev eth0 

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

~ # date           
Wed Dec 29 01:03:09 MSK 2004
~ # iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 2 packets, 309 bytes)
<skip reason="там нет ничего" />
Chain POSTROUTING (policy ACCEPT 3 packets, 650 bytes)
<skip reason="там нет ничего" />
Chain OUTPUT (policy ACCEPT 2 packets, 590 bytes)
<skip reason="там нет ничего" />

~ # date
Wed Dec 29 01:03:38 MSK 2004
~ # iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 2 packets, 309 bytes)
<skip reason="там нет ничего" />
Chain POSTROUTING (policy ACCEPT 4 packets, 798 bytes)
<skip reason="там нет ничего" />
Chain OUTPUT (policy ACCEPT 3 packets, 738 bytes)
<skip reason="там нет ничего" />

В этот момент клиент пингует через образованный ppp наружный сервер, и на 
гейте светится вот что:
~ # tcpdump -nnlpc 4 -i eth0 ip proto \\icmp 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
01:04:22.204176 IP 10.67.15.1 > 217.170.64.5: icmp 40: echo request seq 21505
01:04:23.711508 IP 10.67.15.1 > 217.170.64.5: icmp 40: echo request seq 21761
01:04:25.188193 IP 10.67.15.1 > 217.170.64.5: icmp 40: echo request seq 22017
01:04:26.714518 IP 10.67.15.1 > 217.170.64.5: icmp 40: echo request seq 22273
4 packets captured
8 packets received by filter
0 packets dropped by kernel

То есть, nat просто пустая. 1 пакет, прошедший через POSTROUTING за 30 секунд, 
явно не из тех пингов, которые раз в секунду идут с клиента, это внутренняя 
активность сети (см. также таймстампы в tcpdump)

Да что я говорю, это легко воспроизводится. Поднять pppoe-server -- дело 5 
минут, попробуйте сами. Вешаем его на единственный интерфейс, и получаем 
именно такую картинку.

-- 
Peter V. Saveliev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28  3:52 [devel] postrouting Peter V. Saveliev
  2004-12-28 10:07 ` Denis Ovsienko
@ 2004-12-28 22:55 ` Peter V. Saveliev
  1 sibling, 0 replies; 15+ messages in thread
From: Peter V. Saveliev @ 2004-12-28 22:55 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tuesday 28 December 2004 06:52, Peter V. Saveliev wrote:
<skip />
> Маршрутизация идёт нормально, все пакеты, приходящие через pppX дружно идут
> на гейт. Но не маскарадятся. Дальнейшее исследование показало, что пакеты,
> приходящие через pppX и уходящие через eth0, _вообще_ не проходят таблицу
> nat.
<skip />

Многие таблицы -- многая скорбь. А вот ipchains работает, аллилуия.

-- 
Peter V. Saveliev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 19:12       ` Peter V. Saveliev
@ 2004-12-28 23:01         ` Антон
  2004-12-28 23:09           ` Peter V. Saveliev
  0 siblings, 1 reply; 15+ messages in thread
From: Антон @ 2004-12-28 23:01 UTC (permalink / raw)
  To: ALT Devel discussion list

В сообщении от Вторник 28 Декабрь 2004 22:12 Peter V. Saveliev написал(a):
> On Tuesday 28 December 2004 20:24, Антон wrote:

> Дык а я про что!! Невозможно.

<skip>

Думаю, что всё понятно.

Только первый пакет из потока проходит через цепочки таблицы NAT, трансляция 
адресов или маскировка применяются ко всем последующим пакетам в потоке 
автоматически. См. рук-во к iptables.

И вообще. 
Зачем смотреть что туда попадает, если ты всё равно не используешь эту 
таблицу. Она у тебя пустая.

-- 
Антон
Alt Linux Team
Eternity Software TEAM
http://www.etersoft.ru


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 23:01         ` Антон
@ 2004-12-28 23:09           ` Peter V. Saveliev
  2004-12-29  8:40             ` Антон
  0 siblings, 1 reply; 15+ messages in thread
From: Peter V. Saveliev @ 2004-12-28 23:09 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wednesday 29 December 2004 02:01, Антон wrote:
<skip />
> Думаю, что всё понятно.

Ничего не понятно.

>
> Только первый пакет из потока проходит через цепочки таблицы NAT,
> трансляция адресов или маскировка применяются ко всем последующим пакетам в
> потоке автоматически. См. рук-во к iptables.
>
> И вообще.
> Зачем смотреть что туда попадает, если ты всё равно не используешь эту
> таблицу. Она у тебя пустая.

~ # iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 2 packets, 320 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 3 packets, 694 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 SNAT       all  --  *      *       10.0.0.0/8           0.0.0.0/0           to:192.168.0.250 

Chain OUTPUT (policy ACCEPT 2 packets, 634 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Не работает.

~ # modprobe ipchains
Using /lib/modules/2.4.26-std-up-alt8/kernel/net/ipv4/netfilter/ipchains.o
~ # ipchains -A forward -s 10.0.0.0/8 -j MASQ
~ # ipchains -L   
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
target     prot opt     source                destination           ports
MASQ       all  ------  10.0.0.0/8           anywhere              n/a
Chain output (policy ACCEPT):

Работает.

-- 
Peter V. Saveliev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-28 23:09           ` Peter V. Saveliev
@ 2004-12-29  8:40             ` Антон
  2004-12-29 10:16               ` Peter V. Saveliev
  0 siblings, 1 reply; 15+ messages in thread
From: Антон @ 2004-12-29  8:40 UTC (permalink / raw)
  To: ALT Devel discussion list

В сообщении от Среда 29 Декабрь 2004 02:09 Peter V. Saveliev написал(a):
> On Wednesday 29 December 2004 02:01, Антон wrote:
> Работает.

А если сделать также: трансляция не к статическому адресу, а через маскарадинг
и добавить LOG, чтобы посмотреть что же туда попадает:

iptables -t nat -A POSTROUTING -j LOG --log-prefix "NAT"
iptables -t nat -A POSTROUTING -j MASQUERADE

Лучше бы ты дал посмотреть rc.firewall...

-- 
Антон
Alt Linux Team
Eternity Software TEAM
http://www.etersoft.ru


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [devel] postrouting
  2004-12-29  8:40             ` Антон
@ 2004-12-29 10:16               ` Peter V. Saveliev
  0 siblings, 0 replies; 15+ messages in thread
From: Peter V. Saveliev @ 2004-12-29 10:16 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wednesday 29 December 2004 11:40, Антон wrote:
> В сообщении от Среда 29 Декабрь 2004 02:09 Peter V. Saveliev написал(a):
> > On Wednesday 29 December 2004 02:01, Антон wrote:
> > Работает.
>
> А если сделать также: трансляция не к статическому адресу, а через
> маскарадинг и добавить LOG, чтобы посмотреть что же туда попадает:
>
> iptables -t nat -A POSTROUTING -j LOG --log-prefix "NAT"
> iptables -t nat -A POSTROUTING -j MASQUERADE

Ничего не попадает, я с этого и обнаружил проблему.

>
> Лучше бы ты дал посмотреть rc.firewall...

Его нет :) Для чистоты эксперимента взята голая машина, пустая система только 
с ядром, модулями iptables и подобного, из процессов помимо pppoe и telnetd с 
sh только ещё ipcad запущен, который вообще ни на что не влияет. Всё. Из 
правил iptables только единственное, для nat|masquerade, больше ничего нет.

Если надо будет, могу выложить изобраз системы, которая воспроизводит эту 
проблему сразу после загрузки -- загружая всё необходимое. Понадобится только 
ещё клиентская машина.

Реальное решение будет работать на машине с двумя интерфейсами, не подумайте, 
меня не жаба душит. Просто было интересно протестировать такой случай, и вот 
натолкнулся.

-- 
Peter V. Saveliev

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2004-12-29 10:16 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-12-28  3:52 [devel] postrouting Peter V. Saveliev
2004-12-28 10:07 ` Denis Ovsienko
2004-12-28 11:16   ` alexey lubimov
2004-12-28 14:59     ` Peter V. Saveliev
2004-12-28 15:56       ` alexey lubimov
2004-12-28 18:57         ` Peter V. Saveliev
2004-12-28 14:58   ` Peter V. Saveliev
2004-12-28 15:13     ` Denis Ovsienko
2004-12-28 17:24     ` Антон
2004-12-28 19:12       ` Peter V. Saveliev
2004-12-28 23:01         ` Антон
2004-12-28 23:09           ` Peter V. Saveliev
2004-12-29  8:40             ` Антон
2004-12-29 10:16               ` Peter V. Saveliev
2004-12-28 22:55 ` Peter V. Saveliev

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git