Mae'r cais yn cyrraedd wedi'i gyfeirio at IP y twnnel ac yn gadael yr un cynhwysydd wedi'i gyfeirio at wasanaeth cyfagos. Rhwng y ddau funud hynny, ailysgrifennodd DNAT y cyrchfan, a pheidiodd y pecyn â bod yn fewnbwn i'r cynhwysydd VPN. Nawr mae'n draffig a anfonir ymlaen, wedi'i farnu gan reol wahanol. Mae'r newid hwnnw'n esbonio pam nad oes gan reol wal dân sy'n edrych yn iawn ar gyfer cyfeiriad y twnnel unrhyw effaith ar y cysylltiad a gyfieithwyd.

Dilynwch y pecyn ar ôl y cyfieithiad

Cymerwch bwll cleientiaid 10.90.0.0/24 a chyfeiriad twnnel 10.90.0.1. Mae dau gynhwysydd ar un bont: mae 192.0.2.2 yn rhedeg y VPN ac mae 192.0.2.3 yn rhedeg y rhaglen. Mae cleient yn cysylltu â 10.90.0.1:8080, ac mae'r rheol DNAT yng ngofod enwau'r cynhwysydd VPN yn ailysgrifennu hynny i gyfeiriad a phorth go iawn y rhaglen. Yna mae llwybr yn anfon y pecyn dros y bont. Mae'r cyfeiriadau hynny'n ddarluniadol, nid yn fformiwla osod.

Gall y porth y mae'r rhaglen yn gwrando arno mewn gwirionedd fod yn wahanol i unrhyw borth a gyhoeddir ar y gwesteiwr. Darllenwch y gwrandäwr y tu mewn i'r cynhwysydd yn lle tybio bod y ddau rif yn cyfateb.

Mae'r caniatâd yn perthyn i'r llwybr anfon ymlaen

Mae ar y cynhwysydd VPN angen anfon IP ymlaen a phenderfyniad anfon ymlaen wedi'i gyfyngu i bwll y cleientiaid, cyfeiriad y rhaglen a'r porth bwriadedig. Mae ar atebion sefydledig angen eu caniatâd eu hunain. Ni fydd rheol sy'n cyfateb i gyfeiriad gwreiddiol y twnnel yn cyfateb ar ôl DNAT, oherwydd mae'r cyrchfan eisoes wedi newid. Mae caniatâd INPUT yn fachyn anghywir ar gyfer traffig nad yw bellach wedi'i gyfeirio at y gwesteiwr hwn.

Cadwch y cwmpas yn gul: un ystod ffynhonnell, un gyrchfan, un gwasanaeth. Mae rheol anfon ymlaen a ganiateir yn haws i'w hysgrifennu ac yn llawer anoddach i'w hamddiffyn yn ddiweddarach.

docker exec vpn-container ip route get 192.0.2.3
docker exec vpn-container iptables -t nat -S
docker exec vpn-container iptables -S FORWARD

Nid cadwyni Docker yw cadwyni eich cynhwysydd

Nid yw'r rheolau y tu mewn i ofod enwau'r cynhwysydd yn rheolau gwesteiwr Docker. Pan fydd traffig yn croesi o ryngwyneb y twnnel i'r bont, gall wal dân y bont ar y gwesteiwr wneud penderfyniad arall. Gyda backend iptables Docker, y cadwyni anfon ymlaen dogfennol a'r pwyntiau cyfateb ar ôl DNAT yw lle mae'r penderfyniad hwnnw'n ymddangos.

Mae cyfeirlyfr wal dân Docker yn disgrifio'r cadwyni hynny a'r cyfatebiad ar ôl DNAT. Peidiwch â thrwsio derbyniad coll drwy analluogi rheolaeth wal dân Docker neu drwy wneud pob cadwyn yn caniatáu, oherwydd mae hynny'n dileu'r ffin rydych chi'n ceisio ei defnyddio.

Gwnewch y llwybr dychwelyd yn ddewis bwriadol

Os cedwir cyfeiriad y ffynhonnell, mae'r rhaglen yn gweld 10.90.0.x a rhaid iddi lwybro atebion yn ôl drwy'r cynhwysydd VPN. Fel arall bydd ei phorth Docker arferol yn eu hanfon at y gwesteiwr, nad yw'n berchen ar y twnnel. Y dewis arall yw cyfieithu ffynhonnell cul yn y cynhwysydd VPN, sy'n symleiddio'r ateb ond yn cuddio'r cleient rhag y rhaglen. Dewiswch yn fwriadol ac ysgrifennwch pa un a ddewiswyd gennych.

Profwch gysylltiad newydd a ganiateir o gleient cyffredin, yna cadarnhewch fod portoedd diberthynol yn aros ar gau. Pan fydd pecyn yn diflannu, archwiliwch ofod enwau VPN, gofod enwau'r rhaglen a log y rhaglen ei hun. Nid yw ping i borth y bont yn brawf derbyn ar gyfer y gwasanaeth.

Cadwch y rheolau yng nghyfluniad cychwyn cefnogol y cynhwysydd, oherwydd mae golygiadau rhyngweithiol yn diflannu pan gaiff ei ail-greu. Mae cyhoeddi porth ar y gwesteiwr yn llwybr datguddiad gwahanol ac nid oes ei angen dim ond oherwydd bod y gwasanaeth yn cyrraeddadwy drwy'r twnnel.

Erthyglau cysylltiedig