使用多個虛擬機,將開發環境和工作溝通環境分開(即時通,辦公系統都只能在windows下使用…),將開發環境的服務提供給外部訪問時,需要在主機上通過代理配置數據轉發。

VirtualBox提供了端口轉發的功能,可以將主機中的端口轉發至指定IP的虛擬機中的端口,支持TCP協議和UDP協議。但有一個缺點:需要重啟虛擬主機才生效。

其實在Windows中,如果想做端口轉發,可以使用Windows自身攜帶的服務:netsh
,使用netsh interface portproxy
指令,新增和修改配置信息后,即時生效,並且重啟系統后配置信息仍然存在,非常方便。適用於WindowsXP、Windows7,其他的版本還沒有試過,支持IPv4和IPv6,但是只支持TCP協議。
新增端口轉發
1、命令
netsh interface portproxy add v4tov4 - 添加通過 IPv4 的 IPv4 和代理連接到的偵聽項目。
netsh interface portproxy add v4tov6 - 添加通過 IPv6 的 IPv4 和代理連接到的偵聽項目。
netsh interface portproxy add v6tov4 - 添加通過 IPv4 的 IPv6 和代理連接到的偵聽項目。
netsh interface portproxy add v6tov6 - 添加通過 IPv6 的 IPv6 和代理連接到的偵聽項目。
2、命令語法
以netsh interface portproxy add v4tov4
為例,其語法格式如下:
netsh interface portproxy add v4tov4 [listenport=]<integer>|<servicename>
[connectaddress=]<IPv4 address>|<hostname>
[[connectport=]<integer>|<servicename>]
[[listenaddress=]<IPv4 address>|<hostname>]
[[protocol=]tcp]
參數:
標記 值
listenport - IPv4 偵聽端口。
connectaddress - IPv4 連接地址。
connectport - IPv4 連接端口。
listenaddress - IPv4 偵聽地址。
protocol - 使用的協議。現在只支持 TCP。
說明: 添加通過 IPv4 的 IPv4 和代理連接到的偵聽項目。
3、使用示例
netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.56.101 connectport=8080
將本地的8080端口的數據轉發至192.168.56.101上的8080端口。
netsh interface portproxy add v4tov4 listenport=9090 connectaddress=192.168.56.101 connectport=9090
將本地的9090端口的數據轉發至192.168.56.101上的9090端口。
顯示所有的端口轉發配置信息
1、命令
netsh interface portproxy show all - 顯示所有端口代理參數。
netsh interface portproxy show v4tov4 - 顯示 IPv4 代理連接到另一個 IPv4 端口的參數。
netsh interface portproxy show v4tov6 - 顯示 IPv4 代理連接到 IPv6 的參數。
netsh interface portproxy show v6tov4 - 顯示 IPv6 代理連接到 IPv4 的參數。
netsh interface portproxy show v6tov6 - 顯示 IPv6 代理連接到另一個 IPv6 端口的參數。
2、使用示例
netsh interface portproxy show all
控制台顯示如下信息:
偵聽 ipv4: 連接到 ipv4:
地址 端口 地址 端口
--------------- ---------- --------------- ----------
* 8080 192.168.56.101 8080
* 9090 192.168.56.101 9080
修改端口轉發配置
1、命令
netsh interface portproxy set v4tov4 - 更新通過 IPv4 的 IPv4 和代理連接到的偵聽項目。
netsh interface portproxy set v4tov6 - 更新通過 IPv6 的 IPv4 和代理連接到的偵聽項目。
netsh interface portproxy set v6tov4 - 更新通過 IPv4 的 IPv6 和代理連接到的偵聽項目。
netsh interface portproxy set v6tov6 - 更新通過 IPv6 的 IPv6 和代理連接到的偵聽項目。
2、命令語法
以netsh interface portproxy set v4tov4
為例,其語法格式如下:
netsh interface portproxy set v4tov4 [listenport=]<integer>|<servicename>
[connectaddress=]<IPv4 address>|<hostname>
[[connectport=]<integer>|<servicename>]
[[listenaddress=]<IPv4 address>|<hostname>]
[[protocol=]tcp]
參數:
標記 值
listenport - IPv4 偵聽端口。
connectaddress - IPv4 連接地址。
connectport - IPv4 連接端口。
listenaddress - IPv4 偵聽地址。
protocol - 使用的協議。現在只支持 TCP。
說明: 更新通過 IPv4 的 IPv4 和代理連接到的偵聽項目。
3、使用示例
netsh interface portproxy set v4tov4 listenport=9090 connectaddress=192.168.56.101 connectport=9080
將本地9090端口改成轉發至192.168.56.101的9080端口中。
刪除端口轉發配置
1、命令
netsh interface portproxy delete v4tov4 - 刪除通過 IPv4 的 IPv4 和代理連接到的偵聽項目。
netsh interface portproxy delete v4tov6 - 刪除通過 IPv6 的 IPv4 和代理連接到的偵聽項目。
netsh interface portproxy delete v6tov4 - 刪除通過 IPv4 的 IPv6 和代理連接到的偵聽項目。
netsh interface portproxy delete v6tov6 - 刪除通過 IPv6 的 IPv6 和代理連接到的偵聽項目。
2、命令語法
以netsh interface portproxy delete v4tov4
為例,其語法格式如下:
netsh interface portproxy delete v4tov4 [listenport=]<integer>|<servicename>
[[listenaddress=]<IPv4 address>|<hostname>]
[[protocol=]tcp]
參數:
標記 值
listenport - 要偵聽的 IPv4 端口。
listenport - 要偵聽的 IPv4 地址。
protocol - 要使用的協議。當前僅支持 TCP。
注釋: 刪除要偵聽的 IPv4 的項並通過 Ipv4 代理連接。
3、使用示例
netsh interface portproxy delete v4tov4 listenport=9090
刪除本地端口9090的端口轉發配置。
轉!