2 сети на одном интерфейсе

RIP, OSFP, BGP, MPLS/VPLS
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

2 сети на одном интерфейсе

Сообщение Sir_Prikol »

Доброго времени суток. Давно меня не было, занят был :)
Появилась проблемка. Забираю от прова 2 сети на одном ифейсе. одня служебная (/30) вторая для сервисов (/29)
Всё приходит на одном ифейсе

Ну и временно третий аплинк для стыка с парочкой ресурсов.
Вводные:
интерфейс sfp-sfpplus1 - 198.51.100.208/29 (сервисная, на ифейсе у меня .210)
интерфейс sfp-sfpplus1 - 198.51.112.208/30 (служебка, на ифейсе у меня .210)
интерфейс ISP_05 - 198.51.171.209/24 - стыковая с другими

принимал-бы сети /30 и /29 на разных ифейсах - уже-бы собрал, а на одном запутался
Сделал следующее:

Код: Выделить всё

/ip address
add interface=sfp-sfpplus1 address=198.51.112.210/30 comment=ISP1_HOME
add interface=sfp-sfpplus1 address=198.51.100.210/29 comment=ISP1_01
add interface=sfp-sfpplus1 address=198.51.100.211/29 comment=ISP1_02
add interface=sfp-sfpplus1 address=198.51.100.212/29 comment=ISP1_03
add interface=sfp-sfpplus1 address=198.51.100.213/29 comment=ISP1_04
add interface=sfp-sfpplus1 address=198.51.100.214/29 comment=ISP1_05

#Метим соединения по подсетям
/ip firewall mangle
add chain=prerouting in-interface=sfp-sfpplus1 dst-address=198.51.112.208/30 connection-state=new action=mark-connection new-connection-mark=conn_mega_home passthrough=no
add chain=prerouting in-interface=sfp-sfpplus1 dst-address=198.51.100.208/29 connection-state=new action=mark-connection new-connection-mark=conn_mega_abon passthrough=no
add chain=prerouting in-interface=ISP_05 dst-address=198.51.171.209/24 connection-state=new action=mark-connection new-connection-mark=conn_bilain passthrough=no

#Вешаем рутинг марки
/ip firewall mangle
add chain=output connection-mark=conn_mega_home action=mark-routing new-routing-mark=route_mega_home passthrough=no
add chain=output connection-mark=conn_mega_abon action=mark-routing new-routing-mark=route_mega_abon passthrough=no
add chain=output connection-mark=conn_bilain action=mark-routing new-routing-mark=route_bilain passthrough=no

#Выходим в мир с тех-же адресов что и пришли
/ip firewall mangle
add chain=output src-address=198.51.112.208/30 action=mark-routing new-routing-mark=route_mega_home passthrough=no
add chain=output src-address=198.51.100.208/29 action=mark-routing new-routing-mark=route_mega_abon passthrough=no
add chain=output src-address=198.51.171.209/24 action=mark-routing new-routing-mark=route_bilain passthrough=no

#Обозначаем дефолтные маршруты
/ip route
add dst-address=0.0.0.0/0 gateway=198.51.112.209 routing-mark=route_mega_home
add dst-address=0.0.0.0/0 gateway=198.51.100.209 routing-mark=route_mega_abon
add dst-address=0.0.0.0/0 gateway=198.51.171.1 routing-mark=route_bilain

#Выходим именно с тех с кого пришли
/ip route rule
add routing-mark=route_mega_home action=lookup-only-in-table table=route_mega_home
add routing-mark=route_mega_abon action=lookup-only-in-table table=route_mega_abon
add routing-mark=route_bilain action=lookup-only-in-table table=route_bilain

#Создаём дефолт для всех остальных, если сети попадали
/interface bridge add name=Br-Loopback
/ip route add dst-address=0.0.0.0/0 gateway=Br-Loopback distance=254


/ip firewall mangle
add chain=output src-address=198.51.112.208/30 dst-address-list=!BOGON action=mark-routing new-routing-mark=route_mega_home passthrough=no

/ip route
set pref-src=198.51.112.210 [ find gateway=Br-Loopback dst-address=0.0.0.0/0 ]

/ip firewall mangle
add chain=prerouting connection-mark=conn_mega_home in-interface=!sfp-sfpplus1 action=mark-routing new-routing-mark=route_mega_home passthrough=no
add chain=prerouting connection-mark=conn_mega_abon in-interface=!sfp-sfpplus1 action=mark-routing new-routing-mark=route_mega_abon passthrough=no
add chain=prerouting connection-mark=conn_bilain in-interface=!ISP_05 action=mark-routing new-routing-mark=route_bilain passthrough=no


/ip firewall address-list
add list=via/198.51.112.210 address=100.100.100.254
add list=via/198.51.100.210 address=100.100.100.253
add list=via/198.51.171.209 address=100.100.100.252
#....

#Описываем выход внутрянки через конкретный роут
/ip firewall mangle
add chain=prerouting src-address-list=via/198.51.112.210 dst-address-list=!BOGONS action=mark-routing new-routing-mark=route_mega_home passthrough=no
add chain=prerouting src-address-list=via/198.51.100.210 dst-address-list=!BOGONS action=mark-routing new-routing-mark=route_mega_abon passthrough=no
add chain=prerouting src-address-list=via/198.51.171.209 dst-address-list=!BOGONS action=mark-routing new-routing-mark=route_bilain passthrough=no

#Пишем нужный нат для конкретных сервисов
/ip firewall nat
add chain=srcnat routing-mark=route_mega_home src-address-list=via/198.51.112.210 action=src-nat to-addresses=198.51.112.210
add chain=srcnat routing-mark=route_mega_abon src-address-list=via/198.51.100.210 action=src-nat to-addresses=198.51.100.210
add chain=srcnat routing-mark=route_bilain src-address-list=via/198.51.171.209 action=src-nat to-addresses=198.51.171.209

#Общий нат
/ip firewall nat
add chain=srcnat out-interface=sfp-sfpplus1 routing-table=main action=src-nat to-addresses=198.51.100.212
add chain=srcnat out-interface=sfp-sfpplus1 routing-table=main action=src-nat to-addresses=198.51.112.210




Выхода в мир, как такового нет, вернее выход в мир работает у частичных сервисов из локалки.
ЧЯДНТ ? :)

З.Ы. подправил вводные
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: 2 сети на одном интерфейсе

Сообщение Sir_Prikol »

Всё. Задача меняется. Я долго думал где косяк. Не надо использовать ни манглы ни роут рулы. Надо просто нарисовать второй нат на тот-же итнтерфейс но для /29 сети. И тут я поплыл...
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: 2 сети на одном интерфейсе

Сообщение Sir_Prikol »

После некоторых мучений - собрал следующую конфигурацию...

Код: Выделить всё

/ip firewall nat
add action=src-nat chain=srcnat out-interface=sfp-sfpplus1 src-address-list=to-198.51.100.211 to-addresses=198.51.100.211
add action=src-nat chain=srcnat out-interface=sfp-sfpplus1 src-address-list=to-198.51.100.213 to-addresses=198.51.100.213
add action=src-nat chain=srcnat out-interface=sfp-sfpplus1 src-address-list=to-198.51.100.212 to-addresses=198.51.100.212
add action=src-nat chain=srcnat out-interface=sfp-sfpplus1 src-address-list=to-198.51.100.210 to-addresses=198.51.100.210
add action=src-nat chain=srcnat out-interface=sfp-sfpplus1 to-addresses=198.51.112.210
add action=src-nat chain=srcnat out-interface=00.CLEAN_INET to-addresses=198.18.24.2
add action=src-nat chain=srcnat out-interface=00.NN_HT_PAMIRKA to-addresses=172.16.100.22
add action=src-nat chain=srcnat out-interface=CAM_HOLOD_1701 to-addresses=192.168.88.2
add action=dst-nat chain=dstnat dst-address-list=billing src-address-type=!local to-addresses=100.100.100.254
add action=dst-nat chain=dstnat dst-address-list=web-panel dst-port=80,443 protocol=tcp to-addresses=100.100.100.252
add action=dst-nat chain=dstnat dst-address-list=GitLab dst-port=22,80,443,12320,12321 protocol=tcp to-addresses=100.100.0.100
add action=dst-nat chain=dstnat dst-address-list=icloud dst-port=5000,5001 protocol=tcp to-addresses=100.100.0.20
add action=dst-nat chain=dstnat dst-address-list=web-panel dst-port=8000,8002,8080 protocol=tcp to-addresses=100.100.100.252
add action=dst-nat chain=dstnat dst-address-list=web-panel dst-port=25,110,143,465,587,993,995 protocol=tcp to-addresses=100.100.100.252
add action=dst-nat chain=dstnat dst-address-list=web-panel dst-port=20,21,22 protocol=tcp to-addresses=100.100.100.252
add action=dst-nat chain=dstnat dst-address-list=plex-server dst-port=13400,32400 protocol=tcp to-addresses=100.100.100.253
add action=dst-nat chain=dstnat dst-address-list=rdp dst-port=3389 log-prefix=web protocol=tcp to-addresses=100.64.1.3

/ip firewall mangle
add action=mark-routing chain=output dst-port=53 new-routing-mark=unblock passthrough=yes protocol=udp
add action=mark-routing chain=output dst-port=53 new-routing-mark=unblock passthrough=yes protocol=tcp
add action=mark-routing chain=prerouting dst-port=53 log-prefix=dns new-routing-mark=unblock passthrough=yes protocol=udp
add action=mark-routing chain=prerouting dst-port=53 log-prefix=dns new-routing-mark=unblock passthrough=yes protocol=tcp
add action=accept chain=prerouting dst-address-list=my-network in-interface-list=Unblock
add action=accept chain=output dst-address-list=my-network
add action=accept chain=prerouting dst-address-list=my-network dst-address-type=!local
add action=mark-routing chain=prerouting dst-address-list=ddosed new-routing-mark=ddoser-route-mark passthrough=no src-address-list=ddoser
add action=mark-routing chain=prerouting dst-address-list=zz_NET_unblock new-routing-mark=unblock passthrough=no


/ip route
add distance=1 gateway=198.18.24.1 pref-src=198.18.24.2 routing-mark=unblock
add distance=1 gateway=198.51.112.209
add distance=1 gateway=198.51.100.209
add distance=5 gateway=198.51.171.1
add distance=254 gateway=Br-LoopBack
add distance=1 dst-address=198.51.148.145/32 gateway=198.51.112.209 pref-src=198.51.112.210
add distance=1 dst-address=198.51.66.20/32 gateway=198.51.112.209
add distance=1 dst-address=198.51.4.0/22 gateway=198.18.24.1 pref-src=198.18.24.2
add distance=1 dst-address=198.51.167.0/24 gateway=198.18.24.1 pref-src=198.18.24.2
add distance=1 dst-address=172.16.103.0/24 gateway=172.16.100.21
add distance=1 dst-address=172.16.104.0/24 gateway=172.16.100.21
add distance=1 dst-address=198.51.17.213/32 gateway=198.51.171.1%ISP_05
add distance=1 dst-address=198.51.84.54/32 gateway=198.51.112.209

Всё прекрасно, кроме одного... Если я с любого сервера внутри сети делаю

Код: Выделить всё

~# wget -qO- eth0.me
198.51.100.210
~# 
Получаю правильный ип, который прописан в соурс нате

А когда делайю трейс с той-же машинки, то...

Код: Выделить всё

# traceroute google.ru
traceroute to google.ru (142.251.39.99), 30 hops max, 60 byte packets
 1  100.64.0.1 (100.64.0.1)  0.295 ms  0.282 ms  0.269 ms
 2  198.51.112.209 (178.178.112.209)  2.989 ms  2.948 ms  2.928 ms
 3  10.222.78.117 (10.222.78.117)  16.946 ms  16.998 ms 10.222.78.109 (10.222.78.109)  20.267 ms
 4  74.125.118.54 (74.125.118.54)  18.660 ms  20.234 ms 72.14.213.132 (72.14.213.132)  20.113 ms
гейт у меня подставляется не с нужной подсети.

Куда копать ? В логах уходит в нужный src-nat, а в трейсе подставляет совершенно другой шлюз...
Последний раз редактировалось Sir_Prikol 10 дек 2023, 23:04, всего редактировалось 1 раз.
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Chupaka
Сообщения: 3856
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: 2 сети на одном интерфейсе

Сообщение Chupaka »

Sir_Prikol писал(а): 10 дек 2023, 22:03 А когда делайю трейс с той-же машинки, то...

гейт у меня подставляется не с нужной подсети.

Куда копать ? (Подозреваю ч то в сторону роуте руллз, но до этого надо как-то отмаркировать нужное...
А не хотите копнуть в сторону провайдера? Настройте только одну подсеть - и при трассировке вполне можете удивиться, если у провайдера роутер на обе подсети один и обеим подсетям отвечает с одного и того же адреса :)
Аватара пользователя
Sir_Prikol
Сообщения: 560
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: 2 сети на одном интерфейсе

Сообщение Sir_Prikol »

Вариант возможен. Даже более того скажу, что вероятен. На той стороне хувей. Завтра прокачусь в их DC и попинаю по настройкам. В теории (и на практике) так оно и есть. В принципе - это только визуальная проблема :) Хотя и немного раздражающая :)
Дома: CCR2004 (7-ISP(GPON)белый IP)