Gall troi cleient OpenVPN twnnel llawn ymlaen ar beiriant rydych yn ei gyrraedd dros SSH dorri’r sesiwn o fewn eiliad, ac nid yw’r peiriant yn gwneud dim o’i le. Nid yw’r twnnel yn newid sut mae pecynnau’n cyrraedd y gweinydd; mae’n newid sut mae’r atebion yn gadael. Unwaith y bydd y llwybr diofyn yn pwyntio at tun0, mae ateb i’ch cleient SSH yn mynd i rwydwaith y darparwr, nad oes ganddo lwybr yn ôl i’ch cyfeiriad. Mae’r cysylltiad yn hongian, mae’r ymgais nesaf yn goramseru, ac mae’r daemon yn dal i wrando ar borth 22 drwy’r amser.

Darllenwch y tabl llwybro cyn i chi ddarllen log y VPN. Bydd y log yn dweud bod y twnnel wedi codi, ac mae’n iawn. Y cwestiwn yw pa ryngwyneb y rhoddir pob ateb iddo, a hynny yw chwiliad fesul pecyn yn erbyn tabl mae’r twnnel newydd ei ailysgrifennu.

Pam mae’r ateb yn gadael drwy’r drws anghywir

Mae pecynnau sy’n dod i mewn yn dal i gyrraedd y rhyngwyneb ffisegol, oherwydd ni all cleient VPN newid sut mae’r rhyngrwyd yn cyrraedd cyfeiriad cyhoeddus eich gweinydd. Mae atebion yn benderfyniad ar wahân: ar gyfer pob pecyn, mae’r cnewyllyn yn chwilio’r gyrchfan, ac ar ôl --redirect-gateway mae’r cofnod diofyn yn dweud twnnel. Mae allanfa’r darparwr yn gweld cyrchfan nad yw’n ei gwasanaethu ac yn gollwng y pecyn.

Mae amddiffyniad OpenVPN ei hun yn cwmpasu un gyrchfan yn union. Mae llawlyfr 2.6 yn disgrifio --redirect-gateway fel dilyniant: mae’n ychwanegu llwybr gwesteiwr ar gyfer y peer VPN drwy’r porth a ddefnyddiwyd cyn y twnnel, fel na all y traffig amgryptiedig dolennu’n ôl i mewn i’w hun, ac yna’n disodli’r llwybr diofyn. Mae’r llwybr gwesteiwr hwnnw ar gyfer y peer yn unig. Mae’ch cleient SSH yn ddim mwy na chyfeiriad rhyngrwyd arall ac nid yw’n cael unrhyw eithriad.

Mae un camgymeriad rhagddodiad yn werth ei ddiystyru’n gynnar. Mae ip route add -net 0.0.0.0 gw 10.8.0.1 dev tun0 heb hyd yn cyd-fynd â’r un cyfeiriad 0.0.0.0, nid â’r rhyngrwyd; rhaid iddo fod yn 0.0.0.0/0. Ac os yw cymryd y llwybr diofyn yn torri cludiant y twnnel ei hun, ychwanegwch y pen draw fel llwybr gwesteiwr drwy’r rhyngwyneb ffisegol, gan ddefnyddio cyfeiriad go iawn y darparwr.

Pinwch gyfeiriad eich cleient SSH am drwsiad ar unwaith

Y trwsiad cyflymaf yw llwybr gwesteiwr ar gyfer cyfeiriad eich cleient drwy’r porth a ddefnyddiodd y gweinydd cyn bod y twnnel. O’ch ochr chi, darganfyddwch y cyfeiriad y bydd’r gweinydd yn ei weld, yna darllenwch dabl y gweinydd fel y gwybyddoch y porth cynt:

curl -s https://ifconfig.co
ip route

Ar y gweinydd, ychwanegwch yr eithriad cyn i’r cleient gychwyn. Mae’r cyfeiriadau yma’n ddalwyr lle; y siâp sy’n bwysig:

sudo ip route add 80.128.240.55 via 192.168.178.1

Dyma’r trwsiad a ddefnyddiwyd yn yr achos a adroddwyd, ac mae’n gweithio ar unwaith. Mae hefyd yn fregus mewn dwy ffordd ragweladwy: mae’r llwybr yn diflannu ar ailgychwyn, ac mae’n mynd yn anghywir y funud y bydd eich ISP yn rhoi cyfeiriad gwahanol i chi. Trwsiwch ef fel mesur brys a’i wneud yn barhaol yn fwriadol, drwy uned rwydwaith neu fachyn anfonydd, neu derbyniwch ei fod yn dros dro ac ysgrifennwch y llwybr adfer.

Atal y cleient rhag cymryd y llwybr diofyn

