Isar da /24 mai nisa ta hanyar tunnel: NETMAP, DNAT ko hanya?
Yi taswirar dukan prefix da NETMAP, ƙara ka'idojin DNAT ga kowane host ko yi hanya da ainihin rukunin, sannan ka yanke shawara bisa abin da gefen nesa dole ya gani da wanda zai iya fara zirga-zirga.
Za ka iya isa ga wani subnet a bayan ƙarshen tunnel ta hanyoyi uku, kuma minti ɗaya na tattara gaskiya yakan kore biyu. Gaskiyar ita ce ko dole sabar da ke can su bambanta masu amfani, ko wani a can zai taɓa yin waya zuwa rukuninka, da wanda zai iya gyara na'urar hanya ta ƙarshen nesa. Amsa waɗannan uku kuma ƙirar za ta zaɓi kanta. Sauran yana ɗauka cewa kai ne ke kula da ƙarshen kuma za ka iya gyara matattarar wutarsa.
Zaɓuɓɓuka uku, da abin da kowanne yake canzawa a zahiri
Taswirar prefix, DNAT ga kowane host da prefix ɗin da aka yi hanya duk suna motsa fakiti tsakanin rukunoni biyu ɗaya, amma suna canza abubuwa daban-daban. Taswira tana ƙirƙirar rukunin alias kuma tana sake rubuta adireshi ta lissafi yayin tashi. Ka'idojin kowane host ma suna sake rubutawa, sai dai kowane manufa ana ambatonsa da hannu. Prefix ɗin da aka yi hanya ba ya sake rubuta kome: fakiti suna riƙe ainihin adireshi kuma ɓangarorin biyu sun yarda inda waɗannan adireshin suke.
| What the far side needs | Prefix mapping | Per-host DNAT | Routed prefix |
|---|---|---|---|
| Users visible to its logs | Only without source NAT | Same condition | Yes, unchanged |
| To start a connection toward you | No, alias is local | No, same reason | Yes, both ends route |
| To absorb a new host | Yes, arithmetic only | No, one rule per address | Yes, it simply routes |
| To require no config change | Yes, with source NAT | Yes, same condition | No, it needs a route back |
Fara kawar da su daga gefen nesa, inda iyakoki suka fi wahalar canzawa. Idan sabar da ke can tana rubuta adireshin abokan ciniki a cikin log, tana duba su da jerin izini ko tana ba da su ga wani tsari, fassarar tushen tana lalata hanya ɗaya tilo ta gane shi. Idan gefen nesa ma dole ya yi waya, fassarar ta fita gaba ɗaya, domin babu wanda ke can ya san alias ɗin yana wanzu. Sai kawai lokacin da gefen nesa yake amsa buƙatu kawai, zaɓuɓɓukan da suka fi arha suke zama lafiya.
Ma'auratan prefix, da kuma dalilin da ya sa girma ya kamata su daidaita
NETMAP manufa ce ta teburin nat da ke aiki a kan ma'auratan prefix masu tsayi ɗaya. Ba shi da teburu ga kowane adireshi a ciki: yana cire prefix ɗin, yana riƙe bits ɗin host sannan yana sake haɗa su da sabon prefix ɗin, shi ya sa /24 ke taswira zuwa /24 kuma ba ya taɓa zuwa /25. Matsayi ne ke ƙayyade alkibla: daidaiton manufa a cikin PREROUTING yana sake rubuta inda fakiti yake zuwa, kuma daidaiton tushe a cikin POSTROUTING yana sake rubuta inda ya fito.
Host a 192.168.2.17 yana bayyana ga abokan cinikinka a matsayin 10.50.1.17, kuma okteti na ƙarshe ba ado ba ne — lamba ɗaya ce a ɓangarorin biyu. Ƙara host a 192.168.2.40 gobe kuma alias ɗinsa 10.50.1.40 ne, ba tare da wani ka'ida da za a gyara ba.
Abokan ciniki har yanzu suna buƙatar hanya don rukunin alias da ke nuna zuwa akwatinka, sai dai idan alias ɗin ya faɗi cikin subnet da suka riga suka isa. Ƙofa ba ta buƙatar hanya don alias ɗin, domin fassarar manufa tana gudana a cikin PREROUTING, kafin binciken hanya. Dole kuma a kunna turawa gaba, in ba haka ba kernel ɗin zai jefar da fakiti bayan sake rubutawa. Umarni uku da ke ƙasa su ne dukan saitin a kan ƙofa irin ta Debian tare da abokan ciniki a br0, alias a 10.50.1.0/24 da tunnel a tun0.
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i br0 -d 10.50.1.0/24 -j NETMAP --to 192.168.2.0/24
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADEAmsar dole ta sami hanyarta ta dawowa da kanta
Sake rubuta manufa yana ƙayyade kawai inda za a kai fakiti. Sabar gefen nesa har yanzu dole ta amsa adireshin da za ta iya isa, kuma akwai hanyoyi biyu na shirya hakan. Fassara tushen domin amsoshi su koma akwatinka, ko bar tushen yadda yake ka ba gefen nesa hanya don rukunin abokan ciniki.
Masquerade a hanyar fita ita ce hanya mafi guntu: ka'ida ɗaya a cikin POSTROUTING kuma gefen nesa yana ganin adireshin tunnel ɗinka, don haka ba ya buƙatar hanyarsa. Farashin shi ne dukan masu amfani sun haɗu cikin adireshi ɗaya, kuma log ɗin kowane mai amfani ya daina ma'ana. Barin tushen yadda yake yana adana wannan bayanin, amma sannan shafin nesa dole ya mayar da amsoshin rukunin abokan ciniki ta cikin tunnel. A kan OpenVPN sabar wannan shine push "route 10.50.9.0 255.255.255.0", da kuma layin route 192.168.2.0 255.255.255.0.
Kuskure mai tsada shine yin rabin kowanne. Idan ka masquerade wani ɓangaren zirga-zirga yayin da gefen nesa ma yana ɗauke da hanyar dawowa don wani zirga-zirga, amsoshi suna isowa a kan wata fuska inda ba a taɓa ganin shigarwar bin diddigin haɗi ba. Abokin ciniki yana bayar da rahoton ƙarewar lokaci don buƙatar da sabar ta rubuta a matsayin an yi hidima. Dole bangarorin biyu na kwarara su bi ta misalin netfilter ɗaya: ƙofa ɗaya tana fassara, ba matattarar wuta biyu a jere ba.
conntrack -L -d 10.50.1.17
iptables -t nat -L PREROUTING -v -nKaranta shigarwar a bangarorin biyu: tuple na asali yana riƙe alias ɗinka a kan manufa, yayin da tuple na amsa yana ɗauke da ainihin adireshin. Idan babu tuple na amsa, matsala tana cikin hanyar dawowa ba cikin ka'ida ba. Idan ƙididdigar PREROUTING ba su taɓa motsi ba, fakiti bai taɓa isa wannan ƙugiya ba.
Karo da binciken da ke gudana da farko
Rukunoni biyu daban-daban na iya yin karo kuma duka gazawar suna kama da karyayyen tunnel maimakon mugun ka'ida. Alias ɗin da ka ƙirƙira dole ya kasance ba a amfani da shi a dukan hanya, kuma ainihin rukunin gefen nesa bai kamata ya riga ya kasance a cibiyar sadarwarka ba. Kwafi yana haifar da zirga-zirga na lokaci-lokaci zuwa ga host ɗin da ba daidai ba, wanda ya fi wahalar ganowa fiye da haɗin da aka ƙi. Tambayi teburin hanya kafin ka ƙara ka'ida.
A kan ƙofa, ip route get 192.168.2.17 ya kamata ya ambaci na'urar tunnel; gada ta gida tana nufin an rufe rukunin nesa kuma babu ka'idar nat da za ta gyara shi. Idan cibiyar sadarwarka ta riga ta yi amfani da 192.168.2.0/24, sake lambobi shafin nesa maimakon ɗora taswira a kan karon.
Gwada shi daga ainihin abokin ciniki, sannan ka adana shi
Gwada daga na'urar da za ta yi amfani da alias ɗin da gaske, ba daga ƙofa ba, domin zirga-zirgar da aka ƙirƙira a gida ba ta taɓa wucewa ta PREROUTING haka ba. Buɗe haɗi zuwa host ɗaya mai alias ka lura da ƙididdiga da shigarwar conntrack suna bayyana tare, sannan rufe shi ka tabbatar shigarwar ta fita. Tsohuwar shigarwa tana nuna haɗin da ya buɗe rabi, wanda yawanci yana nufin amsar ba ta dawo ba.
curl -sv http://10.50.1.17/ -o /dev/null
ss -tn dst 10.50.1.17
conntrack -L -d 10.50.1.17Haɗi biyu ko uku masu nasara suna tabbatar da lissafin, amma ba su ce kome ba game da dorewa ko injiniya na gaba. Adana ka'idojin a inda tsarin tiyo yake karanta su, wanda a Debian da Ubuntu yana nufin iptables-save > /etc/iptables/rules.v4 tare da netfilter-persistent a kunne. Taswirar da ke ɓacewa a sake kunnawa ta fi muni fiye da babu, domin katsewar tana zuwa ba tare da wani sabon canji da za a zarge shi ba.
Bar rubutu kusa da ka'idojin: rukunin alias, ainihin rukunin, dalilin ma'auratan da wane ɓangare zai iya farawa. Wannan rubutun yana raba ƙira da tarin ka'idoji da babu wanda ke ƙarfin sharewa. Yana kuma warware tambayar daga baya, lokacin da shafin nesa ya ƙara host kuma adireshin da babu wanda ya saita yana amsawa tuni. Idan rubutun ya ce gefen nesa yana buƙatar hanyar dawowa, mutum na gaba zai san cire ka'idar masquerade yana karya haɗi. Rubutu a nan arha ne; sake gano dogaro da NAT da ƙarfe uku na safe ba haka ba ne.