Llwybro traffig VM host-only drwy weinydd TUN OpenVPN
Cadwch y twnnel a'r rhagddodiad host-only ar wahân, gwthiwch lwybr y gwestai, yna rhowch lwybr dychwelyd bwriadol drwy'r gwesteiwr i bob peiriant rhithwir.
Mae addaswyr host-only yn creu rhwydwaith rhithwir lleol, ac mae twneli TUN a lwybrwyd yn cario pecynnau IP rhwng cyfeiriadau. Nid yw'r naill yn bont i'r llall, a dyna pam mae'n rhaid i ffurfweddiad sy'n gweithio ddweud pwy sy'n anfon ymlaen a phwy sy'n berchen ar y llwybr dychwelyd. Os byddwch yn drysu'r ddau aseiniad hynny, mae'r gwestai yn ateb y twnnel ag ffynhonnell na ofynnodd cleient y twnnel amdani erioed. Mae'r dyluniad isod yn cadw'r ddau ragddodiad ar wahân ac yn gwneud y llwybr dychwelyd yn amlwg.
Dwy rwydwaith, dau ragddodiad
Rhowch ragddodiadau gwahanol i bŵl y twnnel a'r rhwydwaith host-only ac na ailddefnyddiwch y naill ar gyfer y llall. Yn yr enghraifft hon mae pŵl VPN yn 10.44.0.0/24 a'r rhwydwaith host-only yn 192.168.99.0/24, gyda'r gwesteiwr ar 192.168.99.1 a gwestai ar 192.168.99.20. Nid yw aseinio'r un rhagddodiad i ddyfais TUN ac i'r addasydd host-only yn eu huno. Mae'n creu dau hawliad ar un ystod cyfeiriadau, ac yna mae'r tabl llwybro yn ateb dros yr hawliad y digwyddodd ei gadw.
Mae'r addasydd host-only yn bodoli ar y gwesteiwr ac y tu mewn i'r gwestai, ac nid oes ganddo lwybr oddi ar y peiriant ynddo'i hun. Mae gan atodiadau pont a NAT wahanol amlygiad, ac nid yw newid i fodd pont yn ofyniad ar gyfer cyrraedd un gwasanaeth gwestai.
Mae gan y gwesteiwr y llwybr yn barod
Edrychwch ar yr hyn sydd eisoes yno cyn ychwanegu unrhyw beth. Mae gan y gwesteiwr ryngwyneb ar y rhwydwaith host-only a llwybr ar gyfer y rhagddodiad hwnnw, y ddau wedi'u creu pan gododd yr addasydd.
ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward
Y drydedd linell yw'r mecanwaith sy'n troi'r gwesteiwr yn hop. Hebddi, mae pecyn sy'n cyrraedd o'r twnnel yn cael ei gyfeirio at rwydwaith y gall y gwesteiwr ei chyrraedd ond na fydd yn ei hanfon ymlaen. Mae anfon ymlaen yn angenrheidiol ac nid yn ddigonol. Mae'r polisi hidlo yn dal i benderfynu a yw llif penodol rhwng rhyngwyneb y twnnel a'r rhyngwyneb host-only yn cael ei ganiatáu, ac mae'r penderfyniad hwnnw'n perthyn yn ysgrifenedig yn hytrach nag mewn polisi diofyn na ddarllenodd neb.
Gwthiwch y llwybr, yna hidlwch beth mae'n ei gyrraedd
Gall y gweinydd ddarparu'r rhagddodiad host-only i gleientiaid sy'n derbyn llwybrau gwthiedig, sef yr un mecanwaith a ddefnyddir ar gyfer unrhyw is-rwydwaith arall y tu ôl i'r twnnel.
push "route 192.168.99.0 255.255.255.0"
iptables -A FORWARD -i tun0 -o vboxnet0 -d 192.168.99.20 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o tun0 -s 192.168.99.20 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Mae'r ddau reol yn caniatáu un gwasanaeth i un cyfeiriad a'i atebion. Mae llwybr sy'n cyrraedd y rhagddodiad cyfan a hidlydd sy'n caniatáu un porth yn gyfuniad bwriadol; llwybr ynghyd â derbyn diamod yw sut mae gwasanaeth labordy yn troi'n wasanaeth agored. Nid yw llwybr gwthiedig yn awdurdodiad chwaith. Mae'r cleient yn ei dderbyn, mae'r gwesteiwr yn ei anfon ymlaen, ac mae gan danwal y gwestai a'r gwasanaeth ei hun lais o hyd.
Mae angen ffordd yn ôl ar y gwestai
Mae'n rhaid i westai y cyrchir ato o 10.44.0.x anfon ei atebion i gyfeiriad host-only y gwesteiwr, neu mae'n rhaid i'r gwesteiwr gyfieithu'r ffynhonnell. Nid yw derbyn cyfeiriad oddi wrth DHCP VirtualBox yn dweud dim am y naill drefniant na'r llall.
ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15
Mae ychwanegu'r llwybr hwnnw y tu mewn i'r gwestai yn cadw'r ffynhonnell wreiddiol, sy'n cadw polisi a logiau pob cleient yn ystyrlon. Cyfieithu ffynhonnell cyfyngedig ar y gwesteiwr yw'r dewis arall, ac mae'n gweithio, ar gost cuddio pa gleient a gysylltodd. Mae gorgyffwrdd yn fodd methu arall. Bydd cleient o bell y mae ei LAN cartref eisoes yn defnyddio 192.168.99.0/24 yn darllen y llwybr gwthiedig fel ei rwydwaith ei hun, ac nid oes unrhyw newid ar ochr y gweinydd yn trwsio'r annwysedd hwnnw. Ailrifwch un ochr neu dewiswch ragddodiad annhebygol o wrthdaro.
Mae dyfais TUN yn cario pecynnau IP, felly nid yw ychwanegu porth arferol y tu mewn i westai yn troi'r twnnel yn segment Ethernet gyda'r addasydd host-only. Mae pontio TAP yn ddyluniad gwahanol gyda'i gefnogaeth cleientiaid a'i berchnogaeth cyfeiriadau ei hun, ac mae cymysgu'r ddau ddisgrifiad yn arwain at ffurfweddiadau nad ydynt byth yn cydgyfeirio.
Gwirwch, yna gwnewch iddo oroesi ailgychwyn
Profwch un gwasanaeth diniwed o gleient o bell cyffredin, gwiriwch lwybr dychwelyd y gwestai, a chadarnhewch fod gwasanaeth na chaniatawyd gennych yn cael ei wrthod yn hytrach na bod yn araf.
ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20
Yna ailgychwynnwch y gwasanaeth VPN a rhwydweithio'r peiriant rhithwir, ac ailadroddwch yr un tri gwiriad. Mae llwybr a ychwanegwyd â llaw yn para tan y ailgychwyn nesaf, ac nid yw ffurfweddiad sy'n gweithio mewn sesiwn gynnes yn ddyluniad. Cofnodwch y ddau ragddodiad, y polisi anfon ymlaen a llwybr y gwestai gyda'i gilydd. Bydd ar bwy bynnag sy'n ychwanegu'r peiriant rhithwir nesaf angen y tri, ac fel arall bydd yn eu hailddarganfod un cysylltiad methiedig ar y tro.