Чиглүүлэлт нь TCP/IP сүлжээгээр пакетуудыг дамжуулах хамгийн сайн замыг олох үйл явц юм. IPv4 сүлжээнд холбогдсон аливаа төхөөрөмж нь процесс болон чиглүүлэлтийн хүснэгтүүдийг агуулна.
Энэ нийтлэл нь HOWTO биш бөгөөд энэ нь RouterOS дахь статик чиглүүлэлтийн талаар жишээн дээр тайлбарласан, би бусад тохиргоог зориудаар орхисон (жишээ нь, Интернетэд нэвтрэх srcnat), тиймээс материалыг ойлгоход сүлжээ болон RouterOS-ийн талаар тодорхой түвшний мэдлэг шаардагдана.
Шилжүүлэх, чиглүүлэх
Switching гэдэг нь нэг Layer2 сегмент (Ethernet, ppp, ...) дотор пакетуудыг солилцох үйл явц юм. Хэрэв төхөөрөмж нь пакетийн хүлээн авагч нь түүнтэй нэг Ethernet дэд сүлжээнд байгааг харвал arp протоколыг ашиглан mac хаягийг сурч, чиглүүлэгчийг алгасаж пакетыг шууд дамжуулдаг. Ppp (цэгээс цэг рүү) холболт нь зөвхөн хоёр оролцогчтой байж болох ба пакет нь үргэлж нэг хаяг руу илгээгддэг 0xff.
Чиглүүлэлт нь Layer2 сегментүүдийн хооронд пакетуудыг шилжүүлэх үйл явц юм. Хэрэв төхөөрөмж нь хүлээн авагч нь Ethernet сегментээс гадуур байгаа пакетийг илгээхийг хүсвэл өөрийн чиглүүлэлтийн хүснэгтийг харж, пакетийг дараа нь хаана илгээхийг мэддэг гарц руу дамжуулдаг (эсвэл пакетын анхны илгээгч нь мэдэхгүй байж болно). Үүнийг мэдэхгүй).
Чиглүүлэгчийн тухай бодох хамгийн хялбар арга бол хоёр ба түүнээс дээш Layer2 сегменттэй холбогдсон төхөөрөмж бөгөөд чиглүүлэлтийн хүснэгтээс хамгийн сайн маршрутыг тодорхойлох замаар тэдгээрийн хооронд пакет дамжуулах чадвартай төхөөрөмж юм.
Хэрэв та бүх зүйлийг ойлгож байгаа бол эсвэл аль хэдийн мэдэж байсан бол цааш уншина уу. Үлдсэн тохиолдолд жижиг, гэхдээ маш их багтаамжтай танилцахыг би танд зөвлөж байна
RouterOS болон PacketFlow дээр чиглүүлэлт хийх
Статик чиглүүлэлттэй холбоотой бараг бүх функцууд багцад байдаг систем. Гялгар уут чиглүүлэлт динамик чиглүүлэлтийн алгоритмууд (RIP, OSPF, BGP, MME), чиглүүлэлтийн шүүлтүүрүүд болон BFD-ийн дэмжлэгийг нэмдэг.
Чиглүүлэлт тохируулах үндсэн цэс: [IP]->[Route]
. Нарийн төвөгтэй схемүүд нь пакетуудыг дараах байдлаар чиглүүлэлтийн тэмдэгээр урьдчилан шошголохыг шаардаж болно: [IP]->[Firewall]->[Mangle]
(гинж PREROUTING
и OUTPUT
).
PacketFlow дээр IP пакетийн чиглүүлэлтийн шийдвэр гаргадаг гурван газар байдаг:
- Чиглүүлэгчийн хүлээн авсан чиглүүлэлтийн пакетууд. Энэ үе шатанд пакет нь дотоод процесс руу шилжих үү эсвэл цааш нь сүлжээнд илгээх үү гэдгийг шийддэг. Нийтийн тээврийн багц хүлээн авна Гаралтын интерфейс
- Орон нутгийн гарч буй пакетуудыг чиглүүлэх. Гарсан пакетуудыг хүлээн авдаг Гаралтын интерфейс
- Гарч буй пакетуудын чиглүүлэлтийн нэмэлт алхам нь чиглүүлэлтийн шийдвэрийг өөрчлөх боломжийг танд олгоно
[Output|Mangle]
- 1, 2-р блок дахь багцын зам нь дүрмээс хамаарна
[IP]->[Route]
- 1, 2, 3-р цэгүүдийн багцын зам нь дүрмээс хамаарна
[IP]->[Route]->[Rules]
- 1, 3-р блокуудын багцын замыг ашиглан нөлөөлж болно
[IP]->[Firewall]->[Mangle]
RIB, FIB, Routing Cache
Чиглүүлэлтийн мэдээллийн бааз
Динамик чиглүүлэлтийн протоколууд, ppp болон dhcp, статик болон холбогдсон маршрутуудаас чиглүүлэлтүүдийг цуглуулдаг суурь. Энэ мэдээллийн сан нь администраторын шүүсэнээс бусад бүх маршрутыг агуулна.
Нөхцөлтэйгээр, бид үүнийг таамаглаж болно [IP]->[Route]
RIB харуулж байна.
Дамжуулах мэдээллийн бааз
RIB-аас хамгийн сайн маршрутуудыг цуглуулсан суурь. FIB дахь бүх маршрутууд идэвхтэй бөгөөд пакетуудыг дамжуулахад ашиглагддаг. Хэрэв маршрут идэвхгүй болсон бол (администратор (систем) идэвхгүй болсон эсвэл пакет илгээх интерфейс идэвхгүй бол) маршрутыг FIB-ээс хасна.
Чиглүүлэлтийн шийдвэр гаргахын тулд FIB хүснэгт нь IP пакетийн талаарх дараах мэдээллийг ашиглана.
- Эх сурвалжийн хаяг
- Очих газрын хаяг
- эх интерфэйс
- Чиглүүлэлтийн тэмдэг
- ToS (DSCP)
FIB багцад орох нь дараах үе шатуудыг дамждаг.
- Багц нь дотоод чиглүүлэгчийн процесст зориулагдсан уу?
- Пакет нь систем эсвэл хэрэглэгчийн PBR дүрэмд хамаарах уу?
- Хэрэв тийм бол багцыг заасан чиглүүлэлтийн хүснэгт рүү илгээнэ
- Багцыг үндсэн хүснэгт рүү илгээдэг
Нөхцөлтэйгээр, бид үүнийг таамаглаж болно [IP]->[Route Active=yes]
FIB харуулж байна.
Чиглүүлэлтийн кэш
Маршрутыг кэшлэх механизм. Чиглүүлэгч нь пакетуудыг хаашаа илгээснийг санаж, хэрэв ижил төстэй (ижил холболтоос) байгаа бол FIB-ийг шалгахгүйгээр тэдгээрийг ижил маршрутаар явуулах боломжийг олгодог. Маршрутын кэшийг үе үе цэвэрлэдэг.
RouterOS-ийн администраторуудын хувьд тэд чиглүүлэлтийн кэшийг харах, удирдах хэрэгслийг бүтээгээгүй, гэхдээ үүнийг идэвхгүй болгох боломжтой үед. [IP]->[Settings]
.
Энэ механизмыг linux 3.6 цөмөөс устгасан боловч RouterOS нь цөм 3.3.5-ыг ашигладаг хэвээр байгаа бөгөөд магадгүй Routing cahce шалтгаануудын нэг юм.
Маршрутын харилцах цонх нэмэх
[IP]->[Route]->[+]
- Чиглэл үүсгэхийг хүссэн дэд сүлжээ (өгөгдмөл: 0.0.0.0/0)
- Пакет илгээгдэх гарцын IP эсвэл интерфейс (хэд хэдэн байж болно, доорх ECMP-ийг үзнэ үү)
- Гарцын бэлэн байдлыг шалгах
- Бичлэгийн төрөл
- Маршрутын зай (хэмж).
- Чиглүүлэлтийн хүснэгт
- Энэ замаар орон нутгийн гадагш илгээх пакетуудын IP
- Хамрах хүрээ, зорилтот хамрах хүрээний зорилго нь нийтлэлийн төгсгөлд бичигдсэн болно.
Маршрутын тугнууд
- X - Маршрутыг администратор идэвхгүй болгосон (
disabled=yes
) - A - Маршрутыг пакет илгээхэд ашигладаг
- D - Маршрутыг динамикаар нэмсэн (BGP, OSPF, RIP, MME, PPP, DHCP, холбогдсон)
- C - Дэд сүлжээ нь чиглүүлэгчтэй шууд холбогдсон
- S - Статик зам
- r,b,o,m - Маршрутыг динамик чиглүүлэлтийн протоколуудын аль нэгээр нэмсэн
- B,U,P - Маршрутыг шүүх (дамжуулахын оронд пакетуудыг буулгах)
Гарцад юу зааж өгөх вэ: IP хаяг эсвэл интерфейс?
Энэ систем нь тангараглахгүй бөгөөд буруу зүйл хийсэн бол сануулга өгөхгүй байхад хоёуланг нь зааж өгөх боломжийг олгодог.
IP хаяг
Гарцын хаяг нь Layer2 дээр хандах боломжтой байх ёстой. Ethernet-ийн хувьд энэ нь чиглүүлэгч нь идэвхтэй IP интерфэйсүүдийн аль нэгэнд ижил дэд сүлжээний хаягтай байх ёстой гэсэн үг бөгөөд ppp-ийн хувьд гарцын хаягийг идэвхтэй интерфейсүүдийн аль нэгэнд дэд сүлжээний хаягаар зааж өгсөн байх ёстой.
Хэрэв Layer2-ийн хүртээмжийн нөхцөл хангагдаагүй бол маршрут идэвхгүй гэж тооцогддог бөгөөд FIB-д хамаарахгүй.
интерфэйс
Бүх зүйл илүү төвөгтэй бөгөөд чиглүүлэгчийн үйлдэл нь интерфейсийн төрлөөс хамаарна.
- PPP (Async, PPTP, L2TP, SSTP, PPPoE, OpenVPN *) холболт нь зөвхөн хоёр оролцогч байх ёстой бөгөөд хэрэв гарц нь хүлээн авагч өөрөө мөн болохыг илрүүлбэл пакетийг дамжуулах гарц руу үргэлж илгээх болно. түүний орон нутгийн үйл явц.
- Ethernet нь олон оролцогчид байгаа гэж үздэг бөгөөд пакет хүлээн авагчийн хаягаар arp интерфэйс рүү хүсэлт илгээдэг бөгөөд энэ нь холбогдсон маршрутын хувьд хүлээгдэж буй бөгөөд хэвийн үйлдэл юм.
Гэхдээ та интерфэйсийг алсын дэд сүлжээний маршрут болгон ашиглахыг оролдох үед та дараах нөхцөл байдлыг олж авах болно: чиглүүлэлт идэвхтэй байна, гарц руу ping хийх нь дамждаг боловч заасан дэд сүлжээнээс хүлээн авагчид хүрэхгүй. Хэрэв та sniffer-ээр дамжуулан интерфейсийг харвал алсын дэд сүлжээнээс хаягтай arp хүсэлтийг харах болно.
Боломжтой бол IP хаягийг гарц болгон зааж өгөхийг хичээгээрэй. Үл хамаарах зүйл бол холбогдсон чиглүүлэлтүүд (автоматаар үүсгэгдсэн) болон PPP (Async, PPTP, L2TP, SSTP, PPPoE, OpenVPN*) интерфэйсүүд юм.
OpenVPN нь PPP гарчиг агуулаагүй ч та OpenVPN интерфэйсийн нэрийг ашиглан маршрут үүсгэх боломжтой.
Илүү тодорхой маршрут
Чиглүүлэлтийн үндсэн дүрэм. Жижиг дэд сүлжээг (хамгийн том дэд сүлжээний масктай) тодорхойлсон маршрут нь пакетийн чиглүүлэлтийн шийдвэрт тэргүүлэх байр суурь эзэлнэ. Чиглүүлэлтийн хүснэгт дэх оруулгуудын байрлал нь сонголтод хамааралгүй - гол дүрэм бол илүү тодорхой юм.
Заасан схемийн бүх маршрутууд идэвхтэй байна (FIB-д байрладаг). өөр өөр дэд сүлжээнд зааж, хоорондоо зөрчилдөхгүй.
Хэрэв гарцуудын аль нэг нь боломжгүй бол холбогдох маршрутыг идэвхгүй (FIB-ээс хассан) гэж үзэж, үлдсэн маршрутуудаас пакетуудыг хайх болно.
0.0.0.0/0 дэд сүлжээтэй маршрутыг заримдаа онцгой утгаар нь "Өгөгдмөл маршрут" эсвэл "хамгийн сүүлчийн гарц" гэж нэрлэдэг. Үнэн хэрэгтээ үүнд ямар ч ид шидийн зүйл байхгүй бөгөөд энэ нь зүгээр л бүх боломжит IPv4 хаягуудыг агуулдаг боловч эдгээр нэр нь түүний даалгаврыг маш сайн дүрсэлдэг - энэ нь өөр, илүү нарийвчлалтай маршрут байхгүй пакетуудыг хааш нь дамжуулах гарцыг заадаг.
IPv4-ийн хамгийн дээд боломжит дэд сүлжээний маск нь /32 бөгөөд энэ чиглүүлэлт нь тодорхой хост руу чиглэдэг бөгөөд чиглүүлэлтийн хүснэгтэд ашиглагдаж болно.
Илүү тодорхой маршрутыг ойлгох нь аливаа TCP/IP төхөөрөмжийн үндсэн суурь юм.
зайны
Олон гарцаар дамжуулан хандах боломжтой нэг дэд сүлжээнд хүрэх замыг захиргааны шүүлтүүрт зай (эсвэл хэмжигдэхүүн) шаардлагатай. Бага хэмжигдэхүүнтэй маршрутыг тэргүүлэх чиглэл гэж үзэж, FIB-д оруулна. Хэрэв бага хэмжигдэхүүнтэй маршрут идэвхжихээ больсон бол түүнийг FIB-д илүү өндөр хэмжигдэхүүнтэй маршрутаар солино.
Хэрэв ижил хэмжигдэхүүнтэй нэг дэд сүлжээнд хэд хэдэн маршрут байгаа бол чиглүүлэгч нь дотоод логикийн дагуу тэдгээрийн зөвхөн нэгийг нь FIB хүснэгтэд нэмнэ.
Хэмжилт нь 0-ээс 255 хүртэлх утгыг авч болно:
- 0 - Холбогдсон маршрутын хэмжигдэхүүн. 0 зайг админ тохируулах боломжгүй
- 1-254 - Маршрутыг тохируулахад администраторт боломжтой хэмжүүрүүд. Бага утгатай хэмжүүрүүд нь илүү чухал ач холбогдолтой
- 255 - Маршрутыг тохируулахад администратор ашиглах боломжтой хэмжигдэхүүн. 1-254-ээс ялгаатай нь 255 хэмжигдэхүүнтэй маршрут үргэлж идэвхгүй хэвээр байх бөгөөд FIB-д ордоггүй.
- тодорхой хэмжүүрүүд. Динамик чиглүүлэлтийн протоколуудаас үүссэн маршрутууд нь стандарт хэмжигдэхүүнтэй байдаг
гарц шалгах
Check gateway нь icmp эсвэл arp-ээр дамжуулан гарц байгаа эсэхийг шалгах зориулалттай MikroTik RoutesOS өргөтгөл юм. 10 секунд тутамд (өөрчлөх боломжгүй) хүсэлтийг гарц руу илгээдэг, хэрэв хариу хоёр удаа ирээгүй бол маршрут боломжгүй гэж тооцогдож, FIB-ээс хасагдана. Хэрэв шалгах гарцыг идэвхгүй болгосон бол шалгах маршрут үргэлжлэх бөгөөд нэг амжилттай шалгасны дараа маршрут дахин идэвхжинэ.
Check gateway нь тохируулагдсан болон бусад бүх оруулгуудыг (бүх чиглүүлэлтийн хүснэгтүүд болон ecmp чиглүүлэлтүүд) заасан гарцтай идэвхгүй болгодог.
Ерөнхийдөө, гарц руу пакет алдагдах асуудал байхгүй л бол check gateway сайн ажилладаг. Шалгах гарц нь шалгагдсан гарцын гаднах харилцаанд юу болж байгааг мэдэхгүй, үүнд нэмэлт хэрэгсэл шаардлагатай: скрипт, рекурсив чиглүүлэлт, динамик чиглүүлэлтийн протоколууд.
Ихэнх VPN болон туннелийн протоколууд нь холболтын үйл ажиллагааг шалгах хэрэгслүүдийг агуулдаг бөгөөд тэдгээрийн шалгах гарцыг идэвхжүүлснээр сүлжээ болон төхөөрөмжийн гүйцэтгэлд нэмэлт (гэхдээ маш бага) ачаалал өгдөг.
ECMP маршрутууд
Equal-Cost Multi-Path - Round Robin алгоритмыг ашиглан хэд хэдэн гарцыг нэгэн зэрэг ашиглан хүлээн авагч руу пакет илгээх.
ECMP маршрутыг администратор нэг дэд сүлжээнд олон гарц зааж өгөх замаар үүсгэнэ (эсвэл автоматаар, хэрэв хоёр ижил OSPF чиглүүлэлт байгаа бол).
ECMP-ийг хоёр сувгийн хооронд ачааллыг тэнцвэржүүлэхэд ашигладаг, онолын хувьд хэрэв ecmp маршрутад хоёр суваг байгаа бол пакет бүрийн хувьд гарах суваг өөр байх ёстой. Гэхдээ Routing кэш механизм нь эхний пакет авсан маршрутын дагуу холболтоос пакетуудыг илгээдэг бөгөөд үүний үр дүнд бид холболтууд дээр суурилсан тэнцвэржүүлэлтийг олж авдаг (холболт бүрт ачааллыг тэнцвэржүүлэх).
Хэрэв та чиглүүлэлтийн кэшийг идэвхгүй болговол ECMP маршрутын багцуудыг зөв хуваалцах болно, гэхдээ NAT-д асуудал байна. NAT дүрэм нь холболтоос зөвхөн эхний пакетийг боловсруулдаг (бусад нь автоматаар боловсруулагддаг) бөгөөд ижил эх хаягтай пакетууд өөр өөр интерфэйсүүдийг орхидог.
Шалгах гарц нь ECMP маршрутуудад ажиллахгүй байна (RouterOS алдаа). Гэхдээ та ECMP дахь оруулгуудыг идэвхгүй болгох нэмэлт баталгаажуулалтын маршрутуудыг бий болгосноор энэ хязгаарлалтыг даван туулж чадна.
Routing ашиглан шүүж байна
Type сонголт нь багцыг юу хийхийг тодорхойлдог:
- unicast - заасан гарц руу илгээх (интерфейс)
- хар нүх - багцыг хая
- хориглох, хүрэх боломжгүй - пакетыг хаяж, илгээгч рүү icmp мессеж илгээнэ үү
Шүүлтүүрийг ихэвчлэн пакетуудыг буруу чиглэлд илгээх шаардлагатай үед ашигладаг, мэдээжийн хэрэг та үүнийг галт ханаар шүүж болно.
Хэдэн жишээ
Чиглүүлэлтийн талаархи үндсэн зүйлсийг нэгтгэх.
Ердийн гэрийн чиглүүлэгч
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1
- 0.0.0.0/0 хүртэлх статик маршрут (өгөгдмөл маршрут)
- Үйлчилгээ үзүүлэгчтэй интерфэйс дээр холбогдсон маршрут
- LAN интерфейс дээр холбогдсон маршрут
PPPoE бүхий ердийн гэрийн чиглүүлэгч
- Өгөгдмөл чиглүүлэлтийн статик маршрут автоматаар нэмэгдсэн. Энэ нь холболтын шинж чанарт тодорхойлогддог
- PPP холболтод холбогдсон маршрут
- LAN интерфейс дээр холбогдсон маршрут
Хоёр үйлчилгээ үзүүлэгчтэй, илүүдэлтэй ердийн гэрийн чиглүүлэгч
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 distance=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 distance=2
- Эхний үйлчилгээ үзүүлэгчээр дамжуулан өгөгдмөл чиглүүлэлтийн статик маршрут 1 хэмжигдэхүүн болон гарцын бэлэн байдлыг шалгах
- 2 хэмжигдэхүүнтэй хоёр дахь үйлчилгээ үзүүлэгчээр дамжуулан өгөгдмөл чиглүүлэлтийн статик зам
- Холбогдсон маршрутууд
0.0.0.0/0 хүртэлх урсгал нь энэ гарцыг ашиглах боломжтой үед 10.10.10.1-ээр дамждаг, үгүй бол 10.20.20.1 рүү шилжинэ.
Ийм схемийг сувгийн захиалга гэж үзэж болох боловч энэ нь сул тал биш юм. Хэрэв үйлчилгээ үзүүлэгчийн гарцаас гадуур (жишээлбэл, операторын сүлжээнд) завсарлага гарвал таны чиглүүлэгч энэ талаар мэдэхгүй бөгөөд чиглүүлэгчийг идэвхтэй гэж үзэх болно.
Хоёр үйлчилгээ үзүүлэгч, нөөц ба ECMP бүхий ердийн гэрийн чиглүүлэгч
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1,10.20.20.1 distance=1
- Чак гарцыг шалгах статик маршрутууд
- ECMP маршрут
- Холбогдсон маршрутууд
Шалгах замууд нь цэнхэр (идэвхгүй маршрутын өнгө) боловч энэ нь шалгах гарцад саад болохгүй. RoS-ийн одоогийн хувилбар (6.44) нь ECMP маршрутад автоматаар давуу эрх олгодог боловч бусад чиглүүлэлтийн хүснэгтүүдэд туршилтын маршрутыг нэмэх нь илүү дээр юм (сонголт). routing-mark
)
Speedtest болон бусад ижил төстэй сайтууд дээр хурд нэмэгдэхгүй (ECMP нь траффикийг пакетаар бус холболтоор хуваадаг), гэхдээ p2p програмууд илүү хурдан татагдах ёстой.
Чиглүүлэлтээр шүүж байна
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1
add dst-address=192.168.200.0/24 gateway=10.30.30.1 distance=1
add dst-address=192.168.200.0/24 gateway=10.10.10.1 distance=2 type=blackhole
- Өгөгдмөл чиглүүлэлтийн статик зам
- ipip хонгилоор 192.168.200.0/24 хүртэлх статик зам
- ISP чиглүүлэгчээр дамжуулан 192.168.200.0/24 хүртэлх статик замыг хориглож байна
ipip интерфэйс идэвхгүй болсон үед туннелийн урсгал үйлчилгээ үзүүлэгчийн чиглүүлэгч рүү очихгүй шүүлтүүрийн сонголт. Ийм схемийг ховор шаарддаг, учир нь та галт ханаар дамжуулан блоклох боломжтой.
Чиглүүлэлтийн гогцоо
Чиглүүлэлтийн давталт - ttl дуусахаас өмнө чиглүүлэгчдийн хооронд пакет ажиллах нөхцөл байдал. Ихэнхдээ энэ нь тохиргооны алдааны үр дүн бөгөөд том сүлжээнд үүнийг динамик чиглүүлэлтийн протоколыг хэрэгжүүлэх замаар, жижиг сүлжээнд болгоомжтой ханддаг.
Энэ дараахтай адил юм.
Үүнтэй төстэй үр дүнг хэрхэн авах жишээ (хамгийн энгийн):
Чиглүүлэлтийн давталтын жишээ нь практик хэрэглээгүй боловч чиглүүлэгчид хөршийнхөө чиглүүлэлтийн хүснэгтийн талаар ямар ч ойлголтгүй байгааг харуулж байна.
Бодлогын үндсэн чиглүүлэлт ба нэмэлт чиглүүлэлтийн хүснэгтүүд
Маршрутыг сонгохдоо чиглүүлэгч нь багцын толгой хэсгээс (Dst. Address) зөвхөн нэг талбарыг ашигладаг - энэ нь үндсэн чиглүүлэлт юм. Эх сурвалжийн хаяг, хөдөлгөөний төрөл (ToS), ECMPгүйгээр тэнцвэржүүлэх зэрэг бусад нөхцөл дээр суурилсан чиглүүлэлт нь бодлогын суурь чиглүүлэлт (PBR)-д хамаарах бөгөөд нэмэлт чиглүүлэлтийн хүснэгтүүдийг ашигладаг.
Илүү тодорхой маршрут нь чиглүүлэлтийн хүснэгт доторх маршрут сонгох гол дүрэм юм.
Анхдагч байдлаар, бүх чиглүүлэлтийн дүрмийг үндсэн хүснэгтэд нэмдэг. Администратор дурын тооны нэмэлт чиглүүлэлтийн хүснэгтүүдийг үүсгэж, тэдгээрт пакетуудыг чиглүүлэх боломжтой. Өөр өөр хүснэгтэд байгаа дүрмүүд хоорондоо зөрчилддөггүй. Хэрэв багц нь заасан хүснэгтэд тохирох дүрмийг олж чадаагүй бол үндсэн хүснэгт рүү очно.
Галт ханаар түгээх жишээ:
- 192.168.100.10 -> 8.8.8.8
- 192.168.100.10-аас ирсэн замын хөдөлгөөнийг тэмдэглэсэн via-isp1 в
[Prerouting|Mangle]
- Хүснэгтийн чиглүүлэлтийн үе шатанд via-isp1 8.8.8.8 хүртэлх замыг хайж байна
- Маршрут олдсон, урсгалыг гарц руу илгээсэн 10.10.10.1
- 192.168.100.10-аас ирсэн замын хөдөлгөөнийг тэмдэглэсэн via-isp1 в
- 192.168.200.20 -> 8.8.8.8
- 192.168.200.20-аас ирсэн замын хөдөлгөөнийг тэмдэглэсэн via-isp2 в
[Prerouting|Mangle]
- Хүснэгтийн чиглүүлэлтийн үе шатанд via-isp2 8.8.8.8 хүртэлх замыг хайж байна
- Маршрут олдсон, урсгалыг гарц руу илгээсэн 10.20.20.1
- 192.168.200.20-аас ирсэн замын хөдөлгөөнийг тэмдэглэсэн via-isp2 в
- Хэрэв гарцуудын аль нэг нь (10.10.10.1 эсвэл 10.20.20.1) боломжгүй бол пакет хүснэгт рүү очно. үндсэн мөн тэнд тохиромжтой маршрут хайх болно
Нэр томъёоны асуудал
RouterOS нь тодорхой нэр томъёоны асуудалтай байдаг.
Дүрэмтэй ажиллахдаа [IP]->[Routes]
чиглүүлэлтийн хүснэгтийг зааж өгсөн боловч шошго нь:
В [IP]->[Routes]->[Rule]
бүх зүйл зөв, хүснэгтийн үйлдэл дэх шошгоны нөхцөлд:
Тодорхой чиглүүлэлтийн хүснэгтэд багцыг хэрхэн илгээх вэ
RouterOS нь хэд хэдэн хэрэгслээр хангадаг:
- Дүрмүүд
[IP]->[Routes]->[Rules]
- Маршрутын тэмдэглэгээ (
action=mark-routing
) -д[IP]->[Firewall]->[Mangle]
- VRF
Дүрэм [IP]->[Route]->[Rules]
Дүрмүүдийг дараалан боловсруулдаг бөгөөд хэрэв багц нь дүрмийн нөхцөлтэй тохирч байвал цааш дамжихгүй.
Чиглүүлэлтийн дүрмүүд нь зөвхөн хүлээн авагчийн хаягаас гадна пакет хүлээн авсан эх хаяг, интерфейс дээр тулгуурлан чиглүүлэлтийн боломжийг өргөжүүлэх боломжийг олгодог.
Дүрэм нь нөхцөл, үйлдлээс бүрдэнэ:
- Нөхцөл байдал. Багцыг FIB-д шалгаж байгаа тэмдгүүдийн жагсаалтыг бараг давтаарай, зөвхөн ToS дутуу байна.
- Үйлдэл
- хайх - хүснэгт рүү пакет илгээх
- Зөвхөн хүснэгтээс хайх - багцыг хүснэгтэд түгжих, хэрэв маршрут олдохгүй бол багц үндсэн хүснэгт рүү орохгүй.
- буулгах - багц буулгах
- хүрэх боломжгүй - илгээгчийн мэдэгдэл бүхий багцыг хая
FIB-д орон нутгийн үйл явц руу чиглэсэн урсгалыг дүрмийг тойрон боловсруулдаг [IP]->[Route]->[Rules]
:
Тэмдэглэгээ [IP]->[Firewall]->[Mangle]
Чиглүүлэлтийн шошго нь бараг ямар ч Галт ханын нөхцөлийг ашиглан пакетийн гарцыг тохируулах боломжийг танд олгоно.
Практикт, учир нь тэдгээр нь бүгд утгагүй, зарим нь тогтворгүй ажиллаж магадгүй юм.
Багцыг шошголох хоёр арга бий:
- Шууд тавь чиглүүлэлтийн тэмдэг
- Эхлээд тавь холболтын тэмдэг, дараа нь үндэслэн холболтын тэмдэг тавих чиглүүлэлтийн тэмдэг
Галт хананы тухай нийтлэлд би хоёр дахь сонголтыг илүүд үздэг гэж бичсэн. маршрутыг тэмдэглэх тохиолдолд CPU дээрх ачааллыг бууруулдаг - энэ нь бүхэлдээ үнэн биш юм. Эдгээр тэмдэглэгээний аргууд нь үргэлж ижил байдаггүй бөгөөд ихэвчлэн янз бүрийн асуудлыг шийдвэрлэхэд ашиглагддаг.
Хэрэглэх жишээ
Бодлогын үндсэн чиглүүлэлт ашиглах жишээнүүд рүү шилжье, энэ бүхэн яагаад хэрэгтэй байгааг харуулахад илүү хялбар байдаг.
MultiWAN болон буцах гарч буй (Гаралтын) урсгал
MultiWAN тохиргооны нийтлэг асуудал: Mikrotik-ийг зөвхөн "идэвхтэй" үйлчилгээ үзүүлэгчээр дамжуулан интернетээс авах боломжтой.
Чиглүүлэгч нь ямар IP хаягаар хүсэлт ирсэн нь хамаагүй, хариулт үүсгэх үед isp1-ээр дамжих зам идэвхтэй байгаа чиглүүлэлтийн хүснэгтээс маршрут хайх болно. Цаашилбал, ийм пакет нь хүлээн авагч руу очих замд шүүгдэх болно.
Өөр нэг сонирхолтой зүйл. Хэрэв "энгийн" эх сурвалж nat ether1 интерфейс дээр тохируулагдсан бол: /ip fi nat add out-interface=ether1 action=masquerade
багц src-ээр онлайн болно. хаяг=10.10.10.100 байгаа нь байдлыг улам дордуулж байна.
Асуудлыг засах хэд хэдэн арга байдаг боловч тэдгээрийн аль нэгэнд нь нэмэлт чиглүүлэлтийн хүснэгт шаардагдана.
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 check-gateway=ping distance=1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 check-gateway=ping distance=2
add dst-address=0.0.0.0/0 gateway=10.10.10.1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 routing-mark=over-isp2
Ашиглах [IP]->[Route]->[Rules]
Заасан эх сурвалжийн IP-тэй пакетуудад ашиглагдах чиглүүлэлтийн хүснэгтийг зааж өгнө үү.
/ip route rule
add src-address=10.10.10.100/32 action=lookup-only-in-table table=over-isp1
add src-address=10.20.20.200/32 action=lookup-only-in-table table=over-isp2
Ашиглаж болно action=lookup
, гэхдээ орон нутгийн гадагш урсгалын хувьд энэ сонголт нь буруу интерфэйсээс холболтыг бүрэн хасдаг.
- Систем нь Src-тэй хариу багц үүсгэдэг. Хаяг: 10.20.20.200
- Routing Decision(2) алхам шалгана
[IP]->[Routes]->[Rules]
ба пакетийг чиглүүлэлтийн хүснэгт рүү илгээдэг хэт isp2 - Чиглүүлэлтийн хүснэгтийн дагуу пакетийг ether10.20.20.1 интерфейсээр дамжуулан 2 гарц руу илгээх ёстой.
Энэ арга нь Mangle хүснэгтийг ашиглахаас ялгаатай нь ажиллаж байгаа Холболтын Tracker шаарддаггүй.
Ашиглах [IP]->[Firewall]->[Mangle]
Холболт нь ирж буй пакетаас эхэлдэг тул бид үүнийг тэмдэглэв (action=mark-connection
), тэмдэглэгдсэн холболтоос гарч буй пакетуудын хувьд чиглүүлэлтийн шошгыг тохируулна уу (action=mark-routing
).
/ip firewall mangle
#Маркировка входящих соединений
add chain=input in-interface=ether1 connection-state=new action=mark-connection new-connection-mark=from-isp1
add chain=input in-interface=ether2 connection-state=new action=mark-connection new-connection-mark=from-isp2
#Маркировка исходящих пакетов на основе соединений
add chain=output connection-mark=from-isp1 action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=output connection-mark=from-isp2 action=mark-routing new-routing-mark=over-isp2 passthrough=no
Хэрэв нэг интерфэйс дээр хэд хэдэн ips тохируулагдсан бол та нөхцөлийг нэмж болно dst-address
итгэлтэй байх.
- Пакет нь ether2 интерфейс дээр холболтыг нээнэ. Багц руу ордог
[INPUT|Mangle]
Энэ нь холболтын бүх пакетуудыг гэж тэмдэглэхийг хэлдэг from-isp2 - Систем нь Src-тэй хариу багц үүсгэдэг. Хаяг: 10.20.20.200
- Routing Decision(2) үе шатанд чиглүүлэлтийн хүснэгтийн дагуу пакет ether10.20.20.1 интерфейсээр дамжин 1 гарц руу илгээгдэнэ. Та багцуудад нэвтэрснээр үүнийг баталгаажуулах боломжтой
[OUTPUT|Filter]
- Тайзан дээр
[OUTPUT|Mangle]
холболтын шошгыг шалгасан from-isp2 мөн пакет нь маршрутын шошгыг хүлээн авдаг хэт isp2 - Routing Adjusment(3) алхам нь чиглүүлэлтийн шошго байгаа эсэхийг шалгаж, зохих чиглүүлэлтийн хүснэгт рүү илгээдэг.
- Чиглүүлэлтийн хүснэгтийн дагуу пакетийг ether10.20.20.1 интерфейсээр дамжуулан 2 гарц руу илгээх ёстой.
MultiWAN болон буцах dst-nat урсгал
Жишээлбэл, хувийн дэд сүлжээнд чиглүүлэгчийн ард сервер (жишээ нь вэб) байгаа бол юу хийх вэ, та аль нэг үйлчилгээ үзүүлэгчээр дамжуулан хандах хэрэгтэй.
/ip firewall nat
add chain=dstnat proto=tcp dst-port=80,443 in-interface=ether1 action=dst-nat to-address=192.168.100.100
add chain=dstnat proto=tcp dst-port=80,443 in-interface=ether2 action=dst-nat to-address=192.168.100.100
Асуудлын мөн чанар нь ижил байх болно, шийдэл нь Firewall Mangle сонголттой төстэй бөгөөд зөвхөн бусад хэлхээг ашиглах болно.
/ip firewall mangle
add chain=prerouting connection-state=new in-interface=ether1 protocol=tcp dst-port=80,443 action=mark-connection new-connection-mark=web-input-isp1
add chain=prerouting connection-state=new in-interface=ether2 protocol=tcp dst-port=80,443 action=mark-connection new-connection-mark=web-input-isp2
add chain=prerouting connection-mark=web-input-isp1 in-interface=ether3 action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=prerouting connection-mark=web-input-isp2 in-interface=ether3 action=mark-routing new-routing-mark=over-isp2 passthrough=no
Диаграмм нь NAT-ийг харуулаагүй ч бүх зүйл тодорхой байна гэж би бодож байна.
MultiWAN болон гадагш чиглэсэн холболтууд
Та өөр өөр чиглүүлэгчийн интерфейсээс олон vpn (жишээнд SSTP) холболт үүсгэхийн тулд PBR боломжуудыг ашиглаж болно.
Нэмэлт чиглүүлэлтийн хүснэгтүүд:
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.100.1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=192.168.200.1 routing-mark=over-isp2
add dst-address=0.0.0.0/0 gateway=192.168.0.1 routing-mark=over-isp3
add dst-address=0.0.0.0/0 gateway=192.168.100.1 distance=1
add dst-address=0.0.0.0/0 gateway=192.168.200.1 distance=2
add dst-address=0.0.0.0/0 gateway=192.168.0.1 distance=3
Багцын тэмдэглэгээ:
/ip firewall mangle
add chain=output dst-address=10.10.10.100 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp1 passtrough=no
add chain=output dst-address=10.10.10.101 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp2 passtrough=no
add chain=output dst-address=10.10.10.102 proto=tcp dst-port=443 action=mark-routing new-routing-mark=over-isp3 passtrough=no
Энгийн NAT дүрмүүд, эс тэгвээс пакет буруу Src интерфэйсийг орхих болно. хаяг:
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade
add chain=srcnat out-interface=ether2 action=masquerade
add chain=srcnat out-interface=ether3 action=masquerade
Задлах:
- Чиглүүлэгч нь гурван SSTP процесс үүсгэдэг
- Чиглүүлэлтийн шийдвэр (2) шатанд эдгээр процессуудад чиглүүлэлтийн үндсэн хүснэгтэд үндэслэн маршрутыг сонгоно. Ижил маршрутаас пакет Src-г хүлээн авна. Хаяг ether1 интерфейстэй холбогдсон байна
- В
[Output|Mangle]
Өөр өөр холболтын багцууд өөр өөр шошго хүлээн авдаг - Багцууд нь чиглүүлэлтийн тохируулгын үе шатанд шошготой харгалзах хүснэгтэд орж, пакет илгээх шинэ замыг хүлээн авдаг.
- Гэхдээ багцуудад Src байсаар байна. Тайзан дээрх эфир1-ийн хаяг
[Nat|Srcnat]
хаягийг интерфэйсийн дагуу орлуулна
Сонирхолтой нь, чиглүүлэгч дээр та дараах холболтын хүснэгтийг харах болно.
Connection Tracker өмнө нь ажилладаг [Mangle]
и [Srcnat]
, тиймээс бүх холболтууд нэг хаягаас ирдэг, хэрэв та илүү дэлгэрэнгүй харвал дотор Replay Dst. Address
NAT дараа хаягууд байх болно:
VPN сервер дээр (би туршилтын вандан дээр байгаа) бүх холболтууд зөв хаягуудаас ирснийг харж болно.
Түр хүлээнэ үү
Илүү хялбар арга бий, та хаяг бүрт тодорхой гарцыг зааж өгч болно:
/ip route
add dst-address=10.10.10.100 gateway=192.168.100.1
add dst-address=10.10.10.101 gateway=192.168.200.1
add dst-address=10.10.10.102 gateway=192.168.0.1
Гэхдээ ийм чиглэлүүд нь зөвхөн гарах төдийгүй дамжин өнгөрөх урсгалд нөлөөлнө. Нэмж хэлэхэд, хэрэв танд тохиромжгүй холбооны сувгаар дамжихын тулд vpn сервер рүү траффик шаардлагагүй бол та өөр 6 дүрэм нэмэх шаардлагатай болно. [IP]->[Routes]
с type=blackhole
. Өмнөх хувилбарт - 3 дүрэм [IP]->[Route]->[Rules]
.
Харилцаа холбооны сувгаар хэрэглэгчийн холболтыг хуваарилах
Энгийн, өдөр тутмын ажил. Дахин хэлэхэд нэмэлт чиглүүлэлтийн хүснэгтүүд хэрэгтэй болно:
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=1 routing-mark=over-isp2
Ашиглаж байна [IP]->[Route]->[Rules]
/ip route rules
add src-address=192.168.100.0/25 action=lookup-only-in-table table=over-isp1
add src-address=192.168.100.128/25 action=lookup-only-in-table table=over-isp2
Хэрэв хэрэглэж байгаа бол action=lookup
, дараа нь сувгуудын аль нэг нь идэвхгүй болсон үед урсгал нь үндсэн хүснэгтэд очиж, ажлын сувгаар дамжих болно. Энэ нь шаардлагатай эсэхээс үл хамаарна.
Тэмдэглэгээг ашиглах [IP]->[Firewall]->[Mangle]
IP хаягуудын жагсаалт бүхий энгийн жишээ. Зарчмын хувьд бараг бүх нөхцлийг ашиглаж болно. Давхаргын 7-ын цорын ганц анхааруулга нь холболтын шошготой хослуулсан ч бүх зүйл зөв ажиллаж байгаа мэт санагдаж болох ч зарим урсгал буруу замаар явах болно.
/ip firewall mangle
add chain=prerouting src-address-list=users-over-isp1 dst-address-type=!local action=mark-routing new-routing-mark=over-isp1
add chain=prerouting src-address-list=users-over-isp2 dst-address-type=!local action=mark-routing new-routing-mark=over-isp2
Та хэрэглэгчдийг нэг чиглүүлэлтийн хүснэгтэд "түгжих" боломжтой [IP]->[Route]->[Rules]
:
/ip route rules
add routing-mark=over-isp1 action=lookup-only-in-table table=over-isp1
add routing-mark=over-isp2 action=lookup-only-in-table table=over-isp2
Аль эсвэл дамжин [IP]->[Firewall]->[Filter]
:
/ip firewall filter
add chain=forward routing-mark=over-isp1 out-interface=!ether1 action=reject
add chain=forward routing-mark=over-isp2 out-interface=!ether2 action=reject
Retreat pro dst-address-type=!local
Нэмэлт нөхцөл dst-address-type=!local
Хэрэглэгчдийн урсгал нь чиглүүлэгчийн дотоод процессуудад (dns, winbox, ssh, ...) хүрэх шаардлагатай. Хэрэв чиглүүлэгчид хэд хэдэн дотоод дэд сүлжээ холбогдсон бол тэдгээрийн хоорондох траффик Интернет рүү орохгүй байхыг баталгаажуулах шаардлагатай. dst-address-table
.
Хэрэглэх жишээнд [IP]->[Route]->[Rules]
ийм үл хамаарах зүйл байхгүй, гэхдээ замын хөдөлгөөн орон нутгийн процессуудад хүрдэг. Баримт нь FIB багцад орох нь тэмдэглэгдсэн байдаг [PREROUTING|Mangle]
чиглүүлэлтийн шошготой бөгөөд үндсэн интерфейсээс өөр чиглүүлэлтийн хүснэгтэд ордог бөгөөд тэнд локал интерфейс байхгүй. Чиглүүлэлтийн дүрмийн хувьд эхлээд пакет нь локал процесст зориулагдсан эсэхийг шалгадаг бөгөөд зөвхөн Хэрэглэгчийн PBR шатанд заасан чиглүүлэлтийн хүснэгтэд очдог.
Ашиглаж байна [IP]->[Firewall]->[Mangle action=route]
Энэ үйлдэл нь зөвхөн дотор ажилладаг [Prerouting|Mangle]
Мөн гарцын хаягийг шууд зааж өгснөөр нэмэлт чиглүүлэлтийн хүснэгт ашиглахгүйгээр замын хөдөлгөөнийг заасан гарц руу чиглүүлэх боломжийг танд олгоно.
/ip firewall mangle
add chain=prerouting src-address=192.168.100.0/25 action=route gateway=10.10.10.1
add chain=prerouting src-address=192.168.128.0/25 action=route gateway=10.20.20.1
үр нөлөө route
чиглүүлэлтийн дүрмээс доогуур ач холбогдолтой ([IP]->[Route]->[Rules]
). Маршрутын тэмдэглэгээний хувьд бүх зүйл дүрмийн байрлалаас хамаарна, хэрэв дүрмээр бол action=route
-аас илүү үнэ цэнэтэй action=mark-route
, дараа нь үүнийг ашиглах болно (тугнаас үл хамааран passtrough
), өөрөөр хэлбэл маршрутыг тэмдэглэнэ.
Энэ үйлдлийн талаар вики дээр маш бага мэдээлэл байгаа бөгөөд бүх дүгнэлтийг туршилтаар олж авсан, ямар ч тохиолдолд энэ сонголтыг ашиглах нь бусдаас давуу талтай байх үед би сонголтыг олсонгүй.
PPC дээр суурилсан динамик тэнцвэржүүлэх
Холболтын ангилагч нь ECMP-ийн илүү уян хатан аналог юм. ECMP-ээс ялгаатай нь энэ нь траффикийг холболтоор илүү нарийн хуваадаг (ECMP нь холболтын талаар юу ч мэддэггүй, гэхдээ Routing Cache-тэй хослуулсан тохиолдолд үүнтэй төстэй зүйлийг олж авдаг).
PCC авдаг заасан талбарууд ip толгойноос тэдгээрийг 32 битийн утга болгон хувиргаж, хуваана хуваагч. Хуваалтын үлдсэн хэсгийг заасантай харьцуулна үлдэгдэл хэрэв тэдгээр нь таарч байвал заасан үйлдлийг хэрэгжүүлнэ.
Гурван хаягтай жишээ:
192.168.100.10: 192+168+100+10 = 470 % 3 = 2
192.168.100.11: 192+168+100+11 = 471 % 3 = 0
192.168.100.12: 192+168+100+12 = 472 % 3 = 1
Гурван сувгийн хооронд урсгалыг src.address-ээр динамик хуваарилах жишээ:
#Таблица маршрутизации
/ip route
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=2 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.30.30.1 dist=3 check-gateway=ping
add dst-address=0.0.0.0/0 gateway=10.10.10.1 dist=1 routing-mark=over-isp1
add dst-address=0.0.0.0/0 gateway=10.20.20.1 dist=1 routing-mark=over-isp2
add dst-address=0.0.0.0/0 gateway=10.30.30.1 dist=1 routing-mark=over-isp3
#Маркировка соединений и маршрутов
/ip firewall mangle
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/0 action=mark-connection new-connection-mark=conn-over-isp1
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/1 action=mark-connection new-connection-mark=conn-over-isp2
add chain=prerouting in-interface=br-lan dst-address-type=!local connection-state=new per-connection-classifier=src-address:3/2 action=mark-connection new-connection-mark=conn-over-isp3
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp1 action=mark-routing new-routing-mark=over-isp1
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp2 action=mark-routing new-routing-mark=over-isp2
add chain=prerouting in-interface=br-lan connection-mark=conn-over-isp3 action=mark-routing new-routing-mark=over-isp3
Маршрутыг тэмдэглэхдээ нэмэлт нөхцөл бий: in-interface=br-lan
, үүнгүйгээр action=mark-routing
Интернэтээс хариу траффик авч, чиглүүлэлтийн хүснэгтийн дагуу үйлчилгээ үзүүлэгч рүү буцна.
Харилцааны сувгийг солих
Пинг шалгах нь сайн хэрэгсэл боловч зөвхөн хамгийн ойрын IP үе тэнгийнхэнтэй холболтыг шалгадаг, үйлчилгээ үзүүлэгчийн сүлжээ нь ихэвчлэн олон тооны чиглүүлэгчээс бүрддэг ба холболтын тасалдал нь хамгийн ойрын үе тэнгийнхээс гадна гарч ирдэг, дараа нь үндсэн харилцаа холбооны операторууд байдаг. асуудалтай тул ерөнхийдөө ping шалгах нь дэлхийн сүлжээнд нэвтрэх талаарх хамгийн сүүлийн үеийн мэдээллийг үргэлж харуулдаггүй.
Хэрэв үйлчилгээ үзүүлэгч болон томоохон корпорациуд BGP динамик чиглүүлэлтийн протоколтой бол гэрийн болон оффисын хэрэглэгчид тодорхой холбооны сувгаар интернетийн хандалтыг хэрхэн шалгахаа бие даан тодорхойлох ёстой.
Ихэвчлэн скриптийг тодорхой холбооны сувгаар дамжуулан интернетэд IP хаяг байгаа эсэхийг шалгахын зэрэгцээ найдвартай, жишээлбэл, google dns: 8.8.8.8 сонгохдоо ашигладаг. 8.8.4.4. Гэхдээ Микротик нийгэмлэгт үүнд илүү сонирхолтой хэрэгслийг тохируулсан.
Рекурсив чиглүүлэлтийн талаар хэдэн үг
Multihop BGP peering-ийг бүтээхэд рекурсив чиглүүлэлт зайлшгүй шаардлагатай бөгөөд нэмэлт скриптгүйгээр холбооны сувгийг солихын тулд шалгах гарцтай хосолсон рекурсив маршрутыг хэрхэн ашиглахыг олж мэдсэн зальтай MikroTik хэрэглэгчдийн ачаар статик чиглүүлэлтийн үндсүүдийн тухай нийтлэлд орсон.
Хамрах хүрээ / зорилтот хамрах хүрээний сонголтууд болон маршрут нь интерфэйстэй хэрхэн холбогдож байгааг ерөнхийд нь ойлгох цаг болжээ.
- Маршрут нь хамрах хүрээний утга болон зорилтот хамрах хүрээний утгаас бага буюу тэнцүү үндсэн хүснэгтийн бүх оруулгууд дээр үндэслэн пакетийг илгээх интерфэйсийг хайдаг.
- Олдсон интерфэйсүүдээс та заасан гарц руу пакет илгээх боломжтой интерфейсийг сонгосон
- Пакетийг гарц руу илгээхийн тулд олдсон холбогдсон оруулгын интерфейсийг сонгосон
Рекурсив маршрут байгаа тохиолдолд бүх зүйл адилхан тохиолддог, гэхдээ хоёр үе шаттайгаар:
- 1-3 Холбогдсон маршрутуудад дахин нэг маршрут нэмэгдсэн бөгөөд үүгээр дамжуулан заасан гарц руу хүрч болно
- 4-6 "Завсрын" гарцын холбогдсон маршрутыг олох
Рекурсив хайлттай бүх залруулга RIB-д тохиолддог бөгөөд зөвхөн эцсийн үр дүнг FIB руу шилжүүлдэг. 0.0.0.0/0 via 10.10.10.1 on ether1
.
Маршрутыг солиход рекурсив чиглүүлэлт ашиглах жишээ
Тохиргоо:
/ip route
add dst-address=0.0.0.0/0 gateway=8.8.8.8 check-gateway=ping distance=1 target-scope=10
add dst-address=8.8.8.8 gateway=10.10.10.1 scope=10
add dst-address=0.0.0.0/0 gateway=10.20.20.1 distance=2
Та пакетуудыг 10.10.10.1-д илгээх эсэхийг шалгаж болно:
Check gateway нь рекурсив чиглүүлэлтийн талаар юу ч мэдэхгүй бөгөөд ердөө л 8.8.8.8 руу пинг илгээдэг бөгөөд (үндсэн хүснэгтэд суурилсан) 10.10.10.1 гарцаар дамжуулан хандах боломжтой.
Хэрэв 10.10.10.1-ээс 8.8.8.8-ын хооронд холбоо тасарсан бол зам салгагдах боловч 8.8.8.8 хүртэлх пакетууд (туршилтын ping-г оруулаад) 10.10.10.1-ээр дамжсаар байна:
Хэрэв ether1-ийн холбоос алдагдсан бол 8.8.8.8-аас өмнөх пакетууд хоёр дахь үйлчилгээ үзүүлэгчээр дамжих үед таагүй нөхцөл байдал үүснэ.
Хэрэв та 8.8.8.8 байхгүй үед скрипт ажиллуулахын тулд NetWatch ашиглаж байгаа бол энэ нь асуудал юм. Хэрэв холбоос эвдэрсэн бол NetWatch зүгээр л нөөц холбооны сувгаар ажиллах бөгөөд бүх зүйл зүгээр гэж үзнэ. Нэмэлт шүүлтүүрийн маршрут нэмэх замаар шийдсэн:
/ip route
add dst-address=8.8.8.8 gateway=10.20.20.1 distance=100 type=blackhole
Хабре дээр байдаг
Тийм ээ, ийм захиалгыг ашиглах үед 8.8.8.8 хаяг нь үйлчилгээ үзүүлэгчдийн аль нэгэнд холбогдсон байх тул үүнийг dns эх сурвалж болгон сонгох нь тийм ч сайн санаа биш юм.
Виртуал чиглүүлэлт ба дамжуулалтын (VRF) талаар хэдэн үг
VRF технологи нь нэг физик дотор хэд хэдэн виртуал чиглүүлэгчийг үүсгэх зорилготой бөгөөд энэ технологийг харилцаа холбооны операторууд (ихэвчлэн MPLS-тэй хамт) дэд сүлжээний хаягууд нь давхардсан үйлчлүүлэгчдэд L3VPN үйлчилгээг үзүүлэхэд өргөн ашигладаг.
Гэхдээ Mikrotik дахь VRF нь чиглүүлэлтийн хүснэгтийн үндсэн дээр зохион байгуулагдсан бөгөөд хэд хэдэн сул талуудтай, жишээлбэл, чиглүүлэгчийн локал IP хаягийг бүх VRF-ээс авах боломжтой тул та дэлгэрэнгүй унших боломжтой.
vrf тохиргооны жишээ:
/ip route vrf
add interfaces=ether1 routing-mark=vrf1
add interfaces=ether2 routing-mark=vrf2
/ip address
add address=192.168.100.1/24 interface=ether1 network=192.168.100.0
add address=192.168.200.1/24 interface=ether2 network=192.168.200.0
Ether2-д холбогдсон төхөөрөмжөөс бид ping нь өөр vrf-ээс чиглүүлэгчийн хаяг руу очдогийг харж байна (мөн энэ нь асуудал юм), харин ping нь интернетэд ордоггүй:
Интернетэд нэвтрэхийн тулд та үндсэн хүснэгтэд хандах нэмэлт маршрутыг бүртгүүлэх шаардлагатай (vrf хэллэгээр үүнийг маршрутын алдагдал гэж нэрлэдэг):
/ip route
add distance=1 gateway=172.17.0.1@main routing-mark=vrf1
add distance=1 gateway=172.17.0.1%wlan1 routing-mark=vrf2
Маршрутыг задлах хоёр арга байна: чиглүүлэлтийн хүснэгтийг ашиглан: 172.17.0.1@main
болон интерфэйсийн нэрийг ашиглан: 172.17.0.1%wlan1
.
Мөн буцах замын хөдөлгөөний тэмдэглэгээг тохируулна уу [PREROUTING|Mangle]
:
/ip firewall mangle
add chain=prerouting in-interface=ether1 action=mark-connection new-connection-mark=from-vrf1 passthrough=no
add chain=prerouting connection-mark=from-vrf1 routing-mark=!vrf1 action=mark-routing new-routing-mark=vrf1 passthrough=no
add chain=prerouting in-interface=ether2 action=mark-connection new-connection-mark=from-vrf2 passthrough=no
add chain=prerouting connection-mark=from-vrf2 routing-mark=!vrf1 action=mark-routing new-routing-mark=vrf2 passthrough=no
Ижил хаягтай дэд сүлжээнүүд
VRF болон netmap ашиглан ижил чиглүүлэгч дээр ижил хаягтай дэд сүлжээнд нэвтрэх зохион байгуулалт:
Үндсэн тохиргоо:
/ip route vrf
add interfaces=ether1 routing-mark=vrf1
add interfaces=ether2 routing-mark=vrf2
/ip address
add address=192.168.100.1/24 interface=ether1 network=192.168.100.0
add address=192.168.100.1/24 interface=ether2 network=192.168.100.0
add address=192.168.0.1/24 interface=ether3 network=192.168.0.0
галт ханын дүрэм:
#Маркируем пакеты для отправки в правильную таблицу маршрутизации
/ip firewall mangle
add chain=prerouting dst-address=192.168.101.0/24 in-interface=ether3 action=mark-routing new-routing-mark=vrf1 passthrough=no
add chain=prerouting dst-address=192.168.102.0/24 in-interface=ether3 action=mark-routing new-routing-mark=vrf2 passthrough=no
#Средствами netmap заменяем адреса "эфимерных" подсетей на реальные подсети
/ip firewall nat
add chain=dstnat dst-address=192.168.101.0/24 in-interface=ether3 action=netmap to-addresses=192.168.100.0/24
add chain=dstnat dst-address=192.168.102.0/24 in-interface=ether3 action=netmap to-addresses=192.168.100.0/24
Буцах замын хөдөлгөөний чиглүүлэлтийн дүрэм:
#Указание имени интерфейса тоже может считаться route leaking, но по сути тут создается аналог connected маршрута
/ip route
add distance=1 dst-address=192.168.0.0/24 gateway=ether3 routing-mark=vrf1
add distance=1 dst-address=192.168.0.0/24 gateway=ether3 routing-mark=vrf2
Өгөгдсөн чиглүүлэлтийн хүснэгтэд dhcp-ээр хүлээн авсан маршрутуудыг нэмж байна
Хэрэв та тодорхой чиглүүлэлтийн хүснэгтэд динамик маршрутыг (жишээлбэл, dhcp клиентээс) автоматаар нэмэх шаардлагатай бол VRF нь сонирхолтой байж болно.
vrf-д интерфэйс нэмэх:
/ip route vrf
add interface=ether1 routing-mark=over-isp1
Хүснэгтээр дамжуулан урсгалыг (гадагш ба дамжин өнгөрөх) илгээх дүрэм хэт isp1:
/ip firewall mangle
add chain=output out-interface=!br-lan action=mark-routing new-routing-mark=over-isp1 passthrough=no
add chain=prerouting in-interface=br-lan dst-address-type=!local action=mark-routing new-routing-mark=over-isp1 passthrough=no
Гадагш чиглүүлэлтийн нэмэлт, хуурамч маршрут:
/interface bridge
add name=bare
/ip route
add dst-address=0.0.0.0/0 gateway=bare
Энэ чиглүүлэлт нь зөвхөн орон нутгийн гадагш илгээх пакетуудыг өмнө нь чиглүүлэлтийн шийдвэрээр (2) дамжуулж болохын тулд л хэрэгтэй [OUTPUT|Mangle]
болон чиглүүлэлтийн шошгыг аваарай, хэрэв чиглүүлэгч дээр үндсэн хүснэгтэд 0.0.0.0/0-ээс өмнө бусад идэвхтэй маршрутууд байгаа бол энэ нь шаардлагагүй.
Гинж connected-in
и dynamic-in
в [Routing] -> [Filters]
Маршрут шүүлтүүр (дотогшоо болон гарах) нь ихэвчлэн динамик чиглүүлэлтийн протоколуудтай хамт хэрэглэгддэг хэрэгсэл юм (тиймээс багцыг суулгасны дараа л ашиглах боломжтой) чиглүүлэлт), гэхдээ ирж буй шүүлтүүрт хоёр сонирхолтой хэлхээ байдаг:
- connect-in — холбогдсон маршрутуудыг шүүх
- dynamic-in - PPP болон DCHP-ээс хүлээн авсан динамик маршрутуудыг шүүх
Шүүлтүүр нь зөвхөн маршрутыг хаяхаас гадна хэд хэдэн сонголтыг өөрчлөх боломжийг олгодог: зай, чиглүүлэлтийн тэмдэг, тайлбар, хамрах хүрээ, зорилтот хамрах хүрээ, ...
Энэ бол маш нарийн хэрэгсэл бөгөөд хэрвээ та чиглүүлэлтийн шүүлтүүргүйгээр ямар нэгэн зүйл хийх боломжтой бол (гэхдээ скрипт биш) чиглүүлэлтийн шүүлтүүрийг бүү ашигла, өөрийгөө болон таны дараа чиглүүлэгчийг тохируулах хүмүүсийг бүү андуураарай. Динамик чиглүүлэлтийн нөхцөлд чиглүүлэлтийн шүүлтүүрийг илүү олон удаа, илүү бүтээмжтэй ашиглах болно.
Динамик маршрутын чиглүүлэлтийн тэмдгийг тохируулах
Гэрийн чиглүүлэгчийн жишээ. Надад хоёр VPN холболт тохируулагдсан бөгөөд тэдгээрийн урсгалыг чиглүүлэлтийн хүснэгтийн дагуу ороосон байх ёстой. Үүний зэрэгцээ интерфэйс идэвхжсэн үед маршрутуудыг автоматаар үүсгэхийг хүсч байна.
#При создании vpn подключений указываем создание default route и задаем дистанцию
/interface pptp-client
add connect-to=X.X.X.X add-default-route=yes default-route-distance=101 ...
add connect-to=Y.Y.Y.Y add-default-route=yes default-route-distance=100 ...
#Фильтрами отправляем маршруты в определенные таблицы маршрутизации на основе подсети назначения и дистанции
/routing filter
add chain=dynamic-in distance=100 prefix=0.0.0.0/0 action=passthrough set-routing-mark=over-vpn1
add chain=dynamic-in distance=101 prefix=0.0.0.0/0 action=passthrough set-routing-mark=over-vpn2
Яагаад гэдгийг би мэдэхгүй байна, магадгүй алдаа байж магадгүй, гэхдээ хэрэв та ppp интерфэйсэд зориулж vrf үүсгэвэл 0.0.0.0/0 хүртэлх маршрут үндсэн хүснэгтэд орох болно. Үгүй бол бүх зүйл илүү хялбар байх болно.
Холбогдсон маршрутуудыг идэвхгүй болгож байна
Заримдаа энэ шаардлагатай:
/route filter
add chain=connected-in prefix=192.168.100.0/24 action=reject
Дибаг хийх хэрэгслүүд
RouterOS нь чиглүүлэлтийн дибаг хийх хэд хэдэн хэрэгслээр хангадаг:
[Tool]->[Tourch]
- интерфэйс дээрх пакетуудыг үзэх боломжийг танд олгоно/ip route check
- пакетийг аль гарц руу илгээхийг харах боломжийг танд олгоно, чиглүүлэлтийн хүснэгттэй ажиллахгүй/ping routing-table=<name>
и/tool traceroute routing-table=<name>
- заасан чиглүүлэлтийн хүснэгтийг ашиглан ping болон мөшгихaction=log
в[IP]->[Firewall]
- багцын урсгалын дагуу пакетийн замыг хянах боломжийг олгодог маш сайн хэрэгсэл бөгөөд энэ үйлдэл нь бүх хэлхээ, хүснэгтэд байдаг.
Эх сурвалж: www.habr.com