Рутирање по налогу одговара када сваки 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 је и даље доступан ако су одвојени интерфејси и одвојено стање оно што вам је заиста потребно.

Повезани чланци