Излезниот јазол на ZeroTier не работи? Проверете рута, NAT и клиент
Рута 0.0.0.0/0 во клиентот не е излез. Јазолот мора да препраќа и преведува, мрежата мора да ја објави рутата, а клиентот мора да ја прифати.
Табелата со рути покажува стандардна рута низ интерфејсот ZeroTier, мрежата се пријавува како онлајн, а прелистувачот и понатаму излегува од локалната ISP адреса. Таа комбинација е честа и не е грешка во клиентот. Стандардната рута само кажува каде треба да одат пакетите; нешто мора да ги препрати и преведе на другата страна. Три одделни делови мора да бидат точни пред излезниот јазол да работи.
Рутата постои, но ништо не излегува
Најпрво проверете ја табелата со рути на клиентот. Линија како default via 10.147.20.5 dev zt0 докажува дека рутата е инсталирана, а не дека одредиштето ќе го прифати сообраќајот. Следниот скок мора да биде член кој е подготвен и способен да ја препрати.
Ако истото барање и понатаму излегува низ физичкиот интерфејс, клиентот не ја инсталирал рутата или ја инсталирал со метрика што загубила од локалната стандардна. Ако барањето исчезне откако рутата е инсталирана, излезниот член прима пакети и не успева да ги препрати или преведе. Клиент што ја задржува физичката стандардна рута воопшто не испраќа пакет до излезот.
Таа разлика одредува каде да се работи. Споредувањето на јавна адреса пред и по промената одвојува рута што никогаш не била користена од рута што била користена и отфрлена, и бара една команда наместо преглед на целата конфигурација. Направете го споредувањето пред да смените нешто друго, за да дојдат двата резултати од иста почетна состојба.
Три делови што сите мора да бидат точни
Излезот е синџир, а најслабата алка го одредува симптомот. Табелата подолу ги наведува алките по редот по кој обично откажуваат.
| Part | Where it lives | What a failure looks like |
|---|---|---|
| Forwarding and NAT | Exit node kernel and firewall | Traffic arrives, no reply |
| Managed default route | ZeroTier network controller | No default via the tunnel on the member |
| Client acceptance | Member's per-network setting | Route offered but not installed |
| DNS behavior | Client resolver configuration | Pages fail by name, IP works |
Првиот ред е она што го крие името на опцијата. Член станува излез само кога неговото јадро препраќа пакети меѓу интерфејсот ZeroTier и интерфејсот свртен кон интернет, и кога патеката на одговорот се преведува назад во тунелот. Без тоа препраќање, членот е партнер, не порта.
Редот на контролорот е овластување, не конфигурација. Објавувањето на 0.0.0.0/0 преку член му кажува на секој клиент каде е излезот; тоа не го прави членот способен да го носи сообраќајот. Исто така не проверува дали членот има работна патека до интернет. Документацијата на ZeroTier за излезен јазол ја покрива истата поделба меѓу јазол, рута и клиент.
Поставете го излезниот јазол да препраќа и преведува
Овозможете препраќање на IPv4 трајно, потоа додадете изворен NAT за сообраќајот што го напушта интерфејсот WAN. Филтерските правила мора да го дозволуваат препратениот тек во двете насоки, бидејќи препраќањето и преведувањето се одделни од дозволата:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o zt0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTЗаменете ги zt0 и eth0 со имињата на домаќинот; правило зачувано за примерен интерфејс не ги следи пакетите на вистински. Направете ги промените трајни преку менаџерот на огнениот ѕид што ги поседува правилата, бидејќи командата во интерактивна обвивка исчезнува при следното рестартирање.
Ако домаќинот извршува менаџер на огнен ѕид како UFW или firewalld, додадете ги правилата преку тој менаџер наместо да редите iptables линии покрај него. Два сопственици што ги уредуваат истите синџири создаваат политика што зависи од редот на подигнување. Редот е важен кога менаџерот генерира свои синџири. Тестирајте од клиент откако ќе го вчитате менаџерот повторно, не пред тоа.
Објавете ја рутата и прифатете ја на клиентот
На контролорот на мрежата додадете управувана рута за 0.0.0.0/0 чиј следен скок е ZeroTier адресата на излезниот член. Потоа, на членот што треба да ја користи, дозволете го препишувањето за таа мрежа. Дозволата е локална: не ги преконфигурира другите членови и не го менува контролорот.
zerotier-cli listnetworks
zerotier-cli set <network-id> allowDefault=1
ip route get 1.1.1.1Последната команда треба да ги пријави интерфејсот ZeroTier и адресата на излезниот член. Ако и понатаму го пријавува физичкиот интерфејс, рутата недостасува или конкурентна стандардна рута има подобра метрика.
Држете го поставувањето ограничено на мрежата што го бара. Овозможување прифаќање на стандардната рута глобално, или на мрежа што треба да обезбеди само приватна подмрежа, го испраќа сообраќајот низ излез што никогаш не бил димензиониран за тоа.
Проверете го излезот и разгледајте ги другите семејства на адреси
Побарајте јавна адреса од услуга што го пријавува изворот и споредете ја со WAN адресата на излезниот јазол. Потоа вчитајте именуван сајт за да потврдите дека DNS и понатаму решава, и тестирајте една важна апликација, а не само прелистувач.
Клиент со двоен стек може да продолжи да ја користи својата изворна IPv6 патека додека IPv4 излегува преку ZeroTier. Ако целта е да се скрие или контролира целиот сообраќај, потребни се одделна ::/0 рута и препраќање на IPv6 на излезот, а тестот на IPv4 не кажува ништо за нив.
Обратното филтрирање на патека во Linux може да го отфрли и валидниот излезен сообраќај на клиентот. ZeroTier документира разгледување на rp_filter за членовите што учествуваат; менувајте го тоа поставување свесно и само откако рутата и NAT се потврдени, не како прв експеримент.
Ако барањето е пристап до NAS или една канцелариска подмрежа, управуваната рута за тој префикс е помала и побезбедна промена од целосен излез. Препраќањето на целото прелистување преку друг уред е друга одлука од достигнувањето на еден приватен ресурс и заслужува одделен преглед.