[devel] postrouting

Peter V. Saveliev =?iso-8859-1?q?peet_=CE=C1_altlinux=2Eru?=
Вт Дек 28 22:12:18 MSK 2004


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


Подробная информация о списке рассылки Devel