啟用救援模式
- 在 Hetzner 的 Robot 後台,選擇您的伺服器,然後點擊
Rescue
,選擇 Linux
,然後點擊 Activate Rescue System
。 - 點擊
Rest
,然後點擊 Execute an automatic hardware reset
,最後點擊 Send
。 - 伺服器會重啟,並且進入救援模式。
安裝 Proxmox VE
- 以 SSH 登錄到救援模式。
- 安裝 Proxmox VE,執行
installimage
,選擇 Debian 12 (Bookworm)。 - 留意
Hostname
會是 Proxmox VE 的節點名稱,例如 pve1.example.com
將會自動設定節點名稱為 pve1
。 - 設定 RAID 模式和磁碟分區。
- 儲存設定後,系統會開始安裝 Proxmox VE。
初步設定 PVE
在 https://{SERVER_IP}:8006/
上訪問 Proxmox VE 的 Web 介面,在左邊的節點,然後選取 Shell
,執行以下代碼。
這個腳本提供了管理 Proxmox VE 倉庫的選項,包括停用企業倉庫、新增或更正 PVE 源、啟用無訂閱倉庫、新增測試倉庫、停用訂閱提示、更新 Proxmox VE 和重新啟動系統。
1
| bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pve-install.sh)"
|
啟用 IP 轉發
1
2
| sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sed -i 's/#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/' /etc/sysctl.conf
|
套用更改:
檢查轉發是否啟用:
1
2
| sysctl net.ipv4.ip_forward
sysctl net.ipv6.conf.all.forwarding
|
設定 Masquerading (NAT) 轉發
要將虛擬機 / LXC 容器暴露到互聯網上,可以在不組態/擁有任何其他公共額外 IP 地址的情況下實現。
由於 Hetzner 有嚴格的 IP/MAC 綁定,這意味著如果流量沒有正確路由,將被認為是濫用並可能導致伺服器封鎖。為了避免這個問題,我們可以通過主機的主介面將 LXC/VM 的流量路由。這確保了 MAC
地址在所有網絡封包中是相同的。
Masquerading 使具有私有 IP 地址的虛擬機通過主機的公共 IP 地址進行出站通訊的互聯網訪問。
iptables
修改每個傳出的數據封包,使其看起來像是來自主機,並且調整傳入的回覆,以便可以將其定向回初始發送者。
在以下示例中,enp5s0
是主機的主介面,vmbr0
是 Proxmox VE 的虛擬橋接介面。
198.51.100.10
是主機的公共 IP 地址,198.51.100.1
是主機的網關 IP 地址。
22, 8006
是主機的 SSH 和 Web 介面連接埠,172.16.16.2
是 Proxmox VE 中的虛擬機的私有 IP 地址。
172.16.16.1
是 Proxmox VE 的虛擬橋接介面的私有 IP 地址。
172.16.16.0
是 Proxmox VE 中的虛擬機的私有子網。
這些 IP 地址是示例,可以根據實際情況進行更改。IPv4
的私有地址可以參考 WIKI: 專用網絡
,不一定要使用 172.16.16.1
。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| # /etc/network/interfaces
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto enp5s0
iface enp5s0 inet static
address 198.51.100.10/24
gateway 198.51.100.1/24
#post-up iptables -t nat -A PREROUTING -i enp5s0 -p tcp -m multiport ! --dports 22,8006 -j DNAT --to 172.16.16.2
#post-down iptables -t nat -D PREROUTING -i enp5s0 -p tcp -m multiport ! --dports 22,8006 -j DNAT --to 172.16.16.2
auto vmbr0
iface vmbr0 inet static
address 172.16.16.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up iptables -t nat -A POSTROUTING -s '172.16.16.0/24' -o enp5s0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '172.16.16.0/24' -o enp5s0 -j MASQUERADE
#NAT/Masq
|
留意這些規則(下面)對於 LXC/VM 的互聯網訪問並不是必要的。這個規則是可選的,並且用於實現對特定 VM/容器的外部訪問。
它將所有傳入的流量,除了連接埠 22 和 8006 以外都重新導向到子網中的指定虛擬機。
這裡 22 被排除,所以將仍然可以通過 SSH 連接到 Proxmox,而 8006 是 Web 介面的連接埠。
這將實現類似於 DMZ 的效果,其中所有流量都被路由到特定的虛擬機,可以建立一個轉發服務器,例如 Nginx Proxy Manager,然後將流量路由到其他虛擬機。
1
2
| post-up iptables -t nat -A PREROUTING -i enp0s31f6 -p tcp -m multiport ! --dports 22,8006 -j DNAT --to 172.16.16.2
post-down iptables -t nat -D PREROUTING -i enp0s31f6 -p tcp -m multiport ! --dports 22,8006 -j DNAT --to 172.16.16.2
|
也可以使用手動設置,只需要設定 vmbr0
的 iptables
規則。
例如想打開 8007 連接埠到 PBS 伺服器,可以使用以下規則,當中 post-up
為啟用規則,post-down
為關閉規則。
1
2
| post-up iptables -t nat -A PREROUTING -i enp5s0 -p tcp --dport 8007 -j DNAT --to 172.16.16.40:8007
post-down iptables -t nat -D PREROUTING -i enp5s0 -p tcp --dport 8007 -j DNAT --to 172.16.16.40:8007
|
完整 vmbr0
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| auto vmbr0
iface vmbr0 inet static
address 172.16.16.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '172.16.16.0/24' -o enp5s0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '172.16.16.0/24' -o enp5s0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i enp5s0 -p tcp --dport 8007 -j DNAT --to 172.16.16.40:8007
post-down iptables -t nat -D PREROUTING -i enp5s0 -p tcp --dport 8007 -j DNAT --to 172.16.16.40:8007
post-up iptables -t nat -A PREROUTING -i enp5s0 -p tcp --dport 80 -j DNAT --to 172.16.16.20:80
post-down iptables -t nat -D PREROUTING -i enp5s0 -p tcp --dport 80 -j DNAT --to 172.16.16.20:80
post-up iptables -t nat -A PREROUTING -i enp5s0 -p tcp --dport 443 -j DNAT --to 172.16.16.20:443
post-down iptables -t nat -D PREROUTING -i enp5s0 -p tcp --dport 443 -j DNAT --to 172.16.16.20:443
|
套用更改: