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

Bagaimana untuk menyediakan pemajuan port pada Linux

PHPz
Lepaskan: 2023-07-05 15:48:10
asal
7063 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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

net.ipv4.ip_forward=1
Salin selepas log masuk

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

sysctl -p
Salin selepas log masuk
  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
Salin selepas log masuk

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

iptables -t nat -A POSTROUTING -o <external_interface> -j MASQUERADE
Salin selepas log masuk

其中<external_interface>是外部接口的名称,比如eth0

B. 使用socat工具

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

socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port>
Salin selepas log masuk

其中<external_port>是外部端口,<internal_ip>是内部服务器的IP地址,<internal_port>是内部服务器的端口号。这条命令将会将外部流量转发到内部服务器上。

  1. 应用转发规则

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

A. 使用iptables

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

iptables-save > /etc/sysconfig/iptables
Salin selepas log masuk

B. 使用socat工具

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

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

注意,/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 <external_port> ialah port luaran, <internal_ip> ialah alamat IP bagi pelayan dalaman, <internal_port> 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 <external_interface> 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 <external_port> ialah port luaran, <internal_ip> ialah alamat IP bagi pelayan dalaman, <internal_port> 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan