Mae cleient yn deialu'r gweinydd OpenVPN ar VM Compute Engine, mae'r ffenestr statws yn dweud cysylltiedig, ac mae ping i westeiwr yn y VPC yn dal i fynd i unman. Y reddf yw ychwanegu llinell push arall, ac nid yw hynny byth yn ei drwsio. Mae Compute Engine yn penderfynu i ble mae pecynnau'n mynd o'i dabl llwybrau ei hun ac o'r cyfeiriadau y mae rhyngwyneb VM yn eu dal mewn gwirionedd, felly mae pwll twnnel nad yw'r VM yn berchen arno yn bwll na fydd neb yn danfon iddo.

Dilynwch y pecyn sy'n methu yn lle'r ffeil ffurfweddu, a bydd y darnau coll yn ymddangos yn eu trefn.

Dechrau gyda'r pecyn sy'n marw

Mae'r SYN yn gadael y cleient, yn glanio yn y twnnel ac yn cyrraedd y VM fel pecyn wedi'i amgáu ar gyfer cyrchfan yn y VPC. Mae OpenVPN yn ei ddad-amgáu ac yn ceisio ei anfon allan drwy eth0, lle mae'r ffabrig yn gofyn un cwestiwn cyn unrhyw beth arall: a yw'r enghraifft hon yn berchen ar y cyfeiriad cyrchfan. Mae pwll twnnel a dorrwyd o is-rwydwaith rhywun arall yn methu'r cwestiwn hwnnw, ac mae'r pecyn yn cael ei daflu cyn i unrhyw lwybr neu reol wal dân gael ei hystyried.

Felly mae gan y cyfeiriad o'r cleient i'r VPC ddau ofyniad ar wahân, ac nid yw'r un ohonynt yn gyfarwyddeb push. Mae ar y VM angen ystod alias sy'n gorchuddio'r pwll twnnel, a dyna sy'n ei gwneud yn berchennog cyfreithlon ar y cyfeiriadau hynny. Mae ar y VPC angen llwybr sy'n enwi'r VM fel next hop ar gyfer pob rhagddodiad a ddiogelir. Os collir un, mae'r pecyn yn marw yn rhywle arall, tra bod y cleient yn gweld yr un distawrwydd.

Darllenwch y methiant yn y drefn honno, oherwydd o ochr y cleient mae'r ddau amod yn edrych yn union yr un fath. Mae twnnel sy'n dweud cysylltiedig tra nad oes dim yn ateb yn arwydd o broblem topoleg, nid o seidr gwael.

A yw'r enghraifft yn berchen ar y pwll twnnel

Rhowch ystod eilaidd i'r VM y tu mewn i'w is-rwydwaith ei hun, yna gwnewch i OpenVPN ddosbarthu cyfeiriadau'n union o'r ystod honno. Ar enghraifft y mae ei phrif gyfeiriad yn 10.156.0.10/20, mae alias /28 yn cadw'r pwll ar wahân i'r cyfeiriadau y mae enghreifftiau eraill yn eu dal yn barod:

gcloud compute instances network-interfaces update openvpn-vm \
  --zone=europe-west1-b \
  --aliases=eth0:10.156.1.0/28

Yna rhaid i'r gyfarwyddeb server ddisgrifio'r un bloc. Ei chyfeiriad cyntaf sy'n dod yn gateway y twnnel, a dosberthir y cyfeiriadau sy'n weddill i gleientiaid. Dau rif sy'n disgrifio un bloc yma, rhwydwaith a netmask, a dyna'r gystrawen pwll y mae OpenVPN yn dal i'w disgwyl.

server 10.156.1.0 255.255.255.240

Cadarnhewch fod y cyfeiriad wedi glanio ar y rhyngwyneb mewn gwirionedd ac nid yn unig yng nghyfluniad OpenVPN. Mae'r ffabrig yn anfon yr hyn y mae'r NIC yn ei adrodd, nid yr hyn y mae'r daemon yn credu. Mae un gorchymyn yn penderfynu:

ip -4 addr show dev eth0

Mae cyfeiriad eilaidd nad yw byth yn cyrraedd eth0, neu bwll sy'n gorgyffwrdd ag is-rwydwaith arall, yn ymddangos yn ddiweddarach fel colledion ysbeidiol yn hytrach nag fel gwall cychwyn. Mae'r daemon yn cychwyn, mae cleientiaid yn cysylltu, a dim ond rhai cyrchfannau sy'n camymddwyn. Cadwch yr ystod alias yn fach fel bod y pwll yn hawdd ei adnabod mewn tabl llwybrau. Peidiwch byth â'i dorri allan o is-rwydwaith y mae enghraifft arall yn ei defnyddio'n barod.

Rhoi next hop i draffig dychwelyd

Mae ateb gan westeiwr yn y VPC wedi'i gyfeirio at gyfeiriad cleient ym mhwll y twnnel, nad yw'n perthyn i unrhyw is-rwydwaith y mae'r VPC yn ei adnabod. Heb lwybr ar gyfer y pwll hwnnw, mae'r ateb yn stopio ar yr hop cyntaf heb gydweddiad, ac mae'n bosibl iawn bod y cais wedi llwyddo yn y pen arall.

gcloud compute routes create openvpn-return \
  --network=prod-vpc \
  --destination-range=192.168.127.0/24 \
  --next-hop-instance=openvpn-vm \
  --next-hop-instance-zone=europe-west1-b \
  --priority=800

Mae'r un llwybr ei angen ar gyfer unrhyw ragddodiad sy'n byw y tu ôl i gleient yn hytrach nag y tu mewn i'r VPC. Mae angen cofnod iroute hefyd ar y rhagddodiadau hynny yn ffeil ccd y cleient hwnnw. Mae'r cofnod hwnnw'n gyfrifyddu ar ochr y gweinydd: mae'n dweud wrth y gweinydd pa gleient sy'n berchen ar y rhagddodiad, ac nid yw'n gosod dim ar y cleient ei hun.

Cadwch y rhestr push ar gyfer ochr cleient y sgwrs, oherwydd dim ond llwybrau y mae'n eu hychwanegu at y peiriant sy'n cysylltu. Mae llinell push ar gyfer is-rwydwaith VPC a llwybr VPC yn ôl i'r pwll yn ddau hanner o'r un llwybr, ac mae naill hanner ar ei ben ei hun yn cynhyrchu twnnel sy'n cludo ceisiadau ond nid atebion.

Waliau tân, anfon ymlaen a'r hops rhyngddynt

Mae wal dân y VPC yn gwerthuso'r pecyn dad-amgáu, felly rhaid i reol ingress dderbyn y pwll twnnel ac unrhyw ragddodiad safle sy'n cyrraedd y VM y ffordd honno. Mae agwedd default-deny yn methu'n dawel yma: mae'r pecyn yn cael ei daflu ar ôl dad-amgáu, ac mae log OpenVPN yn dangos sesiwn iach.

Ar unrhyw westeiwr Linux sy'n anfon ymlaen yn hytrach na therfynu, gwiriwch fod net.ipv4.ip_forward wedi'i alluogi. Mae'r rheol berchnogaeth yn berthnasol yno hefyd: mae blwch sy'n anfon ymlaen ar gyfer is-rwydwaith nad yw'n ei dal yn taflu'r pecyn yn union fel y byddai'r VM yn ei wneud. Darllenwch y gwerth cyn beio'r twnnel.

Pan fydd union un rhagddodiad yn methu

Methiant rhannol yw'r achos hawsaf i'w ddarllen, oherwydd mae popeth arall ar y llwybr eisoes wedi'i brofi. Dechreuwch gyda'r rhestr llwybrau a darllenwch yr ystod cyrchfan a'r next hop y cofnod a ddylai orchuddio'r rhagddodiad, yna darllenwch ddisgrifiad yr enghraifft a chymharu ei hystod alias â'r pwll y mae'r gweinydd yn ei ddosbarthu.

gcloud compute routes list --filter=destination-range~10.164.0.0
 gcloud compute instances describe openvpn-vm --format=get(networkInterfaces[0].aliasIpRanges)

Mae llwybr coll yn dangos ei hun fel dim next hop ar gyfer y rhagddodiad, tra bod alias coll yn dangos ei hun fel pecyn wedi'i daflu yn y rhyngwyneb; o'r cleient mae'r ddau yn edrych yn debyg ac yn y ddau allbwn hynny maent yn hollol wahanol. Os yw'r ddau yn bresennol, yr unig amheuwr sy'n weddill yw iroute ccd y cleient sy'n hawlio'r rhagddodiad.

Ysgrifennwch y pedwar gwerth wrth ymyl y twnnel: ystod alias, pwll y gweinydd, rhagddodiadau wedi'u gwthio, llwybrau VPC. Mae alias hen yn torri pob cyfeiriad pwll, mae llwybr hen yn torri un cyfeiriad, mae push coll yn cuddio'r rhagddodiad rhag y cleient, ac mae iroute anghywir yn anfon y rhagddodiad at y peer anghywir. Mae'r person nesaf sy'n ychwanegu is-rwydwaith angen y pedwar mewn un lle, ac mae'r nodyn yn rhatach na'r noson.

Erthyglau cysylltiedig