LINUX.ORG.RU
ФорумAdmin

Нелепая проблема с маршрутизацией

 


0

2

Никак не могу понять в чём проблема. Давайте для начала приведу выводы команд:

root@tetramin:/home/tetramin/script# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
root@tetramin:/home/tetramin/script# ip ru
0:	from all lookup local 
32764:	from all fwmark 0x2 lookup inet_dsl 
32765:	from all fwmark 0x1 lookup inet_ppp 
32766:	from all lookup main 
32767:	from all lookup default 
root@tetramin:/home/tetramin/script# ip ro sh table inet_dsl
default via 192.168.1.1 dev eth3 
root@tetramin:/home/tetramin/script# ip ro sh table inet_ppp
default dev ppp0  scope link 

Форвардинг включен, редирект «постарался» отключить:

sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.all.accept_redirects=0
sysctl net.ipv4.conf.all.send_redirects=0
sysctl net.ipv6.conf.all.accept_redirects=0

2 таблицы маршрутизации:

В первую (с fwmark 1) попадают пакеты от рута и от пользователя tetramin.

Во вторую (fwmark 2) попадают пакеты от пользователя inet_dsl.

Приведу так же существенную часть скрипта для iptables:

# FORWARD chains for inet_dsl lan
iptables -A inet_dsl -s 192.168.1.214 -j RETURN
iptables -A inet_dsl -s 192.168.1.50 -j RETURN
iptables -A inet_dsl -j DROP

#
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -i eth3 -j inet_dsl

#
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
При таких условиях, разрешённые в iptables, два компьютера ходят в интернет через мой ppp0. Это хорошо. Но не работает интернет у пользователя inet_dsl. Это плохо. Видать, нужно добавить ещё один шлюз по умолчанию:
root@tetramin:/home/tetramin/script# route add default gw 192.168.1.1
root@tetramin:/home/tetramin/script# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth3
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
Тогда интернет у пользователя inet_dsl появляется через нужный шлюз, но возникает, тогда, нелепейшая проблема:

С компьютера 192.168.1.214 пакеты, как и должны, идут через ppp0 моего шлюза. НО! С компьютера 192.168.1.50:

root@debian:/home/plot# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=45 time=89.8 ms
From 192.168.1.52: icmp_seq=2 Redirect Host(New nexthop: 192.168.1.1)

root@debian:/home/plot# traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.1.1  1.833 ms  2.098 ms  3.319 ms
 и так далее...
192.168.1.52 - это мой шлюз.

Так вот, что не ясно:

1. Как мне запретить этот редирект? 2. Пинги с моего шлюза не идут ни на один комп сети, однако мой шлюз пингуется с любого компа. Что делать?

Про пинги (насчёт 2 вопроса) я сам затупил. Уж простите. Всё решилось добавлением маршрута в таблицу inet_ppp.

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