Bagaimana VPN meneruskan lalu lintas jaringan? (Lapisan 3)

8

Saya mencari beberapa info tentang bagaimana VPN (Virtual Private Network) meneruskan lalu lintas jaringan melalui VPS (Virtual Private Server) -nya.

Ambil contoh di mana Anda terhubung ke VPN. Anda membuat permintaan ke situs web, yang kemudian turun ke tumpukan jaringan ke Layer 3.

Kami memiliki paket IP - ia telah mendapatkan tajuknya, termasuk alamat tujuan, dan payload.

Jika Anda mengubah alamat tujuan paket IP ke alamat ip VPS, bagaimana server meneruskan permintaan ke alamat tujuan asli?

Satu-satunya hal yang dapat saya pikirkan adalah bahwa pada Layer 3 (IP Layer), alamat tujuan header diubah ke alamat ip VPS, dan kemudian alamat tujuan asli ditambahkan ke muatan paket?

Apakah ini tidak berarti panjang paket dan header checksum dari paket kemudian perlu dihitung ulang dan paket IP dimodifikasi lagi?

Dan kemudian VPS melakukan pemetaan terbalik paket untuk berkumpul dan membuat permintaan asli di server.

Ini sepertinya akan ada waktu latensi tinggi yang terkait dengannya?

Mungkin saya kehilangan beberapa aspek teknis tentang cara kerjanya, dapatkah orang lain menjelaskannya?

cg14
sumber

Jawaban:

7

Ambil contoh GRE-Header (GRE adalah protokol yang digunakan untuk mewujudkan VPN - ini tidak sering digunakan karena tidak aman dengan cara apa pun, tetapi konsep dengan enkapsulasi hampir sama di setiap koneksi VPN (demikian juga dengan IPsec misalnya) ):

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, paket asli akan dienkapsulasi ke dalam IP-Packet lain.

Mari kita asumsikan ada dua jaringan / router (A dan B, sebuah router dapat menjadi VPS) yang terhubung satu sama lain melalui VPN (situs-ke-situs).

Jika host di jaringan A ingin mengakses FTP-Server di Jaringan B, host di jaringan A akan mengirim paket, di mana alamat tujuan adalah alamat IP dari FTP-Server dan alamat sumbernya adalah miliknya.

Kemudian paket asli datang ke VPN-Gateway (mungkin router-nya), yang merangkum paket asli ini menjadi misalnya paket IPv4 di mana alamat tujuan adalah VPN-Gateway (jaringan B) dan alamat sumber adalah miliknya. Dengan begitu, paket tersebut dapat melakukan perjalanan melalui internet ke VPN-Gateway lainnya (jaringan B). Di sini, protokol asli / header atau tipe paket tidak masalah, karena akan dienkapsulasi dengan header IPv4 untuk melakukan perjalanan melalui internet dan router lain tidak akan peduli dengan protokol / header asli karena mereka hanya melihat "baru" Header IPv4.

Sebuah checksum baru untuk paket "baru" harus dihitung yang akan ditambahkan, jika tidak, ia tidak akan dapat melakukan perjalanan melalui internet (seperti misalnya PPP kadang-kadang digunakan antara titik-titik di internet, yang menghitung checksum). Jadi harus ada dua checksum di seluruh paket.

Dengan IPsec (yang hampir selalu digunakan untuk koneksi VPN), paket asli akan dienkripsi (kebanyakan melalui AES) dan header teks biasa (header "baru" untuk bepergian melalui internet) ditambahkan. Itu harus plaintext sehingga dapat diarahkan dengan benar. Untuk itu, checksum baru harus dihitung juga (karena checksum asli dienkripsi).

Ketika telah mencapai VPN-Gateway lainnya (jaringan B), Header-VPN dipisahkan dan paket asli dikirim ke jaringan (ke FTP-Server).

Lihat aku
sumber
Jadi Anda mengatakan router bertanggung jawab untuk mengenkapsulasi paket, dan bukan perangkatnya?
cg14
1
@ cg14 pertanyaan bagus! Ada dua jenis VPN, yaitu VPN site-to-site (VPN Gateway ke VPN Gateway) (sebagian besar router ke router)) dan VPN end-to-site (perangkat akhir terhubung melalui VPN ke VPN-Gateway). Dengan Site-to-site, router bertanggung jawab untuk enkapsulasi paket. Dengan end-to-site, perangkat itu sendiri menciptakan "paket asli" yang akan dienkapsulasi oleh klien VPN yang diinstal di dalamnya. Setelah enkapsulasi, perangkat mengirim paket.
watchme
Itu menarik. Untuk VPN end-to-site, pada lapisan apa paket asli dienkapsulasi? Dan secara teori, jika saya ingin mengatakan, mentransmisikan beberapa pengenal di luar ip, seperti id perangkat klien VPN, akankah ada cara untuk menambahkan informasi itu ke payload sedemikian rupa sehingga payload mungkin | Header IP | Header GRE | info yang disuntikkan + paket asli | Dan, tergantung di mana injeksi data khusus ke paket enkapsulasi berlangsung, akan menentukan apakah Anda perlu menghitung ulang checksum dan panjang paket gre yang saya asumsikan.
cg14
Sayangnya saya tidak tahu persis apa yang Anda maksud. Tapi saya akan sedikit menjelaskan IPsec untuk menjawab pertanyaan "di layer apa". Ketika klien mengirim paket asli (misalkan TCP, IP, Ethernet) itu akan dienkripsi sepenuhnya. Ini adalah "muatan" baru. Jadi, dapatkah Anda mengirim muatan normal melalui internet? Mungkin tidak. Anda akan memerlukan beberapa informasi. Informasi ini kemudian ditambahkan oleh klien-VPN - jadi informasi lapisan 4,3 dan 2!
watchme
@ cg14 Apakah semuanya jelas bagi Anda? :) ... (Oh saya baru sadar bahwa saya belum menandai Anda dalam jawaban saya untuk pertanyaan "pada lapisan apa" Anda - maaf)
watchme
6

Jadi jawaban singkat untuk pertanyaan Anda adalah enkapsulasi. Artinya ada satu set header paket yang diletakkan di sekitar paket yang Anda kirim ke situs web yang dilepas oleh titik akhir VPN.

Pikirkan seperti ini:

-----------------------------------------------
| src_ip=2.2.2.2, dest_ip=3.3.3.3             |
|---------------------------------------------|
|| src_ip=10.10.10.10, dest_ip=5.5.5.5       ||
|| Data goes here. This could be a HTTP GET  ||
|| or pretty much anything.                  ||
|---------------------------------------------|
-----------------------------------------------

Klien VPN Anda yang berjalan pada mesin lokal Anda akan memberi Anda alamat IP baru (10.10.10.10) dan mengubah tabel rute Anda sedemikian rupa sehingga rute default menuju terowongan yang dibuat. Kemudian akan mengirimkan lalu lintas ke server VPN atau dalam contoh Anda VPS (3.3.3.3). Seringkali paket Anda akan memiliki NAT yang diterapkan padanya ketika itu di-enkapsulasi sehingga ke server tujuan Anda (5.5.5.5) akan muncul lalu lintas yang datang dari IP tujuan lalu lintas yang dienkapsulasi (3.3.3.3) Ini adalah bagaimana lalu lintas kembali kepada Anda dengan pergi ke server VPN terlebih dahulu.

Ke pertanyaan ketiga Anda. Karena Anda meletakkan paket tambahan pada dasarnya di luar panjang dan checksum dihitung pada paket yang dihasilkan. Jadi ya ada dua panjang dan dua checksum. Adapun panjang maksimum yang bisa dilakukan oleh VPS mengatakan menggunakan MTU ini atau melalui penemuan MTU seperti biasa.

Adapun latensi. Anda tidak dapat memecahkan fisika. Anda akan memperhitungkan overhead Anda untuk mendapatkan VPS dan menjalankan melalui tumpukan jaringannya. Walaupun kelihatannya akan ada latensi tinggi, terkadang hal ini tidak terjadi. Jika VPS Anda secara topologi sejalan dengan kemana paket itu menuju, mungkin ada overhead minimal yang ditambahkan. Misalnya jika Anda berada di Seattle dan VPS Anda berada di New York dan situs web yang ingin Anda ajak bicara ada di London. Tetapi jika Anda pergi dari Seattle ke New York untuk kembali ke situs web di Seattle maka ada latensi tambahan dari perjalanan melintasi Amerika Serikat.

Nick Pappin
sumber
3

Paket dibuat oleh lapisan transport dan diturunkan ke lapisan jaringan. Tuan rumah melihat tabel peruteannya dan mengirimkannya ke antarmuka virtual yang dibuat oleh perangkat lunak VPN.

Perangkat lunak VPN mengambil paket dari antarmuka virtual. Ini dapat mengenkripsi atau menambahkan header sendiri, lalu meneruskannya kembali ke tumpukan jaringan sebagai muatan. Bergantung pada implementasi VPN tertentu, ia mungkin meneruskan muatan ini ke lapisan transportasi atau mungkin memotong lapisan transportasi dan langsung menuju ke lapisan jaringan.

Lapisan lain dari header lapisan jaringan kemudian ditambahkan ke paket penargetan ke arah server VPN. Paket tersebut kemudian dicari lagi di tabel routing dan dikirim ke internet (jika VPN adalah "cakupan penuh" maka perangkat lunak VPN harus berhati-hati untuk mengatur tabel routing dengan cara lalu lintas VPN keluar dari jaringan). antarmuka yang menghadap internet nyata daripada kembali ke perangkat lunak VPN).

Ketika paket enkapsulasi tiba di server VPN, paket itu dikembalikan ke perangkat lunak VPN. Header "luar" dihapus dan paket dilewatkan kembali ke tumpukan jaringan melalui antarmuka virtual.

Setelah itu terserah tumpukan jaringan di server VPN apa yang harus dilakukan dengan itu. Dalam kasus VPN yang digunakan untuk akses internet, tumpukan jaringan di server VPN kemungkinan akan dikonfigurasi untuk bertindak sebagai router NAT, sehingga memodifikasi sumber paket dan mengirimkannya kembali ke Internet.

Ketika balasannya kembali banyak proses yang sama terjadi. Paket datang, proses NAT terbalik, dilewatkan kembali ke perangkat lunak VPN melalui antarmuka virtual, itu dienkapsulasi dan dikirim kembali ke perangkat lunak VPN pada klien yang deencapsulate dan mengirimkannya kembali ke tumpukan jaringan sehingga dapat delieverd ke aplikasi klien.

Peter Green
sumber
ok, well, itu mungkin penjelasan yang lebih baik dari saya!
watchme