libvirt зочны DNS-ийг тэмдэгт суурилсан VPN галт ханаар блоклохыг засах
Тэмдэгт суурилсан VPN галт хана нь зочны DNS-ийг аль ч шүүлтүүрийн гинжин хэлхээ үүнийг харахаас өмнө хаядаг. mangle давуу эрхтэй нэг дүрэм асуулга болон түүний хариуг тэмдэглэж, таны LAN-ыг нээхгүй.
Анхдагч libvirt сүлжээний зочдод WireGuard интерфэйс өргөгдөх хүртэл нэрсийг төгс шийддэг, дараа нь бүх хайлт нэг л газарт гацдаг. dnsmasq одоо ч 192.168.122.1:53 дээр сонсож байна, зочин одоо ч тэр хаягийг шийдэгч болгон ашиглаж байна, асуулга одоо ч ирж байна. Өөрчлөгдсөн нь хост өөрийнх нь дээд урсгалын асуулга, эсвэл түүнд өгөх хариу нь одоо таны засах гэж бодож болох аль ч шүүлтүүрийн гинжин хэлхээнээс өмнө үнэлэгддэг дүрмээр хаягдаж байна. Гарах зам нь хариу өвлөн авдаг холболт дээр хангалттай эрт хэрэглэсэн тэмдэг юм.
Туннель өргөгдөх мөчид зочдод DNS алдагдана
Ямар нэг зүйлийг өөрчлөхөөс өмнө хэлбэрийг баталгаажуул. Туннелийг буулга, зочны dig @192.168.122.1 example.com ажиллуул, түүний хариулж байгааг хар. Туннелийг өргө, давта, хугацаа дуусаж байгааг хар. Энэ хос үр дүн нэг алхамаар эвдэрсэн libvirt сүлжээ, буруу шийдэгчийн хаяг, үхсэн dnsmasq-ыг хасаж байна.
Дараа нь хост талыг хар. Хэрэв dnsmasq асуулга болон түүний дээд урсгал руу дамжуулалтыг бүртгэж байвал пакет ирсэн бөгөөд алдаа гарах зам дээр байна. Хэрэв dnsmasq юу ч бүртгэхгүй бол зочны асуулга орох зам дээр хаягдаж байгаа бөгөөд үл хамаарах зүйл энэ өгүүллийн тэмдэглэсэн дэгээнээс өөр дэгээнд хамаарна.
Хожуу гинжин хэлхээний accept дүрэм яагаад хэзээ ч ажиллахгүй вэ
Тэмдэгт суурилсан VPN галт хана пакетын тэмдэг эсвэл холболтын тэмдгийг харж шийддэг, таны эх хаягийг биш. Хүлээгдэж буй тэмдэггүйгээр физик интерфэйс дээр ирэх бүхнийг татгалздаг бөгөөд тэр татгалзал нь тэмдгийн шалгалтыг эзэмшдэг дүрмийн багцад болдог. Хожуу гинжин хэлхээнд нэмсэн ip saddr 192.168.122.0/24 accept мөр тэр пакетын хувьд хэзээ ч авч үзэгдэхгүй, тиймээс илэрхий дүрэм зөв харагдаж, юу ч өөрчлөхгүй.
Ямар нэг зүйл ажиллах хүртэл өргөтгөх нь хоёр дахь урхи. Хостын орох замд бүх libvirt дэд сүлжээг хүлээн авах нь зочдод хостын бүх үйлчилгээг нээж өгдөг бол бодит хэрэгцээ нь нэг порт.
Нарийн үл хамаарах зүйлийг боломжтой болгодог механизм нь холболтыг хянах. Пакет дээр ct mark тохируулахад утга нь зөвхөн пакет дээр биш conntrack бичлэгт хадгалагддаг тул тэр холболтын пакет бүр дараа нь түүнийг агуулна, хостноос зочин руу буцах хариуг оролцуулан. Энэ бол бүх заль: хүсэлтийг нэг удаа тэмдэглэ, буцах зам аль хэдийн тэмдэглэгдсэн.
VPN хүснэгт харахаас өмнө асуулгыг тэмдэглэ
Үл хамаарах зүйлийг өөрийн хүснэгтэд хий, хожуу уншигч VPN дүрмийг шинжлэхгүйгээр олох боломжтой:
table inet allowedLocal {
chain guest_dns {
type filter hook input priority mangle; policy accept;
ip saddr 192.168.122.0/24 meta l4proto { tcp, udp } \
th dport 53 ct mark set 0x00000f41
}
}
priority mangle сөрөг утгатай бөгөөд энэ нь энэ гинжийг VPN багц тэг давуу эрхээр суулгадаг энгийн шүүлтүүрийн гинжүүдийн өмнө байрлуулна. Дэгээнүүдийн дараалал л дүрмийг үр дүнтэй болгодог; VPN гинжний дараа эрэмбэлэгдэх гинжин дэх ижил дүрэм зөвхөн чимэглэл.
Тэмдгийн дугаар өөрөө шилжих боломжгүй. Суулгасан VPN дүрмүүд өөрсдийн трафикт хүлээн зөвшөөрдөг утгыг ав, амьд дүрмийн багцаас унш, ашигла. Буруу тэмдэг нь цэвэр ачаалагдаж, асуулга бүрт тохирч, юу ч нэвтрүүлэхгүй дүрэм үүсгэдэг.
Нүхийг 53 портын өргөнтэй байлга
Бичсэнээр энэ нь libvirt дэд сүлжээнээс хост руу TCP эсвэл UDP 53 портоор DNS-ийг зөвшөөрч, өөр юу ч биш. Энэ нь зочдод туннелиас гадуур интернетэд хүрэх боломж олгохгүй, хостод зочид руу холболт нээх боломж олгохгүй. Хэрэв зочинд дараа нь өөр хост үйлчилгээ хэрэгтэй бол энэ дүрмийг сулруулахын оронд тэр очих портыг нэрлэсэн тусдаа дүрэм нэм.
Юу солилцож байгаагаа шударга байлга. Шийдэгчид хүрч чадах зочин DNS асуулгаар дурын өгөгдлийг туннелчилж болно, мөн энэ үл хамаарах зүйл нь VPN хил дэх санаатай цоорхой, орон нутгийн сүлжээ итгэлтэй гэсэн мэдэгдэл биш. Эх сурвалжийг 192.168.122.0/24 болгож хязгаарлах нь цоорхойг бусад бүх орон нутгийн дэд сүлжээнээс хол байлгаж, аюул танд чухал бол тэр эх сурвалжийн эсрэг асуулгыг тоолох нь хямд.
Үүнийг дахин ачаалалтаас амьд үлдээж, хоёр хагасыг нь нотол
Shell промпт дээр бичсэн дүрэм дараагийн ачаалалтад алга болдог, VPN интерфэйс аль хэдийн трафик нэвтрүүлж эхэлсний дараа ачаалагдсан дүрэм эхний холболт дээр уралдаанд хожигддог. Хүснэгтийг хостын байнгын nftables тохиргоонд, эсвэл VPN үйлчилгээнээс өмнө эрэмбэлэгдсэн unit-д хий, дарааллыг таамаглахын оронд шалга.
Шалгалтад гурван тусдаа хариу хэрэгтэй. Гинж ачаалагдсан, эхэнд эрэмбэлэгдсэнийг батла, conntrack бичлэг тэмдгийг хоёр чиглэлд харуулж байгааг батла, зочны хайлт хаяг буцааж байгааг батла. Дараа нь нөгөө хагасыг батла: нийтийн хост руу зочны энгийн вэб трафик туннель доош эсвэл блоклож байх үед одоо ч бүтэлгүйтдэг. Хэрэв DNS ажиллаж, бусад бүх зүйл алдагдаж байвал таны дүрэм дээрхээс өргөн.
Тэмдэг тавьсны дараа ч хайлт бүтэлгүйтсээр байвал эх сурвалжийг өргөтгөх хүслийг эсэргүүц. dnsmasq хаашаа дамжуулж байгаа, зочны шийдэгч 192.168.122.1 рүү эсвэл хэн нэгний бичсэн нийтийн хаяг руу зааж байгаа, асуулга хостод хүрч байгаа эсэхийг шалга. Тэмдэглэлт пакетыг нэвтрүүлдэг бөгөөд өөр юу ч биш, тиймээс муу дээд урсгал эсвэл эвдэрсэн виртуал сүлжээ хэдэн дүрэм нэмсэн ч эвдэрсэн хэвээр.