Untuk mengatasi masalah ini Anda akan perlu mengatur kedua iptables dan aturan routing. Masalah khusus yang Anda temui adalah bahwa paket SSH keluar sedang dialihkan melalui antarmuka terowongan VPN anonim Anda, bukan antarmuka Ethernet Anda. Ini terjadi karena perangkat lunak VPN Anda mengatur aturan perutean untuk mengirim semua dan semua lalu lintas yang tidak tertangani melalui antarmuka terowongan. Baik untuk menganonimkan lalu lintas jaringan Anda; buruk untuk membuat koneksi SSH ke komputer Anda.
Ada beberapa cara untuk memperbaiki masalah ini, tetapi saya akan membagikan kepada Anda cara yang berhasil untuk saya dalam situasi yang sama. Inilah yang perlu kita lakukan:
- Buat tabel aturan IP baru untuk menangani lalu lintas non-VPN
- Tambahkan aturan IP untuk mencari tabel no-VPN kami untuk setiap paket yang ditandai dengan masker netfilter tertentu
- Tambahkan rute IP yang mengarahkan semua lalu lintas di tabel no-VPN kami untuk menggunakan antarmuka Ethernet Anda alih-alih terowongan
- Tambahkan aturan iptables untuk menandai semua lalu lintas SSH dengan masker netfilter kami yang ditunjuk
Catatan: Saya bekerja dengan Raspbian saat melakukan hal berikut, jadi Anda mungkin perlu menyesuaikan sedikit perintah agar sesuai dengan distro Anda.
Membuat tabel aturan IP baru
Mulailah dengan memeriksa file definisi tabel iproute2. Kami ingin memastikan bahwa kami tidak menggunakan nama atau nomor tabel aturan yang ada.
cat /etc/iproute2/rt_tables
Anda mungkin akan melihat sesuatu seperti ini:
# reserved values
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
Pilih nomor acak dan nama untuk tabel aturan baru Anda - apa pun yang tidak digunakan di atas. Saya akan menggunakan nomor 201 dan nama novpn
untuk sisa jawaban ini.
Tambahkan definisi langsung ke file definisi atau edit dalam editor teks pilihan Anda:
echo "201 novpn" >> /etc/iproute2/rt_tables
Tambahkan aturan IP baru untuk mencari tabel no-VPN
Periksa aturan ip yang ada yang berhubungan dengan masker netfilter:
ip rule show | grep fwmark
Jika grep tidak menghasilkan apa-apa, berarti Anda aman. Jika mencetak beberapa baris, perhatikan nomor heksadesimal di sebelah kanan kata fwmark
di setiap baris. Anda harus memilih nomor yang saat ini tidak digunakan. Karena saya tidak punya aturan fwmark yang ada, saya memilih nomor 65.
ip rule add fwmark 65 table novpn
Apa yang dilakukan adalah menyebabkan setiap paket dengan netfilter mask 65 mencari novpn
tabel baru kami untuk instruksi tentang cara merutekan paket.
Arahkan semua lalu lintas di tabel baru kami untuk menggunakan antarmuka Ethernet
ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn
Yang penting untuk diperhatikan di sini adalah dev eth0
. Ini memaksa semua lalu lintas yang melewati novpn
tabel untuk hanya menggunakan antarmuka Ethernet perangkat keras, alih-alih antarmuka terowongan virtual yang dibuat VPN Anda.
Sekarang adalah saat yang tepat untuk membersihkan cache iproute Anda, untuk memastikan aturan dan rute baru Anda segera berlaku:
ip route flush cache
Instruksikan aturan firewall untuk menandai semua lalu lintas SSH dengan masker netfilter yang ditunjuk
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65
Ada terlalu banyak opsi di sini untuk saya jelaskan secara mendalam. Saya sangat menyarankan Anda untuk membaca halaman manual untuk iptables untuk mengetahui apa yang terjadi di sini:
man iptables
Singkatnya: kita menambahkan aturan output ke tabel firewall mangle (untuk penanganan paket khusus) yang menginstruksikannya untuk menandai setiap paket TCP yang berasal dari port sumber 22 dengan netfilter mask 65 yang ditunjuk.
Apa selanjutnya?
Pada titik ini, Anda harus siap untuk menguji SSH. Jika semuanya berjalan dengan baik, Anda harus bertemu dengan prompt "login as".
Demi keamanan, saya sarankan Anda menginstruksikan firewall Anda untuk menjatuhkan semua permintaan SSH yang masuk dari antarmuka terowongan:
iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP
Perhatikan bahwa semua instruksi di atas bersifat sementara (kecuali untuk pembuatan tabel aturan ID) - mereka akan menghapus waktu berikutnya Anda me-restart komputer Anda. Menjadikannya permanen adalah latihan yang saya serahkan kepada Anda.