Gall delweddau cynhwysydd gario pob deuaidd a ffeil ffurfweddu OpenVPN y maent eu hangen a pharhau i fethu ar yr alwad rwydwaith gyntaf. Mae’r gwall yn enwi /dev/net/tun oherwydd bod y rhaglen wedi gofyn i’r cnewyllyn am ryngwyneb TUN ac nad oedd gan y cynhwysydd na’r nod dyfais na’r gallu i greu un. Mae’r rhain yn ddau ganiatâd ar wahân, ac mae trwsio un yn gadael y llall yn union lle’r oedd.

Mae eu gwahanu yn costio un gorchymyn i bob un. Mae’r neges wall wedyn yn dweud wrthych ar ba ffin yr oeddech yn sefyll mewn gwirionedd.

Mae’r nod dyfais a’r gallu yn ddau ddrws

Mae’r nod dyfais yn wrthrych system ffeiliau, felly mae angen i gynhwysydd ei weld yn ei ofod enw mowntio ei hun. Mae’r gallu yn ganiatâd, felly mae angen CAP_NET_ADMIN ar y broses yn y gofod enw lle bydd y rhyngwyneb yn cael ei greu. Mae pasio’r ddyfais trwodd heb y gallu yn rhoi nod i chi sy’n agor ac ioctl sy’n methu. Mae rhoi’r gallu heb y ddyfais yn gadael y rhaglen yn methu ag agor unrhyw beth o gwbl, a dyna pam mae’r ddau fel arfer yn ymddangos gyda’i gilydd mewn enghreifftiau.

Mae gosodiad devices Docker yn mapio dyfais y gwesteiwr i’r cynhwysydd, tra bod cap_add yn addasu’r set gallu. Mae bind mount o’r un llwybr yn rhoi’r ffeil yn y golwg heb gymhwyso semanteg mynediad i’r ddyfais.

Ailgynhyrchwch hyn y tu allan i’r ffeil Compose

Cyn golygu’r gwasanaeth, gwiriwch fod gan y gwesteiwr y ddyfais ac y gall cynhwysydd noeth greu rhyngwyneb. Mae’r gorchymyn isod yn fwriadol fach, a’i unig ddiben yw gwahanu problem gwesteiwr oddi wrth broblem compose. Os bydd yn methu, ni fydd unrhyw newid compose yn helpu.

ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun:/dev/net/tun alpine sh -c 'apk add -q iproute2 && ip tuntap add dev tun9 mode tun && ip link show tun9'

Mae nod ar goll ar y gwesteiwr yn golygu nad yw’r modiwl tun ar gael, sy’n atgyweiriad ar ochr y gwesteiwr yn hytrach nag ar ochr y cynhwysydd. Mae nod sy’n bodoli ond na ellir ei agor y tu mewn i’r cynhwysydd yn cyfeirio at fynediad i’r ddyfais, a bydd y neges yn dweud permission denied yn hytrach na no such file. Trefn y ddau fethiant hyn yw’r diagnosis cyfan. Nodwch pa un a welsoch cyn newid unrhyw fflag.

Mae’r gwallau ar ôl TUN yn broblemau gwahanol

Unwaith y bydd y rhyngwyneb yn ymddangos, mae gan y methiant nesaf berchennog gwahanol. Mae gwallau dilysu yn golygu bod y twnnel wedi cyrraedd y gweinydd ac y gwrthodwyd y manylion mewngofnodi, felly ni fydd newidiadau gallu yn helpu. Mae twnnel sy’n sefydlu tra bod rhaglenni yn dal i fethu yn cyfeirio at lwybrau, anfon ymlaen, datrysiad DNS y tu mewn i’r cynhwysydd, neu gynllun rhwydwaith y cynhwysydd ei hun. Mae pob un o’r rheini yn gwestiwn rhwydweithio cyffredin na all caniatâd TUN ei ateb. Mae ailadrodd y prawf gwreiddiol ar ôl pob newid yn cadw’r methiannau rhag asio yn un argraff.

Copïo pob gosodiad o enghraifft sy’n gweithio yw’r ffordd y mae atgyweiriad bach yn troi’n ddiffiniad gwasanaeth annarllenadwy. Dewch â’r rhai y mae angen yr anfoniad hwn arnynt a chofnodwch pam mae pob un yno.

Gwiriwch y rhyngwyneb y tu mewn i’r cynhwysydd

Gwiriwch y rhyngwyneb a’r set gallu o du mewn i’r cynhwysydd sy’n rhedeg yn hytrach nag o’r gwesteiwr. Mae’r gorchmynion isod yn dangos y nod dyfais, y rhestr gallu, ac a ellir creu rhyngwyneb o gwbl. Rhedwch nhw yn yr un cynhwysydd sy’n rhedeg y cleient, a gosodwch yr offerynnau os yw’r ddelwedd yn fach.

ls -l /dev/net/tun
capsh --print | grep -i net_admin
ip link add dev tun9 type tun && ip link show tun9

Mae gallu sy’n bresennol yn y bounding set ond yn absennol o’r effective set yn ymddwyn yn wahanol i un na roddwyd erioed, ac mae capsh yn dangos y ddau. Os yw’r nod yn bodoli a’r gallu yno tra bod creu yn dal i fethu, mae’r runtime yn gorfodi rhywbeth arall, fel proffil seccomp neu bolisi AppArmor sy’n cyfyngu’r llawdriniaeth. Mae honno yn drydedd ffin, a ddogfenir gan y runtime yn hytrach na’r rhaglen.

Cofnodwch fflagiau’r cynhwysydd, y ddelwedd a’r union wall o bob ymgais. Gall y person nesaf sy’n darllen y nodyn hwnnw ddweud pa ddrws oedd ar gau heb ailadrodd yr holl ymchwiliad.

Erthyglau cysylltiedig