Mengglobalkan Proksi SOCKS di Linux

Aditya Phra•

Masalah yang aku jumpai saat memakai proksi SOCKS di Linux, agar bisa berjalan di seluruh aplikasi itu sangatlah ribet, harus dikonfigurasi di setiap aplikasi, konfigurasinya berbeda-beda pula dan juga tidak semua aplikasi bisa diatur agar bisa pakai proksi SOCKS.

Solusinya itu pakai aplikasi sing-box karena ada fitur yang kucari selama ini, yaitu bisa mengglobalkan proksi SOCKS di Linux.

Instal sing-box

Kalau kamu memakai sistem operasi Arch Linux seperti aku, sing-box bisa diinstal dari AUR:

paru -S sing-box

atau pakai versi yang sudah dikompilkan:

paru -S sing-box-bin

Kalau kamu pengguna distro lain, baca tutorial instal dari web resmi sing-box.

Konfigurasi sing-box

Alasan proksi SOCKS bisa berjalan di seluruh aplikasi itu karena memanfaatkan fitur TUN di Linux. Kuncinya itu, misal rekues dari browser dikirim ke TUN (inbound) kemudian diproses oleh sing-box baru diteruskan ke server proksi SOCKS (outbound).

Lokasi konfigurasi utama sing-box berada di /etc/sing-box/config.json.

Edit file itu, salin tempel konfigurasi di bawah yang sudah aku optimasi untuk penggunaan proksi SOCKS agar bisa berjalan di seluruh aplikasi. Kemudian sesuaikan dengan server proksi SOCKS milikmu, bagian username dan password bisa dihilangkan kalau server proksi SOCKS-mu tidak menerapkan autentikasi.

{
  "log": {
    "level": "info"
  },
  "dns": {
    "servers": [
      {
        "type": "https",
        "tag": "cloudflare",
        "detour": "socks-out",
        "domain_resolver": "local",
        "server": "cloudflare-dns.com",
        "server_port": 443
      },
      {
        "type": "dhcp",
        "tag": "local"
      }
    ],
    "final": "cloudflare",
    "strategy": "ipv4_only"
  },
  "inbounds": [
    {
      "type": "tun",
      "address": "172.19.0.1/30",
      "auto_route": true
    }
  ],
  "outbounds": [
    {
      "type": "socks",
      "tag": "socks-out",
      "server": "192.168.43.1",
      "server_port": 1080,
      "version": "5",
      "username": "adityaphra",
      "password": "mypassword"
    },
    {
      "type": "direct",
      "tag": "direct"
    }
  ],
  "route": {
    "rules": [
      {
        "port": 53,
        "action": "hijack-dns"
      },
      {
        "ip_is_private": true,
        "outbound": "direct"
      }
    ],
    "final": "socks-out",
    "auto_detect_interface": true,
    "default_domain_resolver": "local"
  }
}

Hidupkan sing-box untuk mengaktifkan proksi SOCKS:

sudo systemctl start sing-box

Setelah hidup, pastikan kalau sudah bisa dengan melihat log sing-box:

journalctl -u sing-box --output cat -e

Versi log realtime-nya:

journalctl -u sing-box --output cat -f

Biar bisa hidup setiap habis boot:

sudo systemctl enable sing-box

Kalau kamu ingin tahu penjelasan setiap bagian dari konfigurasi tadi, aku rekomendasikan untuk baca-baca di web dokumentasi sing-box.