Saat ini saya memiliki VPS dengan IP statis tunggal. Apakah skenario berikut mungkin terjadi jika saya membeli IP statis kedua?
Misalkan IP A pada eth0: 0 adalah 1.2.3.4 dan IP B statis pada eth0: 1 adalah 5.6.7.8 . Saya ingin merutekan semua lalu lintas ke IP A ke router rumah saya, tanpa menggunakan server-side NAT. Saya berpikir untuk membangun terowongan GRE (diamankan dengan IPsec) antara router rumah saya dan IP B. Paket IP yang masuk pada IP A kemudian harus dilewatkan di dalam terowongan. Saya pikir diagram harus membuat ini lebih jelas: Biasanya, ini akan menjadi kasus yang jelas menggunakan Site-to-Site-VPN dan menggunakan NAT pada VPS, tapi saya sebenarnya tidak ingin menggunakan sisi server NAT . Sebagai gantinya, saya ingin router rumah saya melakukan srcnat pada keluar dan dstnat pada lalu lintas masuk tertentu. VPS seharusnya hanya "melewati" paket IP yang masuk dan keluar.
Saya membayangkan aliran paket sebagai berikut:
Host di dalam LAN 192.168.100.0/24 ingin mengirim paket ke, katakanlah, 8.8.8.8
Router rumah gosok ini ke IP statis A (1.2.3.4)
paket melewati gre1 dan memasuki VPS
VPS meneruskan paket melalui eth0: 0, membiarkan bidang IP sumber tidak dimodifikasi
balasan dari 8.8.8.8 tiba di VPS dengan IP tujuan 1.2.3.4
VPS mengambil paket dan memasukkannya ke gre1, tanpa melakukan NAT
router rumah memproses paket dan memeriksa apakah itu koneksi yang dibuat atau terkait dan meneruskannya ke klien LAN yang sesuai.
Saya kira saya bisa menambahkan IP lain pada antarmuka gre1 pada router saya, yaitu 1.2.3.4, jadi itu akan 1) menerima paket IP dengan nilai tujuan ini dan 2) mengirim paket keluar dengan IP itu alih-alih IP terowongan (10.0. 0,2)?
Singkatnya, saya hanya ingin semua paket yang tiba di eth0: 0 tiba tanpa modifikasi di gre1 pada router rumah saya. Apakah ini mungkin dengan cara yang dijelaskan?
BTW, saya menggunakan router Mikrotik di rumah, jika itu informasi tambahan.
Terima kasih atas bantuan Anda!
sumber
Jawaban:
Pertama, berhentilah memikirkan eth0 dan eth0: 1 sebagai antarmuka terpisah. Berhenti menggambar mereka sebagai antarmuka terpisah. Mereka tidak. Anda memiliki satu antarmuka eth0 dengan dua alamat IP di atasnya - sisanya adalah ilusi yang dimainkan Linux pada alat-alat lama seperti ifconfig .
Dengan itu, ini cukup sederhana di sisi server.
Untuk mengonfigurasi ini di server Anda, mulai dengan menghapus alamat 5.6.7.8 dari eth0. Anda tidak ingin server menganggap paket-paket itu miliknya dan mengkonsumsinya; Anda ingin itu bertindak sebagai router murni, dan memiliki alamat yang dialihkan ditugaskan untuk antarmuka lokal adalah persis apa router tidak perlu.
Sekarang tambahkan rute statis untuk alamat di atas terowongan Anda:
Itu saja (hampir). Satu-satunya komplikasi yang tersisa adalah bahwa server masih perlu menjawab pertanyaan ARP untuk alamat ini yang berasal dari gerbang lokal perusahaan hosting Anda. Untuk itu Anda memerlukan fitur proxy-ARP :
Ini memungkinkan proxy-ARP untuk satu alamat. Jangan gunakan
sysctl net.ipv4.conf.all.proxy_arp=1
untuk mengaktifkannya secara global; yang akan menyebabkan respons proxy-ARP untuk semua yang memiliki rute untuk server Anda, yang mungkin nyaman dalam beberapa kasus tetapi tidak perlu dalam kasus ini.(Sebagai catatan tambahan, userspace parpd atau ndppd mungkin lebih mudah dipahami daripada proxy-ARP / NDP berbasis kernel.)
Konfigurasi yang lebih kompleks mungkin diperlukan pada router klien , karena harus memilih antara dua gateway default (rute langsung versus GRE) tergantung pada alamat IP sumber.
Untungnya, Mikrotik RouterOS memiliki fitur perutean kebijakan Linux untuk setidaknya IPv4 (tetapi masih belum untuk IPv6), sehingga Anda dapat mengikuti
ip rule
instruksi Linux yang tersebar luas dan memetakannya 1: 1 ke perintah RouterOS. Pendeknya:Tambahkan rute default melalui terowongan GRE ke rute yang berbeda
mejamark (RouterOS menyebutnya 'tanda rute'):Tambahkan aturan kebijakan untuk memilih perutean ini
menandaitabel (RouterOS ...) untuk paket dari alamat sumber ini:Sebuah komentar menyebutkan bridging. Itu tidak akan berhasil karena dua alasan.
GRE adalah terowongan Layer3 yang tidak mengangkut header seperti Ethernet dan karenanya tidak dapat dijembatani. Ada varian Layer2 itu, seperti Linux gretap dan Mikrotik eoip - sayangnya ini saling tidak kompatibel meskipun keduanya berbasis GRE.
Komentar tersebut sebenarnya menyebutkan tun , mungkin dengan asumsi bahwa tunnel adalah OpenVPN (GRE bukan OpenVPN), tetapi tun juga merupakan antarmuka Layer3. Sekarang ada versi Layer2 - antarmuka tap - dan Linux OpenVPN sebenarnya dapat dikonfigurasi untuk menggunakannya dan menjadi VPN Layer2 ... tetapi implementasi RouterOS OpenVPN tidak mendukung mode itu.
Selain itu, karena eth0: 1 bukan antarmuka yang terpisah, itu tidak dapat dijembatani tanpa juga menjembatani eth0 itu sendiri. Bisakah antarmuka virtual macvlan dibuat dari eth0 dan kemudian dijembatani dengan terowongan? Tidak yakin. Mungkin akan lebih banyak masalah daripada nilainya.
sumber