LINUX.ORG.RU
ФорумAdmin

Прошу помощи в настройке маршрутизации

 , ,


0

1

Некоторое время уже создавал тему по настройке маршритизации трафика по двум провайдерам и вроед все получилось (можно глянуть тут). Но сейчас встал вопрос о дополнительной внутренней маршрутизации. Итак, напомню что есть:

  • ETH1: содержит
    • адрес N11_IP, подсеть N11_NET
    • адрес N12_IP, подсеть N12_NET
    • адрес N13_IP, подсеть N13_NET
  • ETH2:
    • адрес N21_IP, подсеть N21_NET
  • ETH3:
    • адрес N31_IP, подсеть N3_NET, шлюз провайдера N3_GATE - белый
    • адрес N32_IP, подсеть N3_NET
    • адрес N33_IP, подсеть N3_NET
    • адрес N34_IP, подсеть N3_NET
  • ETH4:
    • адрес N41_IP, подсеть N41_NET, шлюз провайдера N41_GATE - серый

Трафик проброшен по каналам

  • N11_NET > N3_GATE
  • N12_NET > N3_GATE
  • N13_NET > N3_GATE
  • N21_NET > N41_GATE

Ну и то, как все это сделано

#!/bin/sh

iptables -F iptables -F -t nat iptables -F -t mangle iptables -F -t filter

ip route flush cache

##############################################################################

SRC_HOST=^_^ DEST_HOST=^_^

##############################################################################

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

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

############################################################################## # фильтрация входящих соединений #############################################

iptables -A INPUT -p tcp --dport 80 -j ACCEPT # www iptables -A INPUT -p tcp --dport 53 -j ACCEPT # DNS iptables -A INPUT -p tcp --dport 5080 -j ACCEPT # AOM ??? iptables -A INPUT -p udp --dport 53 -j ACCEPT # DNS #iptables -A INPUT -p udp --dport 953 -j ACCEPT # DNS iptables -A INPUT -p tcp --dport 953 -j ACCEPT # DNS-rndc #iptables -A INPUT -p udp -d >_< --dport 67 -j ACCEPT # DHCPD iptables -A INPUT -p udp --dport 123 -j ACCEPT # NTP iptables -A INPUT -p tcp --dport 21 -j ACCEPT # FTP

iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT

#iptables -A INPUT -j DROP # правило по умолчанию iptables -P INPUT DROP

# фильтрация трафика #########################################################

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -j ACCEPT

######################################################################################## ######################################################################################## ######################################################################################## # адресация роутинга ###################################################################

iptables -t mangle -A PREROUTING -s $SRC_HOST -d $DEST_HOST -j MARK --set-mark 0

iptables -t mangle -A PREROUTING -s $N11_NET -j MARK --set-mark 100 iptables -t mangle -A PREROUTING -s $N12_NET -j MARK --set-mark 100 iptables -t mangle -A PREROUTING -s $N13_NET -j MARK --set-mark 100 iptables -t mangle -A PREROUTING -s $N21_NET -j MARK --set-mark 200

######################################################################################## ######################################################################################## ######################################################################################## # включение роутинга ###################################################################

iptables -t nat -A POSTROUTING -m mark --mark 100 -j SNAT --to-source $N31_IP iptables -t nat -A POSTROUTING -m mark --mark 200 -j SNAT --to-source $N41_IP

iptables -A INPUT -s #SOME_SERV -j ACCEPT

iptables-save > /etc/sysconfig/iptables

#!/bin/sh

ip route flush all table main ip route flush all table T1 ip route flush all table T2 ip route flush all table T3

ip route add $N11_NET dev $ETH1 src $N11_IP table main ip route add $N12_NET dev $ETH1 src $N12_IP table main ip route add $N13_NET dev $ETH1 src $N13_IP table main ip route add $N21_NET dev $ETH2 src $N21_IP table main ip route add $N41_NET dev $ETH4 src $N41_IP table main ip route add $N31_NET dev $ETH3 src $N31_IP table main

ip route add default via $N3_GATE ip route add $SOME_HOST via $N3_GATE

ip route add $N11_NET dev $ETH1 src $N11_IP table T1 ip route add $N12_NET dev $ETH1 src $N12_IP table T1 ip route add $N31_NET dev $ETH3 src $N31_IP table T1 ip route add default via $N3_GATE dev $ETH3 table T1

ip route add $N41_NET dev $ETH4 src $N41_IP table T2 ip route add $N13_NET dev $ETH1 src $N13_IP table T2 ip route add $N21_NET dev $ETH2 src $N21_IP table T2 ip route add default via $N41_GATE table T2

ip route flush cache

ip rule flush

ip rule add from all table main pref 32766 ip rule add from all table default pref 32767

ip rule add fwmark 100 table T1 pref 1000 ip rule add fwmark 200 table T2 pref 1001

Требуется - разрешить связь между компьютерами:

  • $H1_N12 > $H2_N13
  • $H3_N13 > $H4_N12
  • $H5_N21 > $N12_NET

Пробовал разные варианты и видимо не отгадал ниодного рабочего )

LORCODE освой.

Эти вопросы про policy-routing задаются здесь каждую неделю. Поищи. 2 провайдера - это стандартный вариант.

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

2 провайдера уже работают. Проблема именно в добавлении нескольких локальных маршрутов. Я, конечно, могу описать все что я пробовал - маскарадинг, снат, добавить еще одну таблицу роутинга ... Но думаю мало кто захочет читать код, который не приносит пользу.

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

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

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

Локальные маршруты - это маршруты внутри локальных сетей. Хосты между собой прямого доступа не имеют и должны общаться через сервер. Может не так выразился )

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

в таблице main должны быть все прямые и статические машруты кроме маршрута по-умолчанию, и эта таблица должна просматриваться сразу после таблицы local!

0:      from all lookup local 
128:    from all lookup main 
1024:   from all fwmark 0x1 lookup 11
1025:   from all fwmark 0x2 lookup 12 
1028:   from xxx.xxx.xxx.xxx lookup 12 
1029:   from xxx.xxx.xxx.x/n lookup 12 
2070:   from all lookup 11

В дополнительных таблицах должен быть шлюз по-умолчанию и если есть, то специфические статические маршруты.

Есть другой вариант, когда все прямые и статические маршруты дублируют во все таблицы.

Главная проблема с которой сталкиваются в этой ситуации заключается в том, что после просмотра таблицы local сразу выбирают таблицу, в которой есть только dgw и нет прямых маршрутов.

Я так понял, что все сети подключены через 1 роутер, значит никаких дополнительных действий с прописыванием локальных маршрутов делать не нужно.

В iptables нужно разрешить пропускать пакеты между сетями.

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

Привел таблицу правил к следующему виду.

0:      from all lookup local
100:    from all lookup main
1000:   from all fwmark 0x64 lookup T1
1001:   from all fwmark 0xc8 lookup T2
2000:   from all lookup T1

Ну и выполнил

sysctl net.ipv4.conf.enp4s0f0.accept_local=1
sysctl net.ipv4.conf.enp4s0f1.accept_local=1

Это правильно ? По сути заработало, но частично. Если на другом конце машина с линухой, то пинги есть, если с виндой - то нету. Что не так ?

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