Хоёр дээд холболт fe80::1-ийг хуваалцах үеийн IPv6 бодлогын маршрутлалт
Хоёр дээд холболт өөр өөр холбоос дээр ижил fe80::1 дараагийн үсрэлтийг харуулж болно. Бодлого бүрд нэг хүснэгт сонгож, амьдрах хугацааг өөрөө эзэмшиж, маршрутын асуулгаар шалгаарай.
Танд хоёр дээд холболт байгаа бөгөөд ip -6 route show хоёуланд нь ижил дараагийн үсрэлтийг хэвлэнэ: default via fe80::1 dev uplink0 ба default via fe80::1 dev uplink1. Энэ нь давхардсан хаягийн зөрчил биш бөгөөд зөвхөн дараагийн үсрэлт fe80::1 -г бодлогын хүснэгтэд хуулах нь цөмд аль холбоосыг хэлснийг тань хэлэхгүй. Жинхэнэ асуулт шинж тэмдгээс нарийхан: хоёр дахь хүснэгтэд нэг холбоос хэрэгтэй юу эсвэл хоёулаа, дахин ачаалсны дараа тэдгээр маршрутыг юу амьд байлгах вэ. Дараалан шалгах гурван нөхцөл ихэнхийг шийднэ.
Ижил fe80::1 бол хоёр өөр хөрш
Холбоосын локал хаягууд нэг холбоосоор хязгаарлагдана, тиймээс fe80::1 нь хоёр удаа хэвлэгдсэн нэг хаяг биш; ижил дагавар хуваалцдаг хоёр хөрш юм. Бүсийн индекс нь хост аль нэгийг хэлж буйгаа илэрхийлэх арга тул fe80::1%uplink0 ба fe80::1%uplink1 нь цөмд өөр өөр очих газар бөгөөд тэр дагавар хэзээ ч алсын маршрутлагч руу явахгүй. RFC 4007 үүний цаанаах бүсийн загварыг тайлбарладаг бөгөөд бодлогын хүснэгт холбоосын локал дараагийн үсрэлт бүрт төхөөрөмжийг хамт зөөх ёстойн шалтгаан энэ юм.
Нэг хостын тоон бүсийн ID-г загварт хуулдаг VPN тохиргооны үүсгэгч локал контекстийг хаягийн хэсэг мэт үздэг бөгөөд түүний бичсэн файл интерфэйсийн нэр эсвэл индекс нь өөр ямар ч машин дээр буруу байна. Бодлогын хүснэгт хоёр холбоосыг нэг болгож нэгтгэхгүй: маршрутлагдсан VPN сүлжээнүүдийн хооронд пакет дамжуулдаг ч алсын Ethernet хөршийн холбоосын локал таних тэмдгийг туннелээр дамжуулдаггүй тул холбоосын локал урсгал өөрийн холбоос дээрээ үлддэг.
Төхөөрөмжийг хасвал маршрут бичигдэхгүй болно. ip -6 route add default via fe80::1 table 200 нь гарцыг шийдэж чадахгүй бөгөөд iproute2 үүнийг Error: Nexthop has invalid gateway. алдаагаар татгалзана. dev uplink0 -г нэмбэл тушаал амжилттай болно, учир нь дараагийн үсрэлтийг тэр хоёр хөршийн аль нэгэнд бэхлэх нь төхөөрөмж юм. Төхөөрөмж хэлж чадахгүй зүйл бол uplink0 энэ хүснэгтэд тохирох холбоос мөн эсэх бөгөөд өөр хостоос хуулсан маршрут тэр хостын интерфэйсийн нэрсийг дагуулж ирдэг, жинхэнэ алдаа ихэвчлэн эндээс гардаг.
Нэгдүгээр нөхцөл: хүснэгтэд нэг холбоос уу, хоёр уу
Хоёр дахь дээд холболт юунд зориулагдсанаас эхэл. Хоёр холбоос ижил урсгал зөөж, нэг нь нөөц бол хүлээж буй хүснэгтэд хоёр гарцыг өөр өөр метрикээр хийх ёстой: ижил очих газрууд, нэг илүүд үзсэн зам, нэг тодорхой хоёр дахь сонголт. Хэрэв дээд холболтууд өөр өөр урсгал өөр өөр үйлчилгээ үзүүлэгчээр гарах ёстойгоор, эсвэл энэ нь зарим урсгал VPN-ийг тойрч, үлдсэн нь дотор нь үлддэг хуваагдсан туннель учраас байгаа бол тэр хоёр холбоос нэг хүснэгтэд огт хамаарахгүй. Тэдгээр нь хоёр хүснэгтэд хамаарах бөгөөд тэдгээрийг дүрэм сонгох ба дүрэм туннелийг биш, хүснэгтийг сонгоно: тойрч гарах урсгал маршрутлахаас өмнө тэмдэглэгдэж, тэр тэмдэг нь түүнийг хоёр дахь хүснэгт рүү илгээдэг.
Тэр хоёр дахь тохиолдолд дүрэм хүснэгтийг хэзээ харахыг, маршрут пакетын хаашаа явахыг шийднэ:
ip -6 rule add fwmark 0x2 table 201
ip -6 route add default via fe80::1 dev uplink1 metric 100 table 201
ip -6 route add 2001:db8:100::/48 dev uplink1 metric 100 table 201
ip -6 route show table 201Нэг объект нөгөөг орлохгүй бөгөөд зөвхөн анхдагч агуулсан хүснэгт ч гарцаа шийдэж чадахгүй байж болно. Нэмэлт татгалзагдсан, эсвэл маршрут байгаа ч ашиглах боломжгүй бол тэр интерфэйсийн холбогдсон префиксийг мөн хүснэгтэд хийх, эсвэл үсрэлтийг onlink гэж тэмдэглэ (тэр префикс өөр газар маршрутлагдах үед). Дээрх блокт 2001:db8:100::/48 нь дурын очих газар биш, uplink1 дээрх тэр холбогдсон префиксийг илэрхийлнэ. fwmark дүрэм нь өөр нэгэн зүйлийн тавих ёстой тэмдгийг л хэрэглэдэг: дамжуулалтын зам дээрх nftables эсвэл iptables дүрэм, эсвэл SO_MARK сокет дээрх тэмдэг, тиймээс тэмдгийн эх сурвалжгүй хуулсан блок юутай ч таарахгүй.
Хоёрдугаар нөхцөл: метрикүүд үхсэн үйлчилгээ үзүүлэгчийг илрүүлэхгүй
Метрик бол оршин буй маршрутуудын хоорондын давуу эрх, эрүүл мэндийн шалгалт биш. Оператор унахад цөм тэр төхөөрөмж дээрх маршрутуудыг хасч, хоёр дахь анхдагч эзэлнэ. Кабель асаалттай хэвээр, ард нь байгаа үйлчилгээ үзүүлэгч үхвэл хүснэгтэд юу ч өөрчлөгдөхгүй: илүүд үзсэн маршрут суусан, хөрш нь 2-р түвшинд хүрэх боломжтой, пакетууд хар нүх рүү гарч байна. Энэ ялгаа таны тохиргоонд чухал бол алдааны шилжилт замыг шалгаж, маршрутыг хасдаг ямар нэг зүйлээс ирэх ёстой: маршрутлалтын демон уу, эсвэл бичлэгийг устгаж дахин суулгадаг жижиг скрипт үү.
Хүснэгт бүтсэний дараа сонголтыг шалга, цөмийн харах аргаар нь шалга. ip -6 route get 2001:db8:100::1 нь ашиглагдах маршрутыг хэвлэх бөгөөд төхөөрөмж болон сонгосон эх хаягийг агуулна, мөн бодлогын дүрмийг хүндэтгэнэ. Буруу дээд холболтад хамаарах эх хаяг нь ихэвчлэн дүрэм таны бодсоноос эрт таарсны шинж юм.
Гуравдугаар нөхцөл: тогтвортой байдлын эзнийг шийд
Маршрутыг ip -6 route add -ээр нэмэхэд дахин ачаалах хүртэл, эсвэл ямар нэг зүйл түүнийг цэвэрлэх хүртэл амьдарна. Маршрутлагчийн зарлалаас сурсан анхдагч нь амьдрах хугацаатай бөгөөд маршрутлагч түүнийг буцааж авч болох бол, гараар нэмсэн анхдагч хэзээ ч өөрөө дуусахгүй. Хоёулыг нэг хүснэгтэд холих нь хуучирсан байнгын маршрут шинээр зарлагдсаныг давж гарах арга бөгөөд түүний дүрсэлсэн дээд холболт эртнээс байхгүй болсон ч.
Хүснэгт бүрд нэг эзнийг сонго. Сүлжээний менежер эсвэл маршрутлалтын демон интерфэйсийг аль хэдийн удирдаж байгаа бол бодлогын маршрутыг тэнд тайлбарлаж, цөмд бүү хүр. Хэрэв скриптээр хийж байгаа бол скриптийг идемпотент болгож, буулгах хэсгийг мөн адил цагт бич, учир нь анхны муу өөрчлөлтөд л хэрэг болно:
ip -6 route flush table 201
ip -6 rule del fwmark 0x2 table 201Бусад хостод дамжуулдаг маршрутлагч дээр хүснэгтийг буруутгахаас өмнө net.ipv6.conf.all.forwarding -г шалга. Дамжуулалт унтарсан бол өөр сүлжээ рүү хаягласан пакетууд 201-р хүснэгт хичнээн зөв байсан ч хаягдана.
Дараагийн хүн аудит хийж чадахаар загварыг бичиж үлдээ
Зөвхөн fe80::1 -г хадгалдаг бүртгэл чухал талбаруудыг хаядаг. Очих газар, дараагийн үсрэлт, төхөөрөмж, хүснэгт, метрикийг хамт бичээд, маршрут бүр хаанаас ирснийг нь нэм: зарлагдсан уу, менежер үүсгэсэн үү, статик уу. Дараа нь хэн нэгэн хоёр дахь дээд холболт үнэхээр урсгал зөөж байна уу гэж асуухад тэр бүртгэл таамаглалгүй хариулна.
Хүснэгтийг дууссан гэж хэлэхийн өмнө хөршийг ip -6 neigh show dev uplink0 -ээр баталгаажуулж, ip -6 rule show гэсэн тушаалыг дахин унш — дарааллын осол байгаа эсэхийг, мөн анхдагч маршрут авдаг ping биш, дүрэмд тохирох урсгалаар шалга. Дараа нь нэг дээд холболтыг санаатайгаар унагаж, цөм аль маршрут руу буцаж байгааг ажигла; хариулт таны бичсэнтэй таарах ёстой.