Cara Menginstal dan Menggunakan Socat di Freebsd
Mentransfer data antar-komputer dalam jaringan publik maupun privat bisa menjadi tantangan tersendiri, terutama saat Anda perlu melakukan transfer data dua arah. Perintah socat di FreeBSD menawarkan solusi yang tangguh dan fleksibel untuk transfer data dua arah antar-koneksi jaringan.
Dalam artikel ini, kita akan mempelajari cara menggunakan perintah socat serta melihat contoh-contoh praktis untuk membantu Anda memahami penggunaannya. Tujuannya adalah membangun koneksi antara dua sumber data, di mana masing-masing sumber data bisa berupa berkas (file), Unix socket, UDP, TCP, ataupun standard input.
Pada sistem FreeBSD, socat tidak terinstal secara otomatis seperti halnya SSH atau NTP. Agar dapat memanfaatkan berbagai keunggulan perintah socat, Anda perlu menginstalnya terlebih dahulu.
1. Cara Install Socat
Di FreeBSD, Socat dapat diinstal dengan berbagai cara, namun kebanyakan orang menggunakan paket PKG atau sistem Ports. Agar seluruh pustaka dan dependensi Socat dapat dibangun dengan sempurna, kita menggunakan sistem Ports untuk menginstal Socat. Gunakan perintah berikut untuk memulainya.
root@ns3:~ # cd /usr/ports/net/socat
root@ns3:/usr/ports/net/socat # make config
root@ns3:/usr/ports/net/socat # make install clean
Untuk melengkapi perintah socat, Anda juga perlu menginstal aplikasi Curl dan Bash, karena aplikasi-aplikasi tersebut selalu digunakan bersamaan dengan socat.
root@ns3:/usr/ports/net/socat # pkg install curl bash
Seperti halnya aplikasi lain, Socat juga memiliki skrip startup rc.d yang memungkinkannya berjalan secara otomatis. Meskipun skrip rc.d ini jarang digunakan, karena biasanya socat dijalankan menggunakan perintah manual, tidak ada salahnya jika kita membahas mengenai startup rc.d untuk socat.
Agar socat dapat berjalan secara otomatis pada sistem FreeBSD, masukkan skrip di bawah ini ke dalam file /etc/rc.conf.
socat_enable="YES"
socat_daemonuser="root"
socat_flags="/usr/local/etc/socat-instances.conf"
Berkas konfigurasi socat bernama /usr/local/etc/socat-instances.conf; sunting berkas tersebut sesuai kebutuhan. Untuk menjalankan socat, gunakan perintah di bawah ini.
root@ns3:~ # service socat restart
2. File Binary Socat
Setelah proses instalasi selesai, Socat menghasilkan tiga berkas biner, yaitu: /usr/local/bin/filan /usr/local/bin/procan /usr/local/bin/socat Socat adalah utilitas relay berbasis baris perintah yang membentuk dua aliran byte dua arah dan digunakan untuk transfer data dua arah antara dua saluran data independen. Masing-masing saluran data ini bisa berupa berkas, pipe, perangkat (terminal, modem, dll.), socket (UNIX, IPv4, IPv6 - raw, UDP, TCP), deskriptor berkas (stdin, dll.), program, atau kombinasi apa pun dari elemen-elemen tersebut.
Filan adalah utilitas yang dapat menampilkan informasi mengenai deskriptor berkas yang aktif ke stdout. Filan digunakan untuk proses debugging socat, namun juga dapat berguna untuk tujuan lain. Gunakan opsi -h untuk informasi lebih lanjut.
Procan adalah utilitas yang dapat menampilkan informasi mengenai parameter proses ke stdout. Procan sering digunakan untuk lebih memahami karakteristik proses UNIX tertentu dan untuk debugging socat, namun juga dapat berguna untuk tujuan lain.
3. Cara Menggunakan Perintah Socat
Sintaks Socat cukup sederhana dan mudah ditulis.
socat [options] <address> <address>
Agar socat dapat berfungsi, Anda harus menentukan alamat sumber dan tujuan. Sintaks untuk alamat-alamat tersebut adalah:
protocol:ip:port
a. Menghubungkan socat ke port TCP 80 pada jaringan lokal atau jarak jauh
root@ns3:~ # socat - TCP4:www.unixwinbsd.site:80
root@ns3:~ # socat - TCP4:192.168.5.2:80
Pada contoh di atas, socat mentransfer data antara STDIO (-) dan koneksi TCP4 ke port 80 pada host bernama www.unixwinbsd.site serta host lokal 192.168.5.2.
b. Menggunakan perintah socat sebagai penerus port TCP
Untuk satu koneksi
root@ns3:~ # socat TCP4-LISTEN:80 TCP4:192.168.5.2:80
Untuk koneksi ganda, gunakan opsi/perintah berikut ini.
root@ns3:~ # socat TCP4-LISTEN:81,fork,reuseaddr TCP4:TCP4:192.168.5.2:80
root@ns3:~ # socat TCP-LISTEN:80,fork TCP:64.233.170.121:80
Pada contoh di atas, socat akan mendengarkan pada port 81, menerima koneksi, dan meneruskan koneksi tersebut ke port 80 di host jarak jauh. Pada skrip kedua, semua koneksi TCP4 ke port 80 akan dialihkan ke 202.54.1.5. Anda dapat mengakhiri koneksi dengan menekan [CTRL+C].
root@ns3:~ # socat TCP-LISTEN:3306,reuseaddr,fork UNIX-CONNECT:/tmp/mysql.sock
Pada contoh skrip di atas, socat akan mendengarkan pada port 3306, menerima koneksi, dan meneruskan koneksi tersebut ke Unix socket di host jarak jauh.
c. Mengimplementasikan socat sebagai pengumpul pesan berbasis jaringan yang sederhana
root@ns3:~ # root@ns3:~ # socat -u TCP4-LISTEN:3334,reuseaddr,fork OPEN:/tmp/test.log,creat,append
Pada contoh skrip di atas, saat klien terhubung ke port 3334, sebuah proses anak (child process) baru akan dibuat, dan semua data yang dikirim oleh klien akan ditambahkan ke dalam file /tmp/test.log.
Jika file tersebut belum ada, socat akan membuatnya. Opsi reuseaddr memungkinkan proses server untuk dimulai ulang secara langsung.
d. Perintah socat akan mengirimkan siaran (broadcast) ke jaringan lokal
root@ns3:~ # socat - UDP4-DATAGRAM:224.255.0.1:6666,bind=:6666,ip-add-membership=224.255.0.1:nfe0
Pada contoh skrip di atas, socat akan mentransfer data dari stdin ke alamat multicast yang ditentukan menggunakan UDP melalui port 6666 untuk koneksi lokal maupun jarak jauh. Perintah ini juga menginstruksikan antarmuka nfe0 untuk menerima paket multicast bagi grup yang ditentukan. nfe0 adalah kartu ethernet komputer Anda.
Socat adalah utilitas yang sangat berguna untuk terhubung ke server jarak jauh. Dengan perintah socat, Anda dapat membuat koneksi jarak jauh dengan mudah. ??Dalam contoh ini, kita akan menggunakan socat untuk koneksi MySQL jarak jauh. Kita akan mencoba menghubungkan server web ke server MySQL jarak jauh melalui soket lokal.
Pada server MySQL jarak jauh Anda, ketikkan perintah berikut.
root@ns3:~ # socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/tmp/mysql.sock &
Perintah di atas akan menjalankan socat dan mengonfigurasinya untuk mendengarkan serta menggunakan port 3307. Setelah itu, pada server web di komputer Anda, ketikkan perintah berikut.
root@ns3:~ # socat UNIX-LISTEN:/tmp/mysql.sock,fork,reuseaddr,unlink-early,user=mysql,group=mysql,mode=777 TCP:192.168.5.2:3307 &
Perintah di atas akan menghubungkan IP lokal 192.168.5.2 ke server jarak jauh menggunakan port 3307. Seluruh komunikasi dilakukan melalui Unix socket /tmp/mysql.sock, sehingga koneksi tersebut tampak seolah-olah terhubung ke server lokal.
Perintah dasar socat di FreeBSD menyediakan solusi yang tangguh dan fleksibel untuk transfer data dua arah antarjaringan. Dengan menggunakan perintah socat, Anda dapat membuat dua titik akhir (endpoint) untuk melakukan transfer data dan menghubungkannya. socat mempermudah proses transfer data melalui berbagai koneksi jaringan.
