Networking

模擬網路環境和轉發數據包?

  • August 4, 2018

我的問題可能有點奇怪,但首先是一些背景:

我有一個客戶端,其設備在他們自己的網路中具有不同的 IP(主要是192.168.x.x)。從外部,我使用 SSH 隧道連接到其中一台機器,並且可以將埠從連接轉發到我的 IP,但是單個隧道/埠僅適用於指定的 IP,並且我正在開發的應用程序必須接受列表使用不同的 IP,如果它們都是 127.0.0.1,即使埠不同(我可以將埠 8000-8005 映射到192.168.0.1,8006-8010 到192.168.0.2等等)也不會起作用,因為它不會不工作。

所以,我想知道是否有任何方法可以在我的本地電腦上創建一個“子網”,例如,10.0.0.x數據包10.0.0.2:80將通過我的 SSH 隧道到達哪裡127.0.0.1:800010.0.0.3:80然後到達127.0.0.1:8010,等等?這就像,通過 SSH 隧道在我自己的環境中鏡像我的客戶端網路的 IP ……就像各種 VPN。(討論了 VPN,但在另一端設置起來很複雜,所以我只有 SSH 隧道可以工作)。

任何想法都非常感謝!

注意:這已經在 SuperUser 上問過,但我在這裡做了一些搜尋,我認為這個堆棧更適合,因為我在這裡看到人們對網路更有經驗。我也在尋找類似數據包轉發的東西,但我的網路中不存在但我可以模擬的 IP(10.0.0.x),例如:

10.0.0.1:80 --> 127.0.0.1:8000
10.0.0.2:80 --> 127.0.0.1:8001
10.0.0.3:80 --> 127.0.0.1:8010

等等…

好吧,經過長時間的研究和 Michael Hampton 的一些指示,我找到了使用 IPTables 的解決方案,我通過這裡找到了它:

https://www.linuxquestions.org/questions/linux-software-2/route-locally-generated-traffic-to-ip-port-to-localhost-port-300294/

所以我將數據包從不存在的假 IP 轉發到我自己的電腦的命令是:

iptables -t nat -A OUTPUT -m tcp -p tcp -d 10.0.0.1 --dport 80 -j DNAT --to-destination 127.0.0.1:8000

我不確定所有參數是什麼以及它們是如何工作的,但這會重定向10.0.0.1:80 -> 127.0.0.1:8000

謝謝!

引用自:https://serverfault.com/questions/924736