Ni fydd cysylltiad strongSwan sy'n gweithio ar gyfer un is-rwydwaith preifat yn cario traffig rhyngrwyd dim ond oherwydd bod rhywun wedi golygu un llinell. Cytundeb rhwng dau begwn yw twnnel llawn ynghylch pa gyfeiriadau y mae'r child SA yn eu hamddiffyn, ac mae pob pegwn yn enwi'r ochr arall mewn perthynas ag ef ei hun. Cywirwch un ochr a gwallwch y llall, ac naill ai ni ddaw'r child SA i fyny neu daw i fyny'n gulach na'r bwriad. Mae'r pum archwiliad isod yn dilyn y cytundeb hwnnw o'r cleient, trwy'r porth, ac allan i'r rhyngrwyd.

Gwiriwch ddetholydd y cleient yn gyntaf

Mae'r cleient yn disgrifio'r hyn y mae am ei amddiffyn ar yr ochr bell fel remote_ts, ac mae popeth a anfonir ganddo yn deillio o'i gyfeiriad neilltuedig ei hun. Ar gyfer traffig rhyngrwyd rhaid i'r gwerth hwnnw gynnwys y cyrchfannau y bydd'r defnyddiwr yn eu cyrraedd mewn gwirionedd, sy'n golygu'r holl ofod IPv4 yn ymarferol. Mae cleient sy'n dal i restru un is-rwydwaith yn gofyn am dwnnel holltiedig, beth bynnag yw enw'r proffil yn y rhyngwyneb. Yr ochr ffynhonnell yw dynamic fel arfer oherwydd bod y cyfeiriad yn cael ei neilltuo ar amser cysylltu. Mae ffynhonnell sefydlog a ysgrifennwyd yno yn torri cyn gynted ag y bydd y pwll yn newid.

children {
    net {
        local_ts  = dynamic
        remote_ts = 0.0.0.0/0
    }
}

Nid yw'r darn yn ffeil gysylltu gyflawn, ac mae'r un hon yn tybio bod dilysu, hunaniaethau a'r pwll cyfeiriadau rhithwir eisoes wedi'u ffurfweddu. Rhaid i ddetholydd ffynhonnell y cleient a'r cyfeiriad y mae'r gweinydd yn ei neilltuo gytuno o hyd, neu daw'r child SA i fyny ag amrediad na ddisgwyliodd y naill ochr na'r llall. Llwythwch ef gyda swanctl --load-all a darllenwch yr allbwn cyn tybio llwyddiant. Gall ffeil sy'n parsio gael ei gwrthod o hyd oherwydd detholydd nad yw'n gorgyffwrdd â chynnig y pegwn arall.

Gwiriwch ddetholydd y porth ar ei ochr ei hun

Mae'r porth yn darllen yr un cysyniad o'r cyfeiriad arall. Mae cyrchfannau rhyngrwyd yn lleol i'r porth, felly ei local_ts yw'r un eang a'i remote_ts sy'n disgrifio pwll y cleientiaid. Y gwrthdroad hwnnw yw'r camgymeriad mwyaf cyffredin mewn ffurfweddiad twnnel llawn, ac mae'n goroesi adolygiad oherwydd bod y ddwy linell yn edrych yn gredadwy ar eu pennau eu hunain.

children {
    rw {
        local_ts  = 0.0.0.0/0
        remote_ts = 10.77.0.0/24
    }
}

Mae copïo darn y cleient i ffeil y porth yn cynhyrchu pâr o ddetholwyr nad ydynt yn disgrifio unrhyw beth defnyddiol, oherwydd byddai'r ddwy ochr yn hawlio'r un rôl. Mae canllaw cyfeirio strongSwan yn dogfennu paru'r cleient a'r porth yn benodol, ac mae'n werth ei ddarllen wrth ymyl y ffeil gysylltu yn hytrach nag ar ôl y methiant. Mae ffeil y porth hefyd angen diffiniad y pwll y mae remote_ts yn cyfeirio ato. Mae detholydd sy'n enwi pwll nad yw'n bodoli yn llwytho heb gŵyn ac yn methu ar amser cysylltu.

Mae ipsec.conf etifeddol yn defnyddio rolau chwith a de â allweddi gwahanol, ac nid yw llinell rightsubnet yn ddisodliad uniongyrchol ar gyfer gwerth swanctl. Cadwch y ddwy gystrawen mewn ffeiliau ar wahân yn hytrach na gludo'r naill i'r llall. Cymysgu'r ddwy mewn un cyfeiriadur yw sut y mae cysylltiad gweithredol yn dychwelyd yn dawel ar ôl ailgychwyn.

Gwiriwch y child SA a drafodwyd, nid y ffeil

Mae ffurfweddiad a gadwyd yn profi bwriad a dim mwy. Gall pegwn gulhau'r hyn a ofynnwyd, ac nid yw child SA sy'n bodoli eisoes yn cael ei ddisodli dim ond oherwydd bod y ffeil oddi tano wedi newid. Cadarnhewch yr hyn sydd mewn gwirionedd wedi'i osod cyn newid unrhyw beth arall.

swanctl --list-conns
swanctl --list-sas
ip xfrm policy list

