Tag Archives: routing tables

Mengatasi Konflik Subnet antara Jaringan Lokal dan VPN di MacOS

Baru-baru ini saya menemukan masalah ketika mencoba mengakses beberapa server dengan VPN (Virtual Private Network) kantor menggunakan wifi di rumah dari MacBook. Jika menggunakan wifi kantor, biasanya tidak ada masalah.

Untuk browsing biasa, sebenarnya tidak ada masalah. Namun ketika mencoba mengakses via SSH ke server yang berada di jaringan VPN, selalu gagal terhubung. Saya ping juga pun jaringan gagal menemukan server yang dimaksud.

Gagal ping server gitlab yang ada di IP 192.168.0.104

Sebagai informasi, di kantor saya menggunakan layanan internet dari Megavision. Sementara di rumah saya menggunakan layanan internet dari First Media. Saya sempat berpikir apakah karena faktor settingan router-nya ya.

Selanjutnya saya mencoba mengetes koneksi VPN tersebut dari HP Android saya. Masih di jaringan wifi yang sama. Ternyata saya bisa mengakses server-server tersebut. Artinya tidak ada masalah pada settingan router wifi.

Saya mencoba menge-ping IP address MacBook dari HP Android saya. Tidak bisa. IP address tidak ditemukan. Lucunya, jika saya menge-ping IP address HP Android dari MacBook, ping berhasil.

Ping MacBook di IP 192.168.0.18 dari HP Android gagal
Ping HP Android di IP 192.168.0.9 dari MacBook berhasil

Di situ saya menyadari ternyata default gateway pada kedua device ini berbeda. HP Android menggunakan default gateway dari jaringan VPN. Sementara MacBook masih menggunakan jaringan lokal (local network). Karena itu MacBook masih bisa menemukan device HP Android, sedangkan HP Android tidak bisa menemukan IP MacBook.

Hal tersebut bisa terjadi, khususnya di MacBook, karena subnet local network di wifi rumah saya (192.168.0.1/24) juga di-cover oleh jaringan VPN tersebut sehingga terjadi konflik. Itulah sebabnya saya tidak bisa terhubung ke server di jaringan VPN dengan IP address 192.168.0.xxx. Sedangkan untuk server dengan IP address di subnet yang lain seperti 172.19.211.xxx, saya bisa mengaksesnya.

Tapi saya masih belum paham kenapa MacBook menggunakan default gateway dari local network. Sedangkan HP Android otomatis menggunakan default gateway dari jaringan VPN.

Kemudian saya menjadi kepikiran. Jaringan wifi kantor kan menggunakan subnet 192.168.1.1/24. Pantas saja koneksi VPN-nya lancar-lancar saja.

Solusi yang pasti untuk masalah ini sebenarnya adalah dengan mengubah subnet dari jaringan wifi rumah ke subnet selain 192.168.0.1/24 (dan subnet lain yang berpotensi konflik dengan subnet di dalam jaringan VPN). Namun dalam beberapa kasus, mungkin kita tidak memiliki akses untuk melakukan pengaturan tersebut.

Ada alternatif cara lain yang juga bisa menjadi solusi. Kita bisa menambahkan route pada routing table MacBook agar semua traffic ke IP address di subnet 192.168.0.1/24 diarahkan melalui jaringan VPN.

Routing tables ketika awal terhubung ke VPN

Dari routing tables di atas kita bisa melihat IP address 192.168.0.xxx (Destination 192.168.0) diasumsikan berada dalam local network yang sama dengan host (link#4). Gateway tersebutlah yang ingin kita ubah agar traffic diarahkan ke jaringan VPN.

Sebelumnya, kita perlu menghapus terlebih dahulu route untuk destinasi tersebut dengan menjalankan command berikut dari terminal:
$ sudo route -n delete -net 192.168.0/24
delete net 192.168.0

Selanjutnya kita menambahkan kembali route dengan destinasi tadi, tapi kali ini mengarahkannya ke gateway VPN:
$ sudo route -n add -net 192.168.0/24 192.168.20.19
add net 192.168.0: gateway 192.168.20.19

Dalam kasus di atas IP address gateway VPN adalah 192.168.20.19. Berikut ini adalah perubahan routing tables yang telah diterapkan:

Routing tables yang baru

Kini saya sudah bisa mengakses server yang ada di jaringan VPN.

Server Gitlab yang ada di IP 192.168.0.104 bisa merespon

Namun solusi ini hanya temporary sifatnya. Jika kita melakukan re-connect ke wifi tadi, routing tables ini akan kembali seperti semula. Tentu saja setelah itu kita perlu melakukan pengaturan route lagi. Jika ingin permanen, solusi dengan mengubah subnet jaringan lokal wifi tadi lah caranya.