LINUX 內網設備將服務映射到公網地址

環境描述:安全

1.設備A IP:192.168.0.2              位置: 上海
2.設備B IP:1.1.1.1                  位置: 北京

設備A爲甲方提供的實驗室中的設備,設備B爲乙方公網設備。
應甲方要求,須要在指定的設備A上部署環境、服務,可是進行功能測試時,要經過公網通訊。
設備A只有內網IP,能夠訪問公網,可是公網沒法主動訪問設備A,因此如今須要把設備A上的服務映射到設備B上。ssh

映射過程:tcp

1.經過SSH端口轉發,將設備A的服務映射到設備B上(由於設備B沒法主動鏈接設備A,因此要在設備A上進行SSH遠程端口映射)測試

在設備A上執行:ssh -o ServerAliveInterval=60 -f -N -R 8080:192.168.0.2:8443 test@1.1.1.1

           此命令的做用爲:將本機上的服務端口8443,映射到設備B(1.1.1.1)的8080端口,當用戶訪問設備B的8080端口時,請求會轉發到本機的8443端口上,具體是如何實現SSH隧道轉發,這裏再也不描述,有興趣能夠本身搜索資料。
           Tips:這裏有一個參數   -o ServerAliveInterval=60 必需要加上,不加此參數在長時間無操做的狀況下ssh會超時,致使映射斷開,此參數爲每隔60s向ssh server端發送keep-alive包,保持ssh鏈接,防止超時

2.通過步驟1的操做,此時已經能夠在設備B上看到監聽的8080端口了,可是你會發現監聽的IP爲127.0.0.1這個迴環地址(ssh遠程映射只能映射遠程設備的127上,沒有任何辦法能夠改變),127是沒法被外界直接訪問的,因此這裏咱們還須要經過防火牆作一個DNAT,改變原始請求的目的地址(端口)code

在設備B上執行:iptables -t nat -A PREROUTING -p tcp --dport 8443 -j DNAT --to-destination 127.0.0.1:8080
            
            此命令的做用爲:將訪問本機8443端口的TCP報文轉發至本機的127.0.0.1的8080端口上
            Tips:iptables添加以上規則時,Linux系統出於安全考慮,是不容許將請求轉發至127.0.0.1這個迴環地址上的,因此咱們須要修改內核參數。
            sysctl -w net.ipv4.conf.eth0.route_localnet=1
            此時就能夠將報文DNAT到127地址了。

通過以上兩步操做,如今訪問1.1.1.1:8443端口即訪問192.168.0.2的8443端口server

相關文章
相關標籤/搜索