Рутирање на една Linux сметка преку OpenVPN со правило за UID
Правилото uidrange ги става IPv4 сокетите на една сметка во постоечки тунел без namespace. Решете за DNS, IPv6 и резерва одделно, потоа проверете.
Рутирањето по сметка одговара кога секој IPv4 сокет што го поседува еден Linux корисник треба да излезе низ постоечки тунел, а не одговара кога ви треба изолација на ниво на програма. Избира по UID, па се што работи под таа сметка е во опфатот, вклучително и групната задача што сте ја заборавиле. Решете го ова прашање пред да допрете и едно ip rule.
Примерот подолу претпоставува посебна сметка за прелистувач на UID 1500, тунелски уред tun-office со локална адреса 10.80.0.11 и VPN што ги дозволува наведените одредишта. Самиот демон работи надвор од тој UID.
Три услови што го избираат механизмот
Изберете правило за UID кога идентитетот што ја врши работата е сметката, кога преместувањето на целиот нејзин сообраќај е прифатливо и кога namespace би бил потежок отколку што заслужува задачата. Изберете мрежен namespace кога работното оптоварување бара свои интерфејси, резолвер и табела за рутирање. Изберете прокси или врзување по процес кога точно една апликација треба да се премести додека остатокот од сесијата останува на локалната патека. Запишувањето на овие три спречува правило што тивко покрива повеќе од предвиденото.
Грешката што треба да се избегне е да се претпостави дека стартерот го одредува сопственикот. Прелистувач на кој друг кориснички сесија му додели URL не создал сокети под UID 1500 и ниту едно правило нема да го премести сообраќајот што тој го создава.
Табелата, правилото и чуварот
Откако ќе ги проверите постоечките правила и ќе изберете неискористени броеви за табела и приоритет, распоредот е краток: стандардна рута во посебна табела што ја носи изворната адреса на тунелот, правило што ги испраќа барањата на сметката во таа табела и завршно правило што ја блокира резервата. Запишано, тоа е идемпотентна замена на рута, ip -4 route replace default dev tun-office src 10.80.0.11 table 51820, по што следи ip -4 rule add priority 12100 uidrange 1500-1500 lookup 51820.
Чуварот е ip -4 rule add priority 12101 uidrange 1500-1500 unreachable и е поважен отколку што сугерира неговата должина. Без него, рута што недостасува во табелата 51820 паѓа на вообичаената горна врска и сметката тивко излегува сообраќај што политиката требаше да го фати. Со него, истиот дефект станува истек на време, односно блокирање, а не резерва.
Држете го вообичаеното правило за локална адреса пред овие и свесно решете дали исклучоците за LAN или управување доаѓаат пред избраната табела. Стандардната рута најдена таму подоцна не го прашува main за поконкретна LAN рута, што ги изненадува оние што очекуваат совпаѓањето на најдолгиот префикс да важи меѓу табелите. Запишете го предвидениот список исклучоци во белешката за промена додека образложението е уште свежо.
Што остава надвор рутирањето по UID: DNS
Демонот на резолверот ги отвора своите горни сокети под сопствениот UID, па изборот на 1500 не ги преместува тие барања во табелата 51820. Интеграцијата на DNS е одделна одлука: насочете ја сметката кон резолвер достапен преку тунелот или прифатете дека разрешувањето на имиња го следи патот на домаќинот, а сообраќајот не.
Барање преку loopback до локален stub не е доказ дека горното барање ја користело рутата на прелистувачот, ниту пак успешното вчитување на страница од кешот.
IPv6 бара своја реченица во дизајнот
Правилата погоре покриваат само IPv4. Ако барањето е IPv4 тунел без директен IPv6 од оваа сметка, додајте прегледано завршно правило како ip -6 rule add priority 12101 uidrange 1500-1500 unreachable, потоа проверете ги постарите IPv6 правила и loopback исклучоците што сакате да ги задржите.
Блокирањето директен IPv6 не е тунелирање со двоен стек; тоа е граница. Да се нарече тунелирање ќе го збуни следниот човек што ќе ја прочита политиката, а збунетоста ќе излезе како тикет до поддршката за расипан IPv6 сајт.
Проверете со вистинската сметка, потоа преземете го животниот циклус
Споредете барања: ip -4 route get 198.51.100.25 uid 1500 кон истото одредиште со обичен UID. Потоа направете дозволено барање под посебната сметка и проверете ја изворната адреса што ја гледа далечниот крај. Преферираната изворна адреса не е source NAT и нема да надвладее апликација што врзува нешто друго. Ако двете барања вратат ист пат, правилото не го прави тоа што мислите.
Држете ја табелата, правилата и рокот на тунелската рута под еден сопственик, тестирајте повторно поврзување и губење на тунелот, а при повлекување на политиката отстранете ги само нејзините точни записи. Namespace се уште е достапен ако одделни интерфејси и одделна состојба се она што навистина ви треба.