Y dewis glanach yw atal y twnnel rhag disodli’r llwybr diofyn o gwbl. Mae route-nopull, a ddefnyddir gyda --client neu --pull, yn derbyn opsiynau a wthir ac eithrio llwybrau, block-outside-dns ac opsiynau ar ffurf DHCP fel gweinyddwyr DNS, felly dim ond y rhagddodiaid sydd eu hangen arnoch sy’n cael eu hychwanegu. Teclyn culach yw hidlydd tynnu, sy’n gollwng un gorchymyn problemus ac yn cadw’r gweddill:

route-nopull
pull-filter ignore "redirect-gateway"

Defnyddiwch y naill neu’r llall, nid y ddau, a byddwch yn glir ynghylch beth sy’n newid. Heb lwybr diofyn drwy’r twnnel, nid yw’r gweinydd yn pori’r rhyngrwyd drwy’r darparwr mwyach; dim ond yr hyn a lwybrwyd yn benodol ganddoch chi y mae’n ei gyrraedd. Os y twnnel llawn oedd holl bwynt y sefydliad, y botwm anghywir yw hwn a’r llwybr gwesteiwr uchod yw’r un iawn.

Rhannwch y llwybr dychwelyd yn ôl ffynhonnell neu yn ôl cysylltiad

Pan fo’r cyfeiriad sy’n dod i mewn yn sefydlog, mae rheol ffynhonnell yn cadw atebion yn lleol heb gyffwrdd â llwybrau’r twnnel ei hun. Rhowch dabl ei hun i gyfeiriad y rhyngwyneb ffisegol sy’n cynnwys rhagddodiad LAN a’r diofyn ffisegol, yna dewiswch y tabl hwnnw ar gyfer traffig sy’n deillio ohono:

ip rule add from 192.168.1.11 table 128
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1

Mae hyn yn gweithio oherwydd bod atebion i gysylltiad SSH sy’n dod i mewn yn deillio o’r cyfeiriad y cysylltodd y cleient ag ef. Defnyddiodd achos a adroddwyd lle’r oedd yn rhaid i bob gwasanaeth sy’n dod i mewn barhau i weithio yr union siâp hwn. Pan fo’r cyfeiriad sy’n dod i mewn yn arnofio neu’r llwybr yn ddeinamig, marciwch y cysylltiad yn lle hynny: gosodwch farc conntrack ar y pecyn cyntaf sy’n cyrraedd o’r rhyngwyneb ffisegol, copïwch ef i becynnau ateb yn OUTPUT, a llwybrwch becynnau wedi’u marcio drwy dabl sy’n pwyntio at y porth ffisegol.

iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
ip route add default via 192.168.1.1 dev eth0 table 3412
ip rule add fwmark 4321 table 3412

Cadwch farc y cysylltiad, marc y wal dân a rhif y tabl ar wahân wrth brofi. Mae ailddefnyddio un rhif ar gyfer dau rôl yn cynhyrchu rheol sy’n edrych yn gywir ac yn cyfateb i’r pecynnau anghywir. Mae cofnod diofyn y tabl hefyd angen via gyda phorth LAN ar gyswllt Ethernet cyffredin; dim ond pan fo’r rhyngwyneb yn bwynt-i-bwynt neu’r naid nesaf yn cael ei datrys mewn ffordd arall y mae dev eth0 noeth yn gweithio. Digwyddodd gwesteiwr Jessie a adroddwyd fod ar gyswllt lle’r oedd y ffurf noeth yn gweithio, ac nid yw hynny’n rheol rhaniad i’w chopïo.

Gwiriwch heb eich cloi allan

Peidiwch â phrofi drwy ddatgysylltu. Cadwch y sesiwn gyntaf ar agor, codwch y twnnel, a gofynnwch i’r cnewyllyn pa lwybr y byddai’ch cyfeiriad eich hun yn ei gymryd:

ip route get 80.128.240.55

Dylai’r ateb enwi’r rhyngwyneb ffisegol a’r porth cynt, nid y twnnel. Yna agorwch ail gysylltiad SSH; dyna’r gwir brawf, oherwydd gall yr hen sesiwn oroesi ar gyflwr na all cysylltiad newydd ei atgynhyrchu. Os yw’r ail yn hongian tra mae’r cyntaf yn dal i ateb, ni chyfarfu’r rheol byth â’r traffig sy’n cyfrif, a’r marciau neu’r cyfeiriad ffynhonnell yw’r lle i chwilio.

Cadwch gonsol all-fand ar gael drwy’r ymarfer i gyd. Ni ellir trwsio gweinydd mai ei unig lwybr mynediad yw’r twnnel rydych newydd ei dorri drwy’r twnnel hwnnw, ac mae’r cildroi’n haws pan fyddwch wedi nodi’r rhifau tabl a’r rhagddodiaid a ychwanegoch.

Erthyglau cysylltiedig