Здравствуйте. Есть задача настроить маршрутизатор. Картина следующая:lan1 <==> [ router ] <==> lan2
^
|
V
VPNА теперь в словах, есть локалка, с помощью маршрутизатора (route), она общаеться в другой локалкой. В lan2 есть VPN сервер, для того чтоб к нему подключится, на маршрутизаторе прописаны статические роуты через промежуточный маршрутизатор. Когда сервер подключаеться к этому VPN серверу - он видит VPN сеть. Когда кто-то из lan1 пытаеться пинговать машину в VPN сети, пакеты идут не рез ppp0 интерфейс который используеться для поключения к VPN, а через интерфей который смотрит в lan2. В FreeBSD все было абсолютно просто. Но в Linux Debian, который стоит на [router], оно не хочет маршрутизировться в ppp0 интерфейс, хотя в таблице маршрутизации я вижу вот такую картину:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
xy.xy.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
[skipped]
xy.xy.0.0 abc.abc.0.23 255.255.255.0 UG 0 0 0 eth0
0.0.0.0 xy.xy.1.1 0.0.0.0 UG 0 0 0 ppp0К VPN коннекчусь в сеть xy.xy.0.0 через abc.abc.0.23, потом мои дефолтным гейтвеем становиться машина xy.xy.1.1. Через которую, собственно, и должен идти траффик (по идее). Но идет весь траффик с клиентов через abc.abc.0.23.
Пробовал сделать какой-то принудительный редирект, но ничего не получилось:( нашел в man iptables:
ROUTE
This is used to explicitly override the core network stack's routing decision. mangle table.--oif ifname
Route the packet through `ifname' network interface--iif ifname
Change the packet's incoming interface to `ifname'--gw IP_address
Route the packet via this gateway--continue
Behave like a non-terminating target and continue traversing the rules. Not valid in combination with `--iif'Но при попытке влепить его, я получаю болт:
iptables: No chain/target/match by that nameМожет кто-то знает как я могу побороть свою проблему? Спасибо.
Машину из какой сети Вы пытаетесь пинговать? Из xy.xy.0.0?
>Машину из какой сети Вы пытаетесь пинговать? Из xy.xy.0.0?Спасибо за Ваш ответ.
Нет, все что не входит в сети lan1 и lan2 - должно идти в VPN. Я пытаюсь пинговать все что не входит в xy.xy.0.0, lan1 и lan2. xy.xy.0.0 - входит в одну из подсетей lan2 просто в этой подсети стоит VPN сервер, по этому я выделил эту подсеть особняком, VPN-подсеть в которую попадает клиент, при подключении к серверу VPN - xy.xy.1.0, дефолтный гейтвей - xy.xy.1.1, клиенту отдаеться рандомый IP. VPN - это способ подключение к интеренету, который предоставляет наш провайдер. При этом, каждый пользователь сети, может сделать свое подключение к этому серверу, но я хочу сделать так, чтоб используя одно единственное VPN-соединение на сервере, все клиенты сети lan1 могли пользоваться интернетом.
Не раз настраивал именно такую схему подключения к провайдеру и на Debian, и на RedHat. Никаких проблем никогда не было. Указан маршрут к 0.0.0.0 через ppp - пакеты туда и идут. Если конечно Вы не используете iproute2, RIP и т.п.
Обычно делают так. default gateway не указывают. Прописывают маршруты только к локальным сетям провайдера. После подключения vpn, устанавливается default gateway.
>Не раз настраивал именно такую схему подключения к провайдеру и на Debian,
>и на RedHat. Никаких проблем никогда не было. Указан маршрут к
>0.0.0.0 через ppp - пакеты туда и идут. Если конечно Вы
>не используете iproute2, RIP и т.п.
>Обычно делают так. default gateway не указывают. Прописывают маршруты только к локальным
>сетям провайдера. После подключения vpn, устанавливается default gateway.Вот именно! Обычно так оно и делаеться. Если прописан default gateway, все пакеты на адреса, которых нет в таблице маршрутизации, должны идти через него. Я это знаю. Ни BGP, ни RIP, мы не используем, iproute2 - тоже. Ядро:
Linux rock 2.6.8-1-386 #1 Thu Nov 25 04:24:08 UTC 2004 i686 GNU/Linux
Но не работает:( Исходя из всех поих знаний сетевых технологий - должно идти через default GW, но не идет:( На каком ядре вы поднимали такую схему?
Интересен тот факт, что когда я пытаюсь посмотреть с помощью traceroute как идут пакеты выжи следующее:
[на маршрутизаторе без подключенного VPN]
#traceroute xy.xy.1.1
traceroute to xy.xy.1.1 (xy.xy.1.1), 30 hops max, 38 byte packets
1 xy.xy.1.1 (xy.xy.1.1) 0.936 ms 1.828 ms 0.998 ms
---[на клиенте без подключенного инета]
$ traceroute xy.xy.1.1
traceroute to xy.xy.1.1 (xy.xy.1.1), 30 hops max, 38 byte packets
1 abc.abc.3.1 (abc.abc.3.1) 0.340 ms 0.413 ms 0.293 ms
2 xy.xy..1.1 (xy.xy.1.1) 2.342 ms 1.144 ms 1.009 ms
abc.abc.3.1 - IP router'a в lan2---
[на сервере с подключенныйс VPN]
#traceroute xy.xy.1.1
traceroute to xy.xy.1.1 (xy.xy.1.1), 30 hops max, 38 byte packets
1 xy.xy.1.1 (xy.xy.1.1) 3.160 ms 1.824 ms 2.221 ms---
[на клиенте из lan1 с подключенным инетом]
$ traceroute xy.xy.1.1
traceroute to xy.xy.1.1 (xy.xy.1.1), 30 hops max, 38 byte packets
1 abc.abc.3.1 (abc.abc.3.1) 0.367 ms 0.173 ms 0.137 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *Почему??? - не понимаю:(
>iproute2 - тоже. Ядро:
>Linux rock 2.6.8-1-386 #1 Thu Nov 25 04:24:08 UTC 2004 i686 GNU/Linux
>
>Но не работает:( Исходя из всех поих знаний сетевых технологий - должно
>идти через default GW, но не идет:( На каком ядре вы
>поднимали такую схему?
Пробовал пока только на 2.4.x.
А какой адрес на виртуальном интерфейсе получает роутер abc.abc.3.1 после подключения к провайдеру?
>А какой адрес на виртуальном интерфейсе получает роутер abc.abc.3.1 после подключения к
>провайдеру?xy.xy.4.106 последний октет рандомный, т.е. получаю по DHCP.
>>А какой адрес на виртуальном интерфейсе получает роутер abc.abc.3.1 после подключения к
>>провайдеру?
>
>xy.xy.4.106 последний октет рандомный, т.е. получаю по DHCP.Ядро оказалось не при чем:
Linux rock 2.4.27-2-686 #1 Thu Jan 20 11:10:41 JST 2005 i686 GNU/LinuxИду через тот же маршрутизатор как и с 2.6.х ядром:(
У меня идей больше нет:( Может у Вас есть какие-то идеи по-этом уповоду?
Покажите полную таблицу маршрутов до подключения vpn и после.
>Покажите полную таблицу маршрутов до подключения vpn и после.Сейчас таблица маршрутизации изменилась, не знаю обьяснять снова..
Значит есть таблица маршрутизации[во время подключенного интернета]:
=======
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
xy.xy.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
10.51.1.1 abc.abc.0.16 255.255.255.255 UGH 0 0 0 eth0
10.81.0.14 abc.abc.0.16 255.255.255.255 UGH 0 0 0 eth0
10.113.0.0 abc.abc.0.13 255.255.255.0 UG 0 0 0 eth0
abc.abc.7.0 abc.abc.0.7 255.255.255.0 UG 0 0 0 eth0
abc.abc.23.0 abc.abc.0.16 255.255.255.0 UG 0 0 0 eth0
abc.abc.6.0 abc.abc.0.1 255.255.255.0 UG 0 0 0 eth0
abc.abc.5.0 abc.abc.0.1 255.255.255.0 UG 0 0 0 eth0
10.61.0.0 abc.abc.0.16 255.255.255.0 UG 0 0 0 eth0
abc.abc.3.0 abc.abc.0.1 255.255.255.0 UG 0 0 0 eth0
10.6.0.0 abc.abc.0.16 255.255.255.0 UG 0 0 0 eth0
abc.abc.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.213.0.0 abc.abc.0.13 255.255.255.0 UG 0 0 0 eth0
abc.abc.13.0 abc.abc.0.13 255.255.255.0 UG 0 0 0 eth0
abc.abc.11.0 abc.abc.0.11 255.255.255.0 UG 0 0 0 eth0
abc.abc.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
abc.abc.9.0 abc.abc.0.9 255.255.255.0 UG 0 0 0 eth0
abc.abc.8.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
xy.xy.0.0 abc.abc.0.17 255.255.0.0 UG 0 0 0 eth0
0.0.0.0 xy.xy.1.1 0.0.0.0 UG 0 0 0 ppp0
========[VPN не подключен]:
========
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.51.1.1 abc.abc.0.16 255.255.255.255 UGH 0 0 0 eth0
10.81.0.14 abc.abc.0.16 255.255.255.255 UGH 0 0 0 eth0
10.113.0.0 abc.abc.0.13 255.255.255.0 UG 0 0 0 eth0
abc.abc.7.0 abc.abc.0.7 255.255.255.0 UG 0 0 0 eth0
abc.abc.23.0 abc.abc.0.16 255.255.255.0 UG 0 0 0 eth0
abc.abc.6.0 abc.abc.0.1 255.255.255.0 UG 0 0 0 eth0
abc.abc.5.0 abc.abc.0.1 255.255.255.0 UG 0 0 0 eth0
10.61.0.0 abc.abc.0.16 255.255.255.0 UG 0 0 0 eth0
abc.abc.3.0 abc.abc.0.1 255.255.255.0 UG 0 0 0 eth0
10.6.0.0 abc.abc.0.16 255.255.255.0 UG 0 0 0 eth0
abc.abc.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.213.0.0 abc.abc.0.13 255.255.255.0 UG 0 0 0 eth0
abc.abc.13.0 abc.abc.0.13 255.255.255.0 UG 0 0 0 eth0
abc.abc.11.0 abc.abc.0.11 255.255.255.0 UG 0 0 0 eth0
abc.abc.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
abc.abc.9.0 abc.abc.0.9 255.255.255.0 UG 0 0 0 eth0
abc.abc.8.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
xy.xy.0.0 abc.abc.0.17 255.255.0.0 UG 0 0 0 eth0
========Сейчас lan1 разбита на подсети 8.0/24 и 10.0/24. Входим через интерфейс eth1, в 8-й подсети дефолтный гейтвей -8.1, в 10-й - 10.1.
Все больше изменений никаких небыло.
Странно вот что. Если клиент (например, 192.168.8.100) делает
traceroute xy.xy.1.1
то первый ответ он должен получить от локального интерфейса роутера 192.168.8.1. А у Вас почему-то от abc.abc.3.1$ traceroute xy.xy.1.1
traceroute to xy.xy.1.1 (xy.xy.1.1), 30 hops max, 38 byte packets
1 abc.abc.3.1 (abc.abc.3.1) 0.367 ms 0.173 ms 0.137 ms
2 * * *
3 * * *
4 * * *И как может быть такое?
abc.abc.3.0 abc.abc.0.1 255.255.255.0 UG 0 0 0 eth0
шлюз должен быть в той же подсети. Или это Вы просто так написали?
>Странно вот что. Если клиент (например, 192.168.8.100) делает
>traceroute xy.xy.1.1
>то первый ответ он должен получить от локального интерфейса роутера 192.168.8.1. А
>у Вас почему-то от abc.abc.3.1
>
>$ traceroute xy.xy.1.1
>traceroute to xy.xy.1.1 (xy.xy.1.1), 30 hops max, 38 byte packets
>1 abc.abc.3.1 (abc.abc.3.1) 0.367 ms 0.173 ms 0.137
>ms
>2 * * *
>3 * * *
>4 * * *
>
>И как может быть такое?
>abc.abc.3.0 abc.abc.0.1 255.255.255.0
> UG 0
>0 0 eth0
>шлюз должен быть в той же подсети. Или это Вы просто так
>написали?Я же написал, что произошли изменения в конфигурации сети, т.е. lan1 разделилась на 8 и 10, а 3-я подсеть, которая была lan1 была отдана на lan2. Для вас это ничего не значит, как и для меня в принципе, но в данном случае, это было необходимым условием посторения сети. Траса получаеться та же... т.е вместо 3.1 получаеться 8.1 или 10.1 в зависимости от подсети клиента, но дальше маршрут идет так же... =(.
Если клиент 192.168.8.100 делает traceroute при подключенном vpn на роутере 192.168.8.1 и получает следующую картину$ traceroute xy.xy.1.1
traceroute to xy.xy.1.1 (xy.xy.1.1), 30 hops max, 38 byte packets
1 192.168.8.1 (192.168.8.1) 0.367 ms 0.173 ms 0.137ms
2 * * *
3 * * *то возможно
1. на xy.xy.1.1 пакеты режутся firewall-ом
2. xy.xy.1.1 не знает, куда отправлять ответы для подсети 192.168.8.0/24 или отправляет их не через vpn-соединение.
>Если клиент 192.168.8.100 делает traceroute при подключенном vpn на роутере 192.168.8.1 и
>получает следующую картину
>
>$ traceroute xy.xy.1.1
>traceroute to xy.xy.1.1 (xy.xy.1.1), 30 hops max, 38 byte packets
>1 192.168.8.1 (192.168.8.1) 0.367 ms 0.173 ms 0.137ms
>
>2 * * *
>3 * * *
>
>то возможно
>1. на xy.xy.1.1 пакеты режутся firewall-ом
>2. xy.xy.1.1 не знает, куда отправлять ответы для подсети 192.168.8.0/24 или отправляет
>их не через vpn-соединение.Но сервер то в инет ходит спокойно? Почему на FreeBSD работало а на Linux не хочет? Пакеты идут тем же путем что и шли когда-то на FreeBSD...
>Но сервер то в инет ходит спокойно?
Вы указывайте ip, а не "сервер", "клиент"
>Почему на FreeBSD работало а
>на Linux не хочет? Пакеты идут тем же путем что и
>шли когда-то на FreeBSD...
Попробуйте NAT-ить на роутере все исходящие с интерфейса ppp1 пакеты.
>>Но сервер то в инет ходит спокойно?
>Вы указывайте ip, а не "сервер", "клиент"
Я имел ввиду под сервером - Линуксовый маршрутизатор, он же видет интернет. И видете его отлично!>>Почему на FreeBSD работало а
>>на Linux не хочет? Пакеты идут тем же путем что и
>>шли когда-то на FreeBSD...
>Попробуйте NAT-ить на роутере все исходящие с интерфейса ppp1 пакеты.
Нат lan1 во что? Я пробовал натить в IP который мне отдаеться по DHCP - и ничего все-равно не ходит=(. Есть какие-то идеи?P.S. Понимаю что это звучит как какая-то сказка, но не работает оно!=(
Интересная информация:
#route -C
Kernel IP routing cache
Source Destination Gateway Flags Metric Ref Use Iface
abc.abc.11.227 ksenia ksenia 0 0 1 eth1
abc.abc.10.128 abc.abc.254.48 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.247.176 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.17 abc.abc.11.227 abc.abc.0.11 i 0 0 0 eth0
abc.abc.10.173 abc.abc.7.14 abc.abc.0.7 i 0 0 0 eth0
abc.abc.11.227 abc.abc.8.189 abc.abc.8.189 0 0 1 eth1
abc.abc.10.128 abc.abc.235.230 10.18.1.1 i 0 0 0 ppp0
abc.abc.8.8 abc.abc.149.111 10.18.1.1 i 0 0 2 ppp0
abc.abc.10.128 abc.abc.252.98 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.235.189 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.250.130 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.251.111 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.243.88 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.55 abc.abc.3.8 abc.abc.0.1 i 0 0 0 eth0
abc.abc.7.25 abc.abc.10.84 abc.abc.10.84 0 0 0 eth1
abc.abc.10.128 abc.abc.239.185 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.229.191 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.238.83 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.17 abc.abc.11.155 abc.abc.0.11 i 0 0 15 eth0
abc.abc.10.128 abc.abc.253.160 10.18.1.1 i 0 0 0 ppp0
abc.abc.7.31 abc.abc.10.225 abc.abc.10.225 0 0 0 eth1
abc.abc.10.128 abc.abc.238.246 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.244.203 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.231.174 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.128 abc.abc.228.219 10.18.1.1 i 0 0 0 ppp0
abc.abc.10.190 abc.abc.246.42 10.18.1.1 i 0 0 1 ppp0
abc.abc.11.227 abc.abc.10.197 abc.abc.10.197 0 0 1 eth1
abc.abc.9.61 abc.abc.10.77 abc.abc.10.77 0 0 0 eth1
abc.abc.10.128 abc.abc.241.200 10.18.1.1 i 0 0 0 ppp0Как видно, из таблицы маршрутизации ядра, все-таки что-то в ppp0 направляеться... почему же не идет то что я хочу?
>Я имел ввиду под сервером - Линуксовый маршрутизатор, он же видет интернет.
>И видете его отлично!
Есно роутер будет виден vpn-серверу, т.к. непосредственно соединен с ним и есть маршрут к нему. К другим Вашим подсетям у него тоже должны быть маршруты, которых похоже у него и нет.>Нат lan1 во что? Я пробовал натить в IP который мне отдаеться
>по DHCP - и ничего все-равно не ходит=(. Есть какие-то идеи?
Динамические адреса надо маскарадить (MASQUERADE).P.S. Проблема яйца выеденного не соит, а сколько возни.