模擬網路環境和轉發數據包?
我的問題可能有點奇怪,但首先是一些背景:
我有一個客戶端,其設備在他們自己的網路中具有不同的 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:8000
,10.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 的解決方案,我通過這裡找到了它:
所以我將數據包從不存在的假 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
。謝謝!