這個…是一件相當麻煩的事吶...
而且就以測試來說,也著實麻煩
目標:讓你的外界 ip (xx.xx.xxx.xx) 某特定 port (此例為tcp 3661)可以正常連線到你 Ubuntu 下的 guest OS 內
條件(網路線路配置):
外界→(頻寬分享器,對外 ip xx.xx.xxx.xx,對內發放 192.168.1.x ) → (我的機器 Ubuntu ,內網 eth0 ip 192.168.1.120) → (VirtualBox guest OS WinXp,VM 名稱 litebox,使用 VB 設定網路配接卡#0:NAT )然後,我們開始吧
第零步-確認主機的網路配置
在你連線的情況下,對Ubuntu 右上系統圖示的網路連線右鍵→「連線資訊」可以查得連線介面(通常都是 eth0) 和 ip (本例即 192.168.1.120 )
第一步-建立並確認主機到虛擬機的連線:
請在 terminal (終端機) 下輸入:
- VBoxManage setextradata litebox "VBoxInternal/Devices/pcnet/0/LUN#0/Config/share/UDP" 0
- VBoxManage setextradata litebox "VBoxInternal/Devices/pcnet/0/LUN#0/Config/share/GuestPort" 3661
- VBoxManage setextradata litebox "VBoxInternal/Devices/pcnet/0/LUN#0/Config/share/HostPort" 3661
- 其中 litebox 是因應你要設定的 guest OS 在 VBox 下名稱而異
- share 則是規則名稱,故只需三個都一樣就可以
- 第一條的 0 表示為 TCP ; 1 為 UDP (應該)
- 二三條的 3661 3661 為埠號,設定為對外從 3661 轉到 guest OS 3661
- ftp 192.168.1.120 3661
第二步-測試對外/設定 iptables
之後我們就可以再試試我們的 public ip (對外 ip) 要否能被外界偵測到,使用以下指令:
- ftp xx.xx.xxx.xx 3661
如果到此失敗的話就需要多額外一步
VBox 的 port 轉接會監聽目標為 192.168.1.120 的封包,但有時頻寬分享器會直接轉送封包,封包上注記的目標就會是 xx.xx.xxx.xx 而不是 ,進而不會被 Vbox 轉送,此時就需要用 iptables 重新包裝封包使得 VBox 可以偵測到並順利轉送,使用下列指令達成目標:
第一,先打開 iptables 的封包轉送功能
- sudo echo 1 > /proc/sys/net/ipv4/ip_forward
- sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3661 -d xx.xx.xxx.xx -j DNAT --to-destination 192.168.1.120:3661
這樣,應該就是全部了,本人自己也終於可以用 VirtualBox 來跑日本 p2p 了(>ω<)♪♪
網誌管理員已經移除這則留言。
回覆刪除網誌管理員已經移除這則留言。
回覆刪除