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

Маршрутизация, несколько сетей, несколько шлюзов

 ,


0

1

Шлюз на debian
Два физический интерфейса (провайдер и локалка) и два VPN сервера на tap.
От провайдера ИП получается по DHCP, но всегда один и тот же.
VNP и локалка в бридже, также в локалке есть несколько подсетей. IP в локалке на всех устройствах прописанны статично.
192.168.0.0/24 - ПК сотрудников
192.168.1.0/24 - служебное оборудование
192.168.2.0/24 - DHCP для залетных, и интернета для мобильных устройствах подключенных через wifi точки доступа.
Также в локальной сети дополнителльно есть два роутера подключенны к другим провайдерам.
IP роутеров 192.168.0.1 и 192.168.0.2

Подскажите как сделать чтобы из 192.168.1.0/24 некоторые ходили в интернет не через сам шлюз, а через роутер 192.168.0.1. И тоже самое для 192.168.2.0/24 но через роутер 192.168.0.2. При этом необходимо закрыть доступ сети 192.168.2.0/24 в подсеть 192.168.1.0/24 но оставить доступ в подсеть 192.168.0.0/24

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

auto eth1
allow-hotplug eth1
iface eth1 inet manual

auto br0
iface br0 inet static
address 192.168.0.7/24
bridge-ports eth1

post-up ifconfig br0:1 192.168.1.7/24 up
post-up ifconfig br0:2 192.168.2.7/24 up
root@debian7:~# ifconfig
br0       Link encap:Ethernet  HWaddr 00:1b:21:39:76:91
          inet addr:192.168.0.7  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24603920 errors:0 dropped:44178 overruns:0 frame:0
          TX packets:29553066 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2952381583 (2.7 GiB)  TX bytes:45889487062 (42.7 GiB)

br0:1     Link encap:Ethernet  HWaddr 00:1b:21:39:76:91
          inet addr:192.168.1.7  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

br0:2     Link encap:Ethernet  HWaddr 00:1b:21:39:76:91
          inet addr:192.168.2.7  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0      Link encap:Ethernet  HWaddr 68:05:ca:2c:70:57
          inet addr:1.1.1.2  Bcast:1.1.1.127  Mask:255.255.255.128
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:115778129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109832973 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:65107294581 (60.6 GiB)  TX bytes:52700624347 (49.0 GiB)
          Interrupt:16 Memory:fddc0000-fdde0000

eth1      Link encap:Ethernet  HWaddr 00:1b:21:39:76:91
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27766670 errors:0 dropped:10569 overruns:0 frame:0
          TX packets:35094890 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8699606632 (8.1 GiB)  TX bytes:28351212894 (26.4 GiB)
          Interrupt:17 Memory:fdec0000-fdee0000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:165 errors:0 dropped:0 overruns:0 frame:0
          TX packets:165 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:51638 (50.4 KiB)  TX bytes:51638 (50.4 KiB)

tap0      Link encap:Ethernet  HWaddr 00:23:16:12:a2:e1
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:33374818 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39566836 errors:0 dropped:606 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:9166011480 (8.5 GiB)  TX bytes:32520700087 (30.2 GiB)

tap1      Link encap:Ethernet  HWaddr 00:22:15:10:a2:e2
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2271151 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:191611119 (182.7 MiB)


#!/bin/bash

/bin/echo 1 > /proc/sys/net/ipv4/ip_forward

# 
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# 
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p udp -m state --state ESTABLISHED -j ACCEPT

# 
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A OUTPUT -o br0 -j ACCEPT

# 
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT

#NAT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.1.1.1

Если у вас все компьютеры физически в одном сегменте, то доступ гарантировано не перекрыть.

А касательно маршрутизации гуглите и читайте про policy based routing, это уже расписано в куче мест на разных языках.

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

физически один сегмент,но настройки прописанны статично, и менять их будут только умышленно,а это быстро вскроется, увижу левый трафик сразу. ... можно конкретный пример? ... в гугле я был, и если бы сам сообразил как делать, не стал бы тему создавать.

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

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

Достаточно будет запустить tcpdump на любой машине и минут пять понаблюдать, чтобы узнать про наличие других подсетей, а также узнать адреса шлюзов. Можно vlan'ами огородить, в принципе, если оборудование позволяет.

Deleted ()

Моё мнение: Сделай одну локалку для людей и оборудования, тогда прописывая шлюзы ты можешь выходить на разные провайдеры. Для WiFi у нас будет WAN - наша локалка, а DHCP WiFi пусть раздает свою подсеть, для удобства 10.10.x.x. Да, не забудь прикрыть порты Windows https://support.microsoft.com/ru-ru/kb/150543

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

Мужики, с делением сети на сегменты, vlan и т.п. это лишнее и вопрос не в этом. про tcpdump я сомневаюсь что девочки операторы-бухгалтеры вообще когда либо слышали, да и не надо это им. Ну это все демагогия!!!

Подскажите по делу. Линукс два интерфейса - dhcp интернет, и локалка c несколькими подсетями на втором. у всех компьютеров прописан шлюзом этот линукс в своей подсети. Что прописать на линуксе чтобы часть компов шла не на провайдера этого линукса, а через роутер в локалке в другой подсети.

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

Создаёте две дополнительных таблицы маршрутизации с маршрутами по умолчанию через ваши шлюзы:

ip route add defult via 192.168.0.1 table XY
ip route add defult via 192.168.0.2 table XZ
XY, XZ это число от 1 до 252, или осмысленное слово, если происать его преобразование в число в /etc/iproute2/rt_tables.

Далее для каждого, кому нужен выход не через провайдера этого линукса пишите

ip rule add from 192.168.1.C table XY

Не забываете отключить rp_filter для br0, и, если нужно, прописать в таблицы XY и XZ маршруты к локалке:

ip route add 192.168.0.0/24 dev br0 table XY
и т.д.

Когда всё заработает, копируете эти команды секцию post-up, чтобы они выполнялись атоматически при поднятии интерфейса.

Что касается перекрытия доступа, то по умолчанию и бриджёваный трафик проходит через netfilter (iptables). Так что пишите правила в FORWARD и должно хватить.

mky ★★★★★ ()
Ответ на: комментарий от mky
ip route add defult via 192.168.0.2 table 2
ip rule add from 192.168.2.9 table 2
ip route add 192.168.0.0/24 dev br0 table 2

после этого у 192.168.2.9 пропал интернет совсем и доступ в другие подсети может что то еще нужно прописать ? rp_filter для всех интерфейсов 0

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

Вангую что 192.168.0.2 ничего не знает о сети 192.168.2.0, т.е. на него пакетики прилетают а вот от него уже нет. Посмотрите tcpdump

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

Вангую что 192.168.0.2 ничего не знает о сети 192.168.2.0, т.е. на него пакетики прилетают а вот от него уже нет. Посмотрите tcpdump

был прав на 0.2 прописал сеть 2.0/24 через линукс, и все заработало. а может ченить на Линуксе в iptables прописать чтобы на роутеры не лазить?

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

а может ченить на Линуксе в iptables прописать чтобы на роутеры не лазить?

Разверните мысль. У меня в честь Праздника телепатия отключилась. Но вангую man iptables

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

man iptables у меня ума не хватает, подталкините пожалуйста. а скажите еще зачем пишут вот типа такого, чтобы нат работал,

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.1.1.1 
а сейчас для 192.168.2.9 у меня без всяких iptables интернет заработал

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

man iptables у меня ума не хватает

Вот это поможет https://www.google.com/#q=iptables tutorial
Весьма просвещает, есть на русском в том числе. Я без шуток, очень рекомендую прочитать «от корки до корки». И тогда у вас почти не будет возникать вопросов «скажите еще зачем пишут вот типа такого», а на оставшиеся вопросы найдете ответы в мане и гугле.

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.1.1.1

Это NAT. По простому в пакетах уходящих с интерфейса eth0 адрес отправителя будет заменяться на 1.1.1.1 и при получении пакетов на 1.1.1.1 в этом соединении пакетики прилетят тому кто это отправлял.

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

сделал все что нужно, Спасибо!!!

А подскажите еще в чем может быть дело, прописал правила в post-up, после перезагрузки шлюза настраеваемый адресс не может ни куда зайти, как только на шлюзе начинаю смотреть tcpdump -i br0 host 192.168.2.9 сразу начинает ходить трафик как надо

shsv88 ()

Так как широковещательный домен один, то предлагаю не извращаться, а просто использовать одну подсеть, если /24 не хватает, то использовать /23 или /22.

1 VLAN = 1 IP подсеть, остальное моветон, и ложное чувство безопасности.

Deleted ()
Ответ на: комментарий от anc

А можете объяснить почему в неразборчевом режиме начинает работать? у меня же есть вот такое правило

iptables -t nat -A POSTROUTING -s 192.168.2.9-j SNAT --to-source 192.168.2.7

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

Потомушто bridge. Сильно по простому, интерфейс знает только о себе но не о других адресах в бридже, поэтому не реагирует на «неизвестные» адреса. Подобного же (но не постоянного) эффекта можно достигнуть запустив например пинг, в арп таблице добавиться запись и тоже заработает, но как вы понимаете не на долго.

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