ufw 埠轉發到 virtualbox 來賓
我的目標是能夠使用我的台式機上的遠端桌面連接到在我的 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”版本控制設置,將幫助您進行試驗並獲得信心。