Virtualbox

ufw 埠轉發到 virtualbox 來賓

  • January 20, 2016

我的目標是能夠使用我的台式機上的遠端桌面連接到在我的 linux 伺服器上的 virtualbox 中執行的 windows xp。

我的設置:

  • 伺服器 = debian 擠壓,64 位,具有公共 IP 地址(主機)
  • virtualbox-ose 3.2.10(來自 debian repo)
  • windows xp 作為訪客在 VBox 中執行;VBox中的橋接組網方式,ip = 192.168.1.100
  • ufw作為debian上的防火牆,開放3個埠:22/ssh,80/apache,3389遠端桌面

我的問題:如果我嘗試在家用電腦上使用遠端桌面,我無法連接到 Windows 客戶機。如果我首先“ssh -X -C”進入 debian 伺服器,然後執行“rdesktop 192.168.1.100”,我可以毫無問題地連接。Windows 防火牆被配置為允許遠端桌面連接,我什至將其關閉(因為它在這裡是多餘的)以查看是否是問題所在,但沒有任何區別。

由於我能夠從本地子網內部連接,我懷疑我沒有正確設置我的 debian 防火牆來處理來自 LAN 外部的連接。這是我所做的…

首先我的ufw狀態:

ufw status                                                                                                   
Status: active                                                                                                                          

To                         Action      From                                                                                             
--                         ------      ----
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
3389                       ALLOW       Anywhere

我編輯了 /etc/ufw/sysctl.conf 並添加了:

net/ipv4/ip_forward=1

編輯 /etc/default/ufw 並添加:

DEFAULT_FORWARD_POLICY="ACCEPT"

編輯 /etc/ufw/before.rules 並添加:

# setup port forwarding to forward rdp to windows VM
*nat
:PREROUTING - [0:0]

-A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.100
-A PREROUTING -i eth0 -p udp --dport 3389 -j DNAT --to-destination 192.168.1.100

COMMIT

# Don't delete these required lines, otherwise there will be errors
*filter

<snip>

重新啟動防火牆等,但沒有連接。

我在 debian 主機上的日誌文件顯示了這一點(我的公共 IP 地址已被刪除,但在實際日誌中是正確的):

Feb  6 11:11:21 localhost kernel: [171991.856941] [UFW AUDIT] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27518 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 
Feb  6 11:11:21 localhost kernel: [171991.856963] [UFW ALLOW] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27518 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 
Feb  6 11:11:24 localhost kernel: [171994.856701] [UFW AUDIT] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27519 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 
Feb  6 11:11:24 localhost kernel: [171994.856723] [UFW ALLOW] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27519 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 
Feb  6 11:11:30 localhost kernel: [172000.856656] [UFW AUDIT] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27520 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 
Feb  6 11:11:30 localhost kernel: [172000.856678] [UFW ALLOW] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27520 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 

儘管這是目前的設置/配置,但我也嘗試了幾種變體;我想也許 ISP 會出於某種原因阻止 3389 並嘗試使用不同的埠,但還是沒有連接。

有任何想法嗎…?我是否忘記在某處修改某些文件?

我真的對此並不刻薄,但你需要用比 UFW 更好的東西來管理你的 IPTAbles “防火牆”。

它適用於桌面使用,但它專為該用途而不是“伺服器級”用途而設計。

我強烈建議坐下來花一些時間學習 NetFilter/IPTables 的工作原理,並熟悉直接使用這些命令。如果您擔心會破壞某些內容,那麼在更改之前備份您的 IPTables 配置,或者甚至是基本的“Git”版本控制設置,將幫助您進行試驗並獲得信心。

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