ZeroTier кон локална мрежа: UFW правила за рута, а не дозвола за порта
Дозволувањето порта на гејтвејот не е исто како препраќање до домаќин зад него. Поставете ја управуваната рута, овозможете пренос и изберете пат за враќање.
Да се стигне до печатач во канцелариската локална мрежа преку член на ZeroTier звучи како едно правило, но всушност се три одлуки на три различни места. Надградената мрежа мора да знае каде е локалната мрежа, домаќинот Linux мора да биде подготвен да препраќа пакети, а локалната мрежа мора да знае како да го врати одговорот. Влезното правило што отвора порта на гејтвејот не допира ниту едно од нив. Тоа е погрешна алатка на вистинскиот домаќин.
Три работи, три сопственици
Управуваната рута и припаѓа на конфигурацијата на мрежата ZeroTier. Таа им кажува на членовите дека префиксот е достапен преку одредена адреса на член.
Препраќањето и припаѓа на јадрото Linux и на оној што ја поседува неговата политика на огнен ѕид. Тоа одлучува дали пакетот што пристигнува на надградената мрежа повторно ќе излезе на физичкиот интерфејс. Домаќин што не препраќа тивко ќе го отфрли пакетот откако ќе го прифати. Испраќачот гледа истекување на времето, а во дневникот на службата не се појавува ништо.
Патот за враќање и припаѓа на локалната мрежа. Нејзините домаќини и нејзиниот рутер мора да знаат дека префиксот на надградената мрежа е достапен преку локалната адреса на вашиот гејтвеј, или нешто мора да го преведе сообраќајот за да не се постави воопшто тоа прашање.
Секое од нив може да биде точно додека другите не успеваат, и затоа тест што само пингува гејтвејот не докажува ништо за службата зад него.
Насочете ја управуваната рута кон членот
Додајте рута за саканиот префикс на локалната мрежа преку адресата на надградената мрежа на гејтвејот, а не преку неговата локална адреса. Адресата на надградената мрежа е онаа до која другите членови можат да стигнат; локалната адреса има смисла само на кабелот.
Членовите мора да ги прифатат управуваните рути за да функционира решението, а нивните сопствени локални мрежи не смеат веќе да го користат префиксот што го објавувате. И далечински преносен сметач што дома е на 192.168.60.0/24 не може исто така да насочува 192.168.60.0/24 преку надградената мрежа.
Држете го објавениот префикс тесен колку што дозволува задачата. Објавувањето поголем агрегат за да влијаете на претпочитањето може исто така да побара адресен простор што не е ваш, а добиениот конфликт се појавува на уредите што се поврзани на двете мрежи. Тоа може и да го натера членот да претпочита пат што не води никаде. Држете ја рутата чесна и оставете ја политиката да го направи остатокот.
Запишете го префиксот и адресата на членот во истата белешка како правилата на огнениот ѕид, бидејќи најчестата грешка е рута што покажува на погрешен член.
Овозможете пренос во јадрото
Прочитајте ја тековната вредност на препраќањето пред да промените нешто, потоа направете го поставувањето трајно преку механизмот што вашиот систем веќе го користи, а не преку еднократна наредба што исчезнува при рестартирање.
Ако политиката и припаѓа на UFW, неговите правила за рута изразуваат препраќање за пар од извор, одредиште и интерфејс. Тие се одделни од влезните правила што отвораат служба на самиот гејтвеј:
sysctl net.ipv4.ip_forward
sudo ufw route allow in on zt3f2a1c9d out on eth0 proto tcp to 192.168.60.20 port 443
sudo ufw status verbose
Името на интерфејсот е вистинскиот уред на надградената мрежа на тој домаќин, што можете да го прочитате со ip link; тоа не е фиксен текст во сите инсталации. Ако домаќинот препраќа по стандард, а UFW не е на патот, правилото за рута ќе биде игнорирано и важни се поставките на јадрото.
Изберете како се враќаат одговорите
Со зачувување на изворот, службата во локалната мрежа ја гледа вистинската адреса на надградената мрежа и одговара на неа. Тоа бара рута на домаќинот во локалната мрежа или на неговиот рутер што го насочува префиксот на надградената мрежа кон вашиот гејтвеј, а тоа е промена надвор од кутијата Linux.
Кога таа рута не може да се додаде, ограничениот превод на изворот го прави барањето да изгледа како да доаѓа од гејтвејот во локалната мрежа. Тогаш одговорите се враќаат локално и не е потребна промена на рутирањето во локалната мрежа, по цена на губење на оригиналниот извор во дневниците на службата.
Ограничете го преводот на изворот на надградената мрежа и на конкретното одредиште во локалната мрежа. Преведувањето на сѐ што излегува од интерфејсот на локалната мрежа е широката верзија што подоцна го изненадува секој што ги чита правилата, а исто така го сокрива сообраќајот што требало да биде блокиран.
Ниту една од двете опции не дава непобарано пристап од локалната мрежа назад кон произволни членови на надградената мрежа. Ако тоа се сака, тоа е одделно правило со сопствен преглед.
Тестирајте од вистински член
Поврзете се од друг член, а не од гејтвејот, и побарајте една дозволена служба. Потоа пробајте служба што треба да остане затворена, и повторете ги двата теста по повторно поврзување и по рестартирање на гејтвејот.
Член што известува ONLINE, или успешен пинг до адресата на надградената мрежа на гејтвејот, не ја потврдува рутата, правилото за препраќање ниту патот за враќање:
zerotier-cli listnetworks
ip -4 route get 192.168.60.20
sudo ufw status numbered
Втората наредба покажува кој интерфејс пакетот би го користел за домаќинот во локалната мрежа, а третата дали правилото за рута постои во формата што ја имавте на ум. Ако двете изгледаат точно, а службата сѐ уште истекува, патот за враќање е преостанатиот сомнителен.