Linux端口轉發的幾種常用方法


0x00 背景

  端口轉發是一個常用的功能,不管是在服務器運維還是在***領域,都需要用到。在近期遇到一個問題就是一個服務的端口不能進行配置,但是由於出口硬件防火牆的原因,為了不修改硬件防火牆的策略,所以只能在本地做端口轉發。因此嘗試和尋找了以下的幾種方法。


0x01 iptables和firewall

  • iptables

  iptables是我第一個想到的方法,但卻是最后一個嘗試的,因為我對iptables並不熟悉。


1、打開IP轉發功能。

  linux的IP轉發功能是默認關閉的,而且根據很多安全加固策略以及安全基線的要求,IP轉發功能必須關閉,所以需要先打開IP轉發。需要長期使用的話則寫入到sysctl的配置文件中。

1
2
echo  1 > /proc/sys/net/ipv4/ip_forward
sysctl -w  /etc/sysctl .conf

2、配置iptables,在PERROUTING鏈中做DNAT。需要長期使用的話需要注意保存配置。

1
2
iptables -t nat -A PEROUTING -p tcp -i eth0 --dport 22222 -j DNAT --to x.x.x.x:22
service iptables save

wKioL1f1FnCiYRPyAABGq9RpkuY713.jpg

  遠程端口轉發的還可以參考這里:

http://www.jb51.net/LINUXjishu/401922.html


  • firewall

  firewall是CentOS 7上替代iptables的服務。使用起來比iptables要稍微簡單一點,直接使用firewall的端口轉發就能實現。firewall我也不熟悉,參考了http://www.centoscn.com/CentOS/Intermediate/2015/0313/4879.html


1、打開端口轉發功能

1
firewall-cmd --zone=public --add-forward-port=port=22222:proto=tcp:toport=22

  在不增加toaddr的情況下,默認就是轉發到自己的IP上。

  如果需要長期使用則增加--permanent加入到永久規則即可。



0x02 rinetd端口映射轉發工具


1、下載並解壓rinetd

1
wget


2、安裝rinetd

1
2
make
make  install

  安裝過程可能遇到man目錄不存在的問題,手動創建即可完成安裝。


3、創建/etc/rinetd.conf並寫入轉發規則

  配置文件中的規則格式為:

[Source Address] [Source Port] [Destination Address] [Destination Port]

源地址  源端口   目的地址  目的端口

wKioL1f1G2bQB1YWAAAXQw6IDt0601.jpg

  使用iptables的命令要更直接一些。但寫入規則的時候需要注意源端口不能被其他服務占用,並且也需要在iptables上打開。


4、運行rinetd

wKiom1f1HHChEz6EAAB51qoRUuc577.jpg

  運行后即可發現,rinetd已經綁定了指定的端口。

  如果需要長期使用,把命令寫入開機啟動即可。


  更多rinetd的參考:https://boutell.com/rinetd/和http://blog.csdn.net/paulluo0739/article/details/7023711 


0x03 lcx端口轉發

  lcx是***中經常用的工具,使用簡單。但一般用於Windows,由於沒有shell版本的lcx,編譯、安裝等環節較為麻煩,因此比較少見。因此,lcx雖然是我第一個想到的實現方法,但卻是實現的最麻煩的。

1、網上找到代碼見附件

  來源和參考:http://www.oldrss.com/article/hacker-00205.html


2、gcc編譯

1
gcc lcx.c -o lcx

  CentOS6.X & CentOS 7.0測試可以編譯成功。


3、運行lcx

wKiom1f18xajaMuDAACXooGOD74723.jpg


  使用方式較為簡單,根據提示運行即可。

1
lcx -m 1 -h1 0.0.0.0 -p1 22222 -h2 127.0.0.1 -p2 22 -log  /tmp/lcx .log

  如果服務連接較多,建議不要記錄日志,因為日志中會記錄傳輸的所有數據,這樣將會占用大量的空間,並且也可能會影響傳輸。

  如果需要長期使用,設置開機啟動並置入后台即可。


0x04 總結

 整體上來看,iptables和firewall是最簡單的方案,不需要安裝任何的程序和服務,系統自帶。rinetd和lcx也都受到iptables和firewall的限制,必須要其打開端口。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM