Mae eich cynhwysydd yn dal i ateb ar ei bont rheoli, ond mae pob pecyn allan yn gadael drwy'r macvlan swyddfa. Nid oes dim wedi methu. Mae dau atodiad yn cyflenwi porth yr un, ac aeth yr un llwybr diofyn at y rhwydwaith nad oeddech yn ei fwriadu, felly mae'r gwasanaeth yn dal i weithio tra bo ei draffig yn cymryd llwybr hirach. Erbyn i rywun sylwi, y dystiolaeth yw tabl llwybro yn hytrach na neges gwall.

Yr esboniad arferol yw bod Docker wedi dewis y rhwydwaith ar ddamwain. Yn ymarferol roedd y penderfyniad hen yn dilyn trefn wyddor enwau'r rhwydweithiau atodedig, a oedd yn troi llwybro yn sgîl-effaith label. Mae gw_priority yn disodli hynny â rhif rydych yn ei ddewis yn fwriadol, ac mae mabwysiadu yn cymryd tua munud ar ôl i'r cynllun gael ei ysgrifennu.

Pam mae'r llwybr diofyn yn glanio ar y rhwydwaith anghywir

Gall pob rhwydwaith y mae gwasanaeth yn ymuno ag ef gynnig ei borth ei hun, ac mae'r cynhwysydd yn dal i orffen gydag un llwybr diofyn yn union. Cyn Compose 2.33.1 roedd y cyfartal yn cael ei dorri drwy ddidoli enwau'r rhwydweithiau, felly label fel control sy'n dod o flaen office oedd yn penderfynu i ble'r oedd y traffig yn mynd. Nid oes dim y tu mewn i'r cynhwysydd yn cofnodi bod y penderfyniad yn fympwyol, a dyna pam mae'n goroesi adolygiad cod ac yn dod i'r amlwg yn ddiweddarach fel llwybr od. Rhoi polisi yn y ffeil compose yw'r unig ffordd i wneud y dewis yn archwiladwy.

Mae dau beth yn newid pa rwydwaith sy'n ennill mewn gwirionedd: y gwerthoedd gw_priority rydych yn eu neilltuo, a pha rwydweithiau sydd wedi'u hatodi o gwbl. Ychwanegwch drydedd rwydwaith ac mae'r set ymgeiswyr yn tyfu; tynnwch y macvlan ac nid oes dim ar ôl i gystadlu â'r bont. Nid yw'r un o'r symudiadau yn ymddangos yn nogfeydd y rhaglen, oherwydd anaml y mae llwybr diofyn anghywir yn torri cysylltiad yn llwyr. Dim ond gwneud i atebion gyrraedd o gyfeiriad na fydd y ochr arall yn ei ddisgwyl o bosibl.

Pinwch y porth â gw_priority

Mae Compose yn datgelu gw_priority ar bob atodiad gwasanaeth-i-rwydwaith o fersiwn 2.33.1 ymlaen, a'r rhif uchaf sy'n ennill. Nid oes allwedd porth fesul gwasanaeth, felly mae'r gwerth yn perthyn o dan floc networks y gwasanaeth. Mae'r enghraifft isod yn rhoi'r llwybr diofyn i control tra'n gadael office yn gyrraeddadwy ar gyfer ei LAN gysylltiedig yn uniongyrchol.

services:
  vpn:
    networks:
      control:
        gw_priority: 1
      office:
        gw_priority: 0

networks:
  control:
    driver: bridge
    ipam:
      config:
        - subnet: 172.30.50.0/24
  office:
    driver: macvlan
    driver_opts:
      parent: eno1.120
      macvlan_mode: bridge
    ipam:
      config:
        - subnet: 192.168.120.0/24
          ip_range: 192.168.120.192/27
          gateway: 192.168.120.1

Darllenwch y bloc fel dau reolaeth ar wahân: mae gw_priority yn penderfynu'r llwybr diofyn, ac mae'r adran ipam yn penderfynu cyfeirio. Newid y subnet yn unig sy'n gadael y dewis allanfa heb ei gyffwrdd, a dyna'r ffordd fwyaf cyffredin y mae'r gwelliant hwn yn cael ei roi ar waith yn rhannol. Cadwch y blaenoriaethau wrth ochr y rhwydwaith maent yn ei reoli fel nad oes rhaid i'r darllenydd nesaf hela am y penderfyniad.

Peidiwch â chymysgu gw_priority â'r eiddo priority plaen wrth ei ymyl. Mae hwnnw'n trefnu creu cysylltiadau ac yn dweud dim am lwybro, felly ni all ddewis porth diofyn ac nid yw'n trwsio enwi rhyngwynebau. Os oes rhywun yn argymell codi priority i lywio traffig, mae'r argymhelliad yn anghywir hyd yn oed pan fydd y drefn sy'n deillio ohono yn digwydd edrych yn gywir.

Gwiriwch pa rwydwaith sy'n cario'r llwybr diofyn mewn gwirionedd

Gwiriwch y tu mewn i'r cynhwysydd sy'n rhedeg, oherwydd mae tabl llwybro'r gwesteiwr yn disgrifio'r gwesteiwr ac nid y gofod enwau y mae'r gwasanaeth yn ei ddefnyddio. Rhedwch y gwiriad cyfluniad yn gyntaf fel bod gwall teipio yn methu cyn ailgychwyn, yna darllenwch y llwybr y gosododd y cynhwysydd mewn gwirionedd.

docker compose config --quiet
docker exec vpn ip -4 route show default
docker exec vpn cat /proc/net/route

Mae canlyniad cywir yn enwi'r ddyfais bont a 172.30.50.1; mae un anghywir yn enwi 192.168.120.1 a'r ddyfais macvlan. Os nad yw'r ddelwedd yn cynnwys pecyn iproute2, mae'r ffeil /proc yn dal i roi gwybod am y llwybr diofyn, gyda chyrchfan 00000000 a beitiau'r porth wedi'u gwrthdroi. Cymharwch y golofn rhyngwyneb â docker inspect pan fo enwau dyfeisiau yn aneglur.

Mae macvlan yn borth corfforol, nid yn glôn o bont

Mae macvlan yn rhoi ail hunaniaeth i'r cynhwysydd ar y weiren, a dyna'n union sy'n gwneud mynediad i ddyfeisiau lleol yn gweithio. Mae hefyd yn golygu bod yn rhaid i borth y switsh a'r hypervisor dderbyn cyfeiriad MAC ychwanegol, ac mae llawer o rwydweithiau cwmwl yn gwrthod hynny'n dawel. Profwch un cynhwysydd cyn cynllunio fflyd, oherwydd fel arfer mae MAC a wrthodwyd yn ymddangos fel cyswllt sydd i fyny ac yn pasio dim.

Mae'r gosodiad macvlan_mode: bridge yn fodd o yrwyr macvlan, nid pont meddalwedd Docker, ac mae passthru yn fodd arbenigol ar wahân yn hytrach na rhagosodiad. Mae Linux hefyd yn cadw cynhwysydd macvlan rhag cyrraedd ei westeiwr ei hun drwy'r un rhiant, a dyna'r rheswm dros gadw'r bont reoli yn hytrach na disgwyl i un atodiad wneud y ddwy swydd.

Enwch riant y VLAN cyn i Compose ei weld

Mae Docker yn trin rhiant â dot fel eno1.120 fel is-rhyngwyneb 802.1Q ac yn creu dyfais VLAN ei hun. Mae gan y cyfleustra hwnnw derfynau: mae'r enw sy'n deillio yn dibynnu ar enw'r rhyngwyneb corfforol, a gall enwau hir wthio'r canlyniad y tu hwnt i'r hyn y mae'r offeryn cyd-destunol yn ei ddisgwyl. Mae creu rhyngwyneb VLAN enwog yng nghyfluniad rhwydwaith y gwesteiwr a phwyntio parent ato yn cadw'r ddau ben yn rhagweladwy.

Cofiwch fod yr allwedd o dan networks yn enw Compose, nid yn ddyfais Linux. Bydd chwilio'r gwesteiwr am ryngwyneb o'r enw office yn methu, oherwydd dim ond y rhyngwyneb rhiant a'r pâr veth y tu ôl i'r cynhwysydd y mae'r cnewyllyn yn eu gweld.

Gwnewch le i'r VPN ar ben

Mae cleient VPN yn atodi ar ôl i'r rhwydweithiau hyn fodoli, felly gall ychwanegu llwybrau mwy penodol, rheolau polisi a hidlwyr waeth beth fo gw_priority. Cynlluniwch y rhagddodiadau o bell yn erbyn y ddau subnet lleol, gan gynnwys yr atebion sydd eu hangen ar y llwybr rheoli. Pan fydd rhagddodiad o bell yn gorgyffwrdd â LAN y swyddfa, trwsiwch y cynllun cyfeiriadau yn hytrach na rhwygo ystod breifat gyfan o'r tiwnel.

Ail-wiriwch gyfeiriadau, llwybrau a llwybr y gwasanaeth ar ôl i'r VPN gychwyn ac unwaith eto ar ôl iddo ailgysylltu, oherwydd mewn ailgysylltiad y mae llwybr a ychwanegwyd â llaw yn diflannu. Ysgrifennwch y tabl disgwyliedig cyn y prawf cyntaf fel bod y gymhariaeth wedyn yn diff ac nid yn ymarfer cof. Cadwch berchnogaeth barhaus y rhwydwaith yn Compose a gadewch i gyfluniad y VPN feddu ar ei bolisi ei hun yn unig.

Erthyglau cysylltiedig