Nakalista ang interface sa namespace na gusto mo, nakakabit ang application dito, at wala pa ring lumalabas na trapiko ng tunnel. Ito ang lagda ng isang WireGuard device sa Linux kernel na ginawa sa isang namespace at inilipat sa iba: lumipat ang interface at hindi lumipat ang naka-encrypt na UDP socket nito. Kailangang nasa tamang lugar ang dalawa bago maging mahalaga ang panloob na trapiko. Mabilis ang pagsusuri kapag alam mong dapat tingnan ang dalawang konteksto sa halip na isa.

Ang sintomas: tamang namespace, walang packet

Sa loob ng namespace, mukhang malusog ang tunnel. Umiiral ang device, nakatalaga ang mga address, at naroon ang configuration ng peer. Sa labas, hindi kailanman lumalabas ang inaasahang palitan ng UDP sa interface na sinusubaybayan mo, at iniuulat ng kabilang panig na walang handshake.

Ang dahilan ay ang panloob na packet ng application ay umaabot sa inilipat na device, at sinusubukan ng device na ipadala ang mga ito sa pamamagitan ng socket na kabilang sa ibang konteksto ng network. Ang underlay na ruta na ginagamit nito, at bawat patakaran ng firewall na naaangkop dito, ay ang mga nasa namespace kung saan ginawa ang device.

Hindi ito depekto sa paglipat at hindi rin maling configuration ng peer. Ganito ang ginagawa ng implementasyon ng kernel, at direktang inilalarawan ng dokumentasyon ng namespace para sa WireGuard ang tuntunin sa paggawa.

Bakit may lugar ng kapanganakan ang socket

Ang isang WireGuard device ay may isang UDP socket para sa naka-encrypt na transport nito, at binubuksan ang socket na iyon sa namespace kung saan ginagawa ang device. Ang paglipat ng interface gamit ang link command ay naglilipat ng nakikitang device ngunit iniiwan ang transport kung saan ito nagsimula. Pagkatapos, magkaiba ang may-ari ng dalawang bagay.

Madaling mapalampas ang kahihinatnan dahil magkaibang lugar sinusuri ang dalawang hati. Ang panloob na ruta ay pinagpapasyahan sa namespace kung saan tumatakbo ang application, at ang panlabas na ruta ay pinagpapasyahan kung saan naninirahan ang socket. Ang pagsusuri ng isa lamang ay nagbibigay ng kumpiyansa ngunit maling konklusyon. Ang pagsusuri ng dalawa ay karaniwang nagtatapos sa imbestigasyon sa isang pasada.

Gawin ito kung saan mo gustong ilagay ang socket

Ang solusyon ay gawin ang device sa loob ng target na namespace sa halip na gawin ito sa labas at ilipat. Ipagpalagay na mayroon nang aprubadong namespace at hindi ginagamit ang pangalan:

ip netns exec vpn-apps ip link add wg-demo type wireguard
ip netns exec vpn-apps wg show

Ngayon, ang interface at ang socket nito ay kabilang sa kontekstong iyon, kaya ang underlay na ruta at ang naaangkop na tuntunin sa pag-filter ay ang mga naka-configure doon. Kung kailangan ng disenyo ang malinaw na panig sa ibang lugar, ilagay muna ang batayang interface sa namespace at pagkatapos gawin ang tunnel. Bahagi ng disenyo ang pagkakasunod-sunod, hindi detalye ng implementasyon.

Ituring ang mga ito bilang mga utos sa pangangasiwa ng network, hindi recipe. Gumagawa sila ng device at nagpapakita ng estado; kailangan pa ring magmula sa aprubadong configuration ang mga key, peer, address at ruta, at hindi dapat palitan ng halimbawa ang umiiral na production interface.

Basahin ang dalawang panig ng landas

Kapag nasa tamang lugar na ang device, i-verify nang hiwalay ang dalawang desisyon. Magsimula sa panloob na paghahanap mula sa konteksto ng application, pagkatapos suriin ang panlabas na landas mula sa kontekstong may-ari ng socket:

ip netns exec vpn-apps ip route get 10.30.0.9
ip netns exec vpn-apps wg show
tcpdump -ni any udp port 51820

Kung ang panloob na paghahanap ay nalutas sa pamamagitan ng tunnel at ipinapakita ng panlabas na capture ang naka-encrypt na palitan, nagtutugma ang dalawang hati. Kung walang laman ang capture, nasa ibang lugar pa rin ang socket, o hindi naaabot ng underlay na ruta sa namespace nito ang endpoint.

May isa pang pagsusuring dapat nasa talaan: paano ginagawa ang device pagkatapos ng restart. Binabago ng tagapamahalang muling gumagawa ng interface gamit ang ibang konteksto ng paggawa ang lugar ng kapanganakan ng socket. Ang manu-manong paglipat na nagtagumpay nang isang beses ay hindi patunay tungkol sa pinamamahalaang landas.

Kaugnay na mga artikulo