GNU/Linux >> Belajar Linux >  >> Linux

Memulai socat, alat relai serbaguna untuk Linux

Utilitas socat adalah relai untuk transfer data dua arah antara dua saluran data independen.

Ada banyak jenis saluran socat dapat terhubung, termasuk:

  • File
  • Pipa
  • Perangkat (saluran serial, terminal semu, dll)
  • Soket (UNIX, IP4, IP6 - mentah, UDP, TCP)
  • soket SSL
  • Sambungan proxy CONNECT
  • Descriptor file (stdin, dll)
  • Editor baris GNU (baris baca)
  • Program
  • Kombinasi dari keduanya

Alat ini dianggap sebagai versi lanjutan dari netcat. Mereka melakukan hal serupa, tetapi socat memiliki lebih banyak fungsi tambahan, seperti mengizinkan beberapa klien untuk mendengarkan di port, atau menggunakan kembali koneksi.

Mengapa kita membutuhkan socat?

Ada banyak cara untuk menggunakan socate efektif. Berikut beberapa contohnya:

  • Penerus port TCP (one-shot atau daemon)
  • Socksifier eksternal
  • Alat untuk menyerang firewall yang lemah (keamanan dan audit)
  • Antarmuka Shell ke soket Unix
  • Relai IP6
  • Mengalihkan program berorientasi TCP ke jalur serial
  • Hubungkan jalur serial secara logis pada komputer yang berbeda
  • Bangun lingkungan yang relatif aman (su dan chroot ) untuk menjalankan skrip shell klien atau server dengan koneksi jaringan

Bagaimana kita menggunakan socat?

Sintaks untuk socat cukup sederhana:

socat [options] <address> <address>

Anda harus memberikan alamat sumber dan tujuan agar dapat berfungsi. Sintaks untuk alamat ini adalah:

protocol:ip:port

Contoh penggunaan socat

Mari kita mulai dengan beberapa contoh dasar penggunaan socat untuk berbagai koneksi.

1. Hubungkan ke port TCP 80 pada sistem lokal atau jarak jauh:

# socat - TCP4:www.example.com:80

Dalam hal ini, socat mentransfer data antara STDIO (-) dan koneksi TCP4 ke port 80 pada host bernama www.example.com.

2. Gunakan socat sebagai penerus port TCP:

Untuk satu koneksi, masukkan:

# socat TCP4-LISTEN:81 TCP4:192.168.1.10:80

Untuk beberapa koneksi, gunakan fork pilihan seperti yang digunakan dalam contoh di bawah ini:

# socat TCP4-LISTEN:81,fork,reuseaddr TCP4:TCP4:192.168.1.10:80

Contoh ini mendengarkan pada port 81, menerima koneksi, dan meneruskan koneksi ke port 80 pada host jarak jauh.

# socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock 

Contoh di atas mendengarkan pada port 3307, menerima koneksi, dan meneruskan koneksi ke soket Unix pada host jarak jauh.

3. Menerapkan pengumpul pesan berbasis jaringan sederhana:

# socat -u TCP4-LISTEN:3334,reuseaddr,fork OPEN:/tmp/test.log,creat,append

Dalam contoh ini, saat klien tersambung ke port 3334, proses anak baru dibuat. Semua data yang dikirim oleh klien ditambahkan ke file /tmp/test.log . Jika file tidak ada, socat menciptakannya. Opsi reuseaddr memungkinkan dimulainya ulang proses server dengan segera.

4. Kirim siaran ke jaringan lokal:

# socat - UDP4-DATAGRAM:224.255.0.1:6666,bind=:6666,ip-add-membership=224.255.0.1:eth0

Dalam hal ini, socat mentransfer data dari stdin ke alamat multicast yang ditentukan menggunakan UDP melalui port 6666 untuk koneksi lokal dan jarak jauh. Perintah tersebut juga memberi tahu antarmuka eth0 untuk menerima paket multicast untuk grup yang diberikan.

Penggunaan praktis untuk socat

Socat adalah alat yang hebat untuk pemecahan masalah. Ini juga berguna untuk membuat koneksi jarak jauh dengan mudah. Praktis, saya telah menggunakan socat untuk koneksi MySQL jarak jauh. Pada contoh di bawah ini, saya mendemonstrasikan bagaimana saya menggunakan socat untuk menghubungkan aplikasi web saya ke server MySQL jarak jauh dengan menghubungkan melalui soket lokal.

1. Di server MySQL jarak jauh saya, saya memasukkan:

# socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock &

Perintah ini memulai socat dan mengonfigurasinya untuk mendengarkan dengan menggunakan port 3307.

2. Di server web saya, saya memasukkan:

# socat UNIX-LISTEN:/var/lib/mysql/mysql.sock,fork,reuseaddr,unlink-early,user=mysql,group=mysql,mode=777 TCP:192.168.100.5:3307 &

Perintah di atas terhubung ke server jauh 192.168.100.5 dengan menggunakan port 3307.

Namun, semua komunikasi akan dilakukan di soket Unix /var/lib/mysql/mysql.sock , dan ini membuatnya tampak seperti server lokal.

Menutup

socat adalah utilitas canggih dan memang alat yang sangat baik untuk setiap sysadmin untuk menyelesaikan sesuatu dan untuk pemecahan masalah. Ikuti tautan ini untuk membaca lebih banyak contoh penggunaan socat.

[ Kursus online gratis:Tinjauan teknis Red Hat Enterprise Linux. ]


Linux
  1. Memulai dengan firewall Linux

  2. 5 tips untuk memulai dengan keamanan server Linux

  3. Memulai Samba untuk interoperabilitas

  1. Memulai dengan awk, alat pengurai teks yang andal

  2. Memulai PostgreSQL di Linux

  3. Memulai SSH di Linux

  1. Memulai dengan btrfs untuk Linux

  2. Saran untuk memulai dengan GNOME

  3. Desktop Linux untuk minimalis:Memulai dengan LXQt dan LXDE