Mae'r gorchymyn cyntaf yn dangos yr hyn a lwythodd y daemon, mae'r ail yn dangos y child SA sydd wedi'u sefydlu, ac mae'r trydydd yn dangos y polisïau y bydd y cnewyllyn yn eu cymhwyso. Os yw'r ffeil yn dweud 0.0.0.0/0 ac mae'r rhestr yn dangos un is-rwydwaith, mae'r trafodaethau wedi culhau'r amrediad ac ni fydd ailddarllen y ffeil yn egluro hynny. Terfynwch y child, ailgychwynnwch ef, a chymharwch y tri allbwn eto. Mae child sy'n dychwelyd gyda'r un amrediad cul yn cael ei gulhau gan yr ochr bell yn hytrach na chan y ffeil leol, ac mae hynny'n sgwrs â'r gweinyddwr arall yn hytrach nag yn olygiad lleol.

Darllenwch y ddau gyfeiriad yn y rhestr polisïau, oherwydd twnnel sy'n gosod un cyfeiriad ac nid y llall yw problem gyfeirio mewn gwisg ffurfweddiad. Dylai'r polisïau ymlaen ac yn ôl enwi'r un pâr o ddetholwyr mewn delwedd drych, ac mae drych ar goll yn ddiffyg yn y daemon neu yn y cynnig yn hytrach nag yn nhestun y detholydd.

Gwiriwch y cyfeirio a'r llwybr dychwelyd

Mae detholydd yn derbyn traffig i'r porth; nid yw'n gwneud i'r porth gyfeirio'r traffig hwnnw ymlaen. Rhaid galluogi cyfeirio, rhaid i'r wal dân ganiatáu'r llif, a rhaid i'r ateb ddod o hyd i'w ffordd yn ôl i bwll y cleientiaid. Mae'r rhain yn dri gofyniad ar wahân, ac mae pob un yn methu â symptom gwahanol. Mae rheol gyfeirio ar goll yn ymddwyn fel twll du, tra bod llwybr dychwelyd ar goll yn ymddwyn fel twnnel unffordd.

sysctl net.ipv4.ip_forward
iptables -t nat -S | grep -i masq
ip route get 1.1.1.1

Mae cyfeiriadau preifat cleientiaid fel arfer angen cyfieithu ffynhonnell bwriadol cyn iddynt allu gadael rhyngwyneb cyhoeddus, tra bod dyrannu a gyfeiriwyd yn benodol angen triniaeth wahanol. Os oes NAT yn y llun, cadwch yr eithriadau a gefnogir gan y gweithredu fel nad yw traffig y dylai polisi diogelwch ei archwilio yn cael ei gyfieithu heibio iddo. Mae rheol masquerade eang a gopïwyd o borth arall yn newid llawer mwy o ffrydiau nag a fwriadwyd gan ei hawdur. Ysgrifennwch y rheol ar gyfer pwll y cleientiaid yn unig, a gadewch sylw yn egluro pam y mae'n bodoli.

Ar y cleient, cadarnhewch y llwybrau a osodwyd gan y backend yn hytrach na'r llwybrau y gwnaethoch eu tybio. Mae rheolwr ag osod llwybrau wedi'i analluogi angen dyluniad cyfeirio a gynhelir â llaw, a rhaid diweddaru'r dyluniad hwnnw pryd bynnag y bydd y twnnel yn newid. Gwiriwch y tabl cyfeirio ar ôl ailgysylltu, nid yn unig ar ôl cychwyn newydd.

Gwiriwch yr hyn nad yw'r twnnel yn ei gwmpasu o hyd

Mae'r pâr detholwyr yn cwmpasu IPv4 a dim arall. Mae IPv6, DNS ac unrhyw bolisi ar lefel cymhwysiad yn benderfyniadau ar wahân y mae detholydd IPv4 eang yn eu hanwybyddu'n dawel. Gall twnnel sy'n cario pob pecyn IPv4 ollwng pob chwiliad enw o hyd.

Nodwch y llwybr DNS arfaethedig yn benodol, oherwydd mae twnnel llawn sy'n dal i ddatrys enwau trwy'r datryswr lleol yn gollwng ymholiadau y tu allan i'r twnnel ac yn torri enwau preifat. Os neilltuir cyfeiriad IPv6 i'r cleient, mae angen yr un driniaeth ar y teulu cyfeiriadau hwnnw, neu bydd y gwesteiwr yn ffafrio llwybr nad yw'r twnnel yn ei amddiffyn. Profwch ag enw na all ond yr ochr breifat ateb, a thriniwch ateb cyhoeddus fel gollyngiad.

resolvectl query intranet.example.internal
traceroute -n 1.1.1.1

Cadarnhewch y gadwyn gyda'r ddau orchymyn hynny ynghyd â'r detholwyr a drafodwyd o'r rhestr uchod. Os yw'r traceroute yn dangos y llwybrydd lleol fel y naid gyntaf, nid yw'r traffig yn defnyddio'r twnnel waeth beth mae'r detholwyr yn ei honni. Dim ond pan fydd y traffig a ddewiswyd yn cael ei dderbyn, ei gyfeirio a'i ddychwelyd trwy'r porth a gynlluniwyd y mae mynediad rhyngrwyd yn gyflawn. Mae dod o hyd i 0.0.0.0/0 mewn proffil yn ddechrau'r gadwyn honno yn hytrach na'i phrawf.

Erthyglau cysylltiedig