Saya memiliki server CentOS 7 dengan dua antarmuka jaringan. Satu menunjuk ke LAN kami (ens32) dan yang lainnya ke DMZ kami (ens33).
Sementara antarmuka LAN berfungsi dengan baik, saya perhatikan bahwa sepertinya lalu lintas hanya akan melintasi antarmuka DMZ jika masuk sebagai root, dan saya tidak yakin apa artinya ini atau apakah itu memiliki efek bersih pada masalah lain yang saya alami. .
Misalnya, jika saya menjalankan:
curl --interface ens32 ipecho.net/plain
sebagai pengguna non-root, saya akan mendapatkan IP publik untuk antarmuka tersebut.
Jika saya menjalankan:
curl --interface ens33 ipecho.net/plain
sebagai pengguna non-root, perintah tampaknya terhenti dan saya terpaksa menghentikan prosesnya.
Jika saya menjalankan perintah sebelumnya sebagai root, saya akan mendapatkan output yang diharapkan yang merupakan IP publik untuk antarmuka itu.
Adakah yang bisa menjelaskan apa yang mungkin terjadi di sini?
Jawaban yang Diterima:
Seperti yang dapat dilihat di curl
resmi halaman, untuk menentukan/mengikat ke antarmuka tertentu, ada kebutuhan untuk memiliki CAP_NET_RAW atau dijalankan sebagai root
.
Oleh karena itu root
dapat melakukan pengikatan/perutean, dan itu tidak berfungsi dengan pengguna biasa untuk Anda.
Ketika pengguna biasa menggunakan curl
, tanpa izin untuk menggunakan --interface
sebagai gantinya, aturan perutean default server akan berlaku untuk operasi itu.
Dari halaman resmi curl curl.1 halaman manual:
–antarmuka
Lakukan operasi menggunakan antarmuka yang ditentukan. Anda dapat memasukkan
nama antarmuka, alamat IP, atau nama host. Contohnya seperti:curl –interface eth0:1 https://www.example.com/
Jika opsi ini digunakan beberapa kali, yang terakhir akan digunakan.
Di Linux dapat digunakan untuk menentukan VRF, tetapi biner harus
memiliki CAP_NET_RAW atau dijalankan sebagai root.Informasi lebih lanjut tentang
VRF Linux:https://www.kernel.org/doc/Documentation/networking/vrf.txt