Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Bagaimana untuk menyediakan pemajuan port pada Linux

Bagaimana untuk menyediakan pemajuan port pada Linux

PHPz
PHPzasal
2023-07-05 15:48:107061semak imbas

Cara menyediakan pemajuan port pada Linux

Pemajuan port ialah fungsi yang sangat penting dalam pelbagai aplikasi rangkaian. Ia membolehkan anda memajukan trafik luaran ke port tertentu pada rangkaian dalaman anda. Pada sistem Linux, fungsi pemajuan port dilaksanakan dengan menggunakan iptables dan sysctl. Artikel ini menerangkan cara menyediakan pemajuan port pada Linux dan menyediakan contoh kod yang sepadan.

  1. Semak Parameter Kernel

Sebelum mula menyediakan pemajuan port, pertama sekali kita perlu menyemak sama ada parameter kernel membenarkan fungsi pemajuan. Dengan menjalankan arahan berikut, anda boleh melihat tetapan pemajuan sistem semasa:

sysctl net.ipv4.ip_forward

Jika hasil output ialah net.ipv4.ip_forward = 1, ini bermakna fungsi pemajuan telah didayakan. Jika hasil output ialah net.ipv4.ip_forward = 0, ini bermakna fungsi pemajuan tidak didayakan. Apabila fungsi pemajuan tidak dihidupkan, anda boleh menghidupkan fungsi pemajuan buat sementara waktu dengan menjalankan arahan berikut: net.ipv4.ip_forward = 1,说明转发功能已经开启。如果输出结果为net.ipv4.ip_forward = 0,则表示转发功能未开启。在转发功能未开启的情况下,可以通过运行以下命令来临时开启转发功能:

sysctl -w net.ipv4.ip_forward=1

如果需要永久开启转发功能,可以编辑/etc/sysctl.conf文件,并添加或修改以下参数:

net.ipv4.ip_forward=1

修改完毕后,保存文件并运行以下命令使其生效:

sysctl -p
  1. 设置端口转发

实现端口转发的方式有很多种,下面我们将介绍两种常用的方式:使用iptables和使用socat工具。

A. 使用iptables

iptables是Linux系统上常用的防火墙工具,我们可以使用它来设置端口转发。以下是通过iptables设置端口转发的示例代码:

iptables -t nat -A PREROUTING -p tcp --dport <external_port> -j DNAT --to-destination <internal_ip>:<internal_port>
iptables -t nat -A POSTROUTING -j MASQUERADE

其中749375b4434469ed7a5194cf26b2a289是外部端口,6fccd0679a7f07f1f43815050eb515f2是内部服务器的IP地址,63f256d5d64211b8417741a9944fd8a5是内部服务器的端口号。这两条命令将会将外部流量转发到内部服务器上。如果希望外部流量经过转发后仍然能够正确识别源IP地址,可以添加以下命令:

iptables -t nat -A POSTROUTING -o <external_interface> -j MASQUERADE

其中881d938581b5738c7a57b1cbe4098023是外部接口的名称,比如eth0

B. 使用socat工具

socat是一款强大的网络工具,可以进行各种网络连接和转发。以下是通过socat设置端口转发的示例代码:

socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port>

其中749375b4434469ed7a5194cf26b2a289是外部端口,6fccd0679a7f07f1f43815050eb515f2是内部服务器的IP地址,63f256d5d64211b8417741a9944fd8a5是内部服务器的端口号。这条命令将会将外部流量转发到内部服务器上。

  1. 应用转发规则

无论是使用iptables还是socat工具,设置的转发规则都只在当前会话中有效。如果希望在系统重启后依然有效,需要将这些规则应用到系统中。

A. 使用iptables

通过运行以下命令可以将iptables规则应用到系统中:

iptables-save > /etc/sysconfig/iptables

B. 使用socat工具

socat工具默认在后台运行,如果希望socat规则在系统重启后依然有效,可以将socat配置加入到系统启动脚本中。例如,在Ubuntu系统上可以编辑/etc/rc.local文件并添加以下内容:

/path/to/socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port> &

注意,/path/to/socatrrreee

Jika anda perlu menghidupkan fungsi pemajuan secara kekal, anda boleh mengedit /etc/sysctl.conf fail dan tambah atau Ubah suai parameter berikut:

rrreee

Selepas pengubahsuaian, simpan fail dan jalankan arahan berikut untuk menjadikannya berkesan:

rrreee

    Set port forwarding🎜🎜🎜Di sana adalah banyak cara untuk melaksanakan pemajuan port Di bawah kita akan Dua kaedah yang biasa digunakan diperkenalkan: menggunakan iptables dan menggunakan alat socat. 🎜🎜A. Menggunakan iptables🎜🎜iptables ialah alat tembok api yang biasa digunakan pada sistem Linux, kami boleh menggunakannya untuk menyediakan pemajuan port. Berikut ialah contoh kod untuk menyediakan port forwarding melalui iptables: 🎜rrreee🎜di mana 749375b4434469ed7a5194cf26b2a289 ialah port luaran, 6fccd0679a7f07f1f43815050eb515f2 ialah alamat IP bagi pelayan dalaman, 63f256d5d64211b8417741a9944fd8a5 ialah nombor port pelayan dalaman. Kedua-dua arahan ini akan memajukan trafik luaran ke pelayan dalaman. Jika anda mahu alamat IP sumber dikenal pasti dengan betul selepas trafik luaran dimajukan, anda boleh menambah arahan berikut: 🎜rrreee🎜di mana 881d938581b5738c7a57b1cbe4098023 ialah nama antara muka luaran, seperti eth0 . 🎜🎜B. Gunakan alat socat🎜🎜socat ialah alat rangkaian berkuasa yang boleh melakukan pelbagai sambungan rangkaian dan pemajuan. Berikut ialah contoh kod untuk menyediakan port forwarding melalui socat: 🎜rrreee🎜di mana 749375b4434469ed7a5194cf26b2a289 ialah port luaran, 6fccd0679a7f07f1f43815050eb515f2 ialah alamat IP bagi pelayan dalaman, 63f256d5d64211b8417741a9944fd8a5 ialah nombor port pelayan dalaman. Perintah ini akan memajukan trafik luaran ke pelayan dalaman. 🎜
      🎜Gunakan peraturan pemajuan🎜🎜🎜Sama ada menggunakan iptables atau alat socat, peraturan pemajuan yang ditetapkan hanya sah dalam sesi semasa. Jika anda mahu peraturan kekal sah selepas sistem dimulakan semula, anda perlu menggunakan peraturan ini pada sistem. 🎜🎜A. Gunakan iptables🎜🎜Anda boleh menggunakan peraturan iptables pada sistem dengan menjalankan arahan berikut: 🎜rrreee🎜B Gunakan alat socat🎜🎜Alat socat berjalan di latar belakang secara lalai kekal sah selepas sistem dimulakan semula, anda boleh Menambah konfigurasi socat pada skrip permulaan sistem. Sebagai contoh, pada sistem Ubuntu anda boleh mengedit fail /etc/rc.local dan menambah kandungan berikut: 🎜rrreee🎜Perhatikan bahawa /path/to/socat perlu digantikan dengan laluan alat socat sebenar. 🎜🎜Ringkasan🎜🎜Artikel ini menerangkan cara menyediakan pemajuan port pada sistem Linux, memberikan contoh kod menggunakan iptables dan alat socat. Dengan menyediakan pemajuan port, anda boleh memajukan trafik luaran secara fleksibel ke pelayan dalaman untuk mencapai pengimbangan beban, pemetaan port dan fungsi lain untuk aplikasi rangkaian. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menyediakan pemajuan port pada Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn