How to setup NAT on Proxmox

How to setup NAT on Proxmox

How to setup NAT on Proxmox

Proxmox mặc định sử dụng bridge network để cung cấp internet cho VM, nhưng trong chế độ bridge bạn cần có IP pubic cho các VM để thông được mạng, nếu bạn có ít IP public hoặc muốn triển khai proxmox theo dạng private có thể sử dụng NAT để VM truy cập mạng thông qua IP public của proxmox.

Để thực hiện NAT trên proxmox bạn có thể làm như sau

Chuẩn bị:

Cài gói card mạng:

apt install ifupdown2

Bước 1: Điều chỉnh lại card mạng public:

auto lo
iface lo inet loopback

auto eno1
#real IP address
iface eno1 inet static
address 198.51.100.5
netmask 255.255.255.0
gateway 198.51.100.1

auto vmbr0
#private sub network
iface vmbr0 inet static
address 10.10.10.1
netmask 255.255.255.0
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 '10.10.10.0/24' -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE

Trong mục trên eno1 là card mạng vật lý chứa IP public của proxmox

card bridge vmbr0 là card ảo được đặt IP: 10.10.10.1 làm gateway của dải IP local 10.10.10.0/24 sẽ cấp cho các máy ảo

bridge_ports none: card vmbr0 không kết nối ra bên ngoài trực tiếp

sau khi xong bạn save lại file config: mặc định cổng mạng vmbr0 sẽ tự up,

Bước 2: Cấu hình Ip cho VM

VM có thể đặt IP như sau:

IP : 10.10.10.2
Gateway : 10.10.10.1
Netmask : 255.255.255.0

Step 4 : (Optional) Port forwarding to access from outside world

Cấu hình Port forwarding truy cập từ ngoài vào VM, ờ đây mình giả sử tạo forwarding port ssh 22

chạy trên host proxmox nat port 3033 từ proxmox vào port ssh 22 của vm

iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 3033 -j DNAT --to 10.10.10.2:22

sau khi xong bạn có thể  ssh từ ngoài vào vm vớ i IP proxmox, port ssh 3033

để khi khỏi động không bị mất bạn có thể chèn vào file /etc/rc.local

Ngoài ra bạn cũng có thể chèn trực tiếp trong file khai báo của vmb0

post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 6022 -j DNAT --to 10.10.10.5:22
post-down iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 6022 -j DNAT --to 10.10.10.5:22
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 6122 -j DNAT --to 10.10.10.6:22
post-down iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 6122 -j DNAT --to 10.10.10.6:22