Menghapus rute default harus melakukan ini. Anda dapat menampilkan tabel perutean dengan /sbin/route
, dan hapus default dengan:
sudo /sbin/route del default
Itu akan membuat sistem Anda terhubung ke jaringan lokal, tetapi tidak tahu ke mana harus mengirim paket yang ditujukan ke luar. Ini mungkin mensimulasikan situasi "tanpa akses eksternal" dengan sangat akurat.
Anda dapat mengembalikannya dengan route add
(mengingat apa seharusnya gateway Anda), atau hanya dengan memulai ulang jaringan. Saya baru saja mencoba sistem dengan NetworkManager, dan mengubah default berfungsi dengan baik, dan saya dapat memulihkannya hanya dengan mengklik ikon panel dan memilih kembali jaringan lokal. Mungkin saja NM melakukan ini sendiri di acara lain, jadi berhati-hatilah.
Pendekatan lain adalah dengan menggunakan iptables
aturan untuk memblokir lalu lintas keluar. Tapi menurut saya pendekatan perutean mungkin lebih baik.
Anda menulis
Jadi, bagaimana cara mensimulasikan "tanpa akses eksternal" di mesin pengembangan saya?
Bagaimana cara "menonaktifkan" antarmuka ethernet saya dan mengaktifkannya kembali nanti dengan mudah?
Apakah ini dua pertanyaan atau satu pertanyaan? Saya tidak yakin apa yang Anda maksud dengan simulate "no external access"
. Namun, untuk menonaktifkan antarmuka ethernet, Anda cukup melakukannya
#ifdown eth0
#ifup eth0
atau apapun perangkat internet anda. Ini akan menurunkan dan menaikkan antarmuka ethernet Anda.
Anda dapat menjalankan kode Anda di mesin virtual (Mode Pengguna Linux, VServer, OpenVZ, VirtualBox, VMWare, KVM, ...) yang Anda sediakan hanya dengan antarmuka jaringan khusus host (yaitu tidak ada perutean dari VM ke mana pun kecuali mesin host ).
Jika Anda menjalankan aplikasi sebagai pengguna khusus appuser
, Anda dapat membatasi akses jaringan pengguna tersebut. Pastikan Anda memiliki iptables
(Ubuntu:iptables Instal iptables http://bit.ly/software-small) dan iproute2 (ip
perintah) (Ubuntu:iproute Instal iproute http://bit.ly/software-small, iproute-doc Instal iproute-doc http://bit.ly/software-small) diinstal. Kemudian Anda dapat menggunakan iptables
untuk menandai lalu lintas keluar dari proses yang berjalan sebagai appuser
, dan ip rule
dan ip route
untuk menyiapkan tabel perutean alternatif untuk pengguna tersebut.
ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
iptables -t mangle -A OUTPUT -m owner --uid-owner appuser -j MARK --set-mark 1
(Catatan:belum teruji. Lihat juga lebih banyak contoh perusakan paket IP Linux.)