LINUX.ORG.RU
решено ФорумAdmin

подскажите по маршрутизации

 , ,


0

1

Всем привет!

Подскажите пожалуйста, как правильно настроить маршрутизацию:

На сервере интернет получаем по средством 3g,через интерфейс ppp0 он у нас роутится в сеть.При включении впн у нас появляется интерфейс tap0. Теперь нам нужно, когда мы на сервере включаем vpn, все кто в подсети Х.Х.1.0 получали интернет без впн, а все кто в подсети Х.Х.2.0 уже интернет с впн`ом

всем заранее благодарен за совет!

Если имеется в виду, что для сети Х.Х.2.0 помимо доступа в Internet так же должен работать маршрут до сети за VPN, то на сервере нужно:
- проложить маршрут до сети (ПК) за вторым участником VPN через IP адрес второго участника VPN;
- создать правило iptables для NAT (маскарадинг) исключающее пакеты, адресом назначения которых являются ПК, находящиеся за вторым участником VPN;
- создать правило iptables, которое будет делать «drop» пакетов, которые адресованы ПК за вторым участником VPN и исходят из сети Х.Х.1.0; - задействовать продвижение пакетов между интерфейсами (net.ipv4.ip_forward = 1);
- на втором участнике VPN проложить маршруты до сетей Х.Х.1.0 и Х.Х.2.0 через IP адрес сервера из VPN сети.

Удачи.

kostik87 ★★★★★★★★★★★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 2)

Тебе нужен policy-based роутинг. То есть, решение о маршруте будет приниматься не только исходя из адреса назначения, но и из адреса отправителя. В гугле много информации по запросу linux policy based routing, в том числе и русскоязычной. Есть и статьи на хабре.

Black_Shadow ★★★★★★★★★★★★
()

В кратце: Создаёшь 2 таблицы маршрутизации, например, 3g и vpn. Добавляешь в файл /etc/iproute2/rt_tables строки:

101 3g
102 vpn

Допустим, A.A.A.A - шлюз в соединении 3g, B.B.B.B - шлюз в соединении VPN. Добавляешь эти шлюзы в таблицы:

ip route add default via A.A.A.A table 3g
ip route add default via B.B.B.B table vpn
Теперь нужно указать, какие пакеты будут идти через эти таблицы.
ip rule add prio 500 from X.X.1.0/24 table 3g
ip rule add prio 500 from X.X.2.0/24 table vpn

Конечно, не надо забывать про маскарадинг там, где он нужен.

Black_Shadow ★★★★★★★★★★★★
()
Ответ на: комментарий от Black_Shadow

спасибо, но давайте разберем на примере, а то никак не въеду:

у нас поднято на сервере несколько сетевых интерфейсов:

eth1 и eth1:1

мы получаем интернет по 3g и роутим его спокойно в eth0, т.е. все компы в сети получили по dhcp у нас адреса и ходят в глобальную сеть (шлюз 10.7.7.1=eth1)

теперь мы еще на сервере запускаем openvpn, у нас добавился интерфейс-tap0.

(eth1:1=10.7.8.1)

теперь нам нужно чтоб все кто в сети если пропишут у себя шлюз(10.7.8.1) ходили в интернет по впн

А у всех у кого dhcp ходили по 3g

lammer777
() автор топика
Ответ на: комментарий от Black_Shadow
ip rule add prio 500 from X.X.1.0/24 table 3g
ip rule add prio 500 from X.X.2.0/24 table vpn

после этого интернет в сети пропадает на глухо, пока не сделаешь:

ip rule delete prio 500 from X.X.1.0/24 table 3g
ip rule delete prio 500 from X.X.2.0/24 table vpn

lammer777
() автор топика
Ответ на: комментарий от lammer777

вся задача целиком:

У нас сервер с одной сетевой картой(eth0(10.5.8.1)), получает интернет по модему mts-3g и свободно по dhcp роутит его в локальную сеть

Мы в /etc/network/interfaces подняли еще два сетевых интерфейса eth0:2(10.5.9.1) и eth0:3(10.5.8.3)

теперь на сервере этом же я запускаю openvpn, и мне нужно чтоб все кто в локалке по dhcp получали интернет чистый, а все кто в качестве шлюза пропишут eth0:2(10.5.9.1) получали интернет впэнистый

Подскажите кто что сможет, заранее благодарен!

lammer777
() автор топика
Ответ на: комментарий от lammer777

Внутренние сети /24 или /16? Если /16, то не очевидно, с какого интерфейса должен идти ответный пакет (в сторону клиента). Легко может быть, что шлюзом указан 10.5.9.1, а ответ приходит с 10.5.8.3. В этом случае нужно добавлять дополнительные правила для роутинга уже в сторону клиента.

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