参考:

盘算了下 IPv4 地址除去宿主机占用一个,剩下四个,现在有个 code-server (vscode 的网页版,本文也是使用这个来编辑的),实测使用 ipv6 地址无法安装插件,这样就还剩 3 个了,如果再开个数据库,想学习 k8s 就只有 2 个 IP 了,实在有点捉襟见肘。

突然想到,我可以为 VM 配置内网(私有网络),也就是俗称的 NAT 小鸡。SSH 可以通过 NAT ,也可以压根不 NAT,通过 VNC 也可以管理,只是这样会有点麻烦。

在 Proxmox 上添加虚拟网卡

在 Proxmox 宿主机上修改 /etc/network/interfaces ,最后面加上一个桥接网卡 vmbr1,配置如下

1
2
3
4
5
6
7
8
9
10
11
auto vmbr1
iface vmbr1 inet static
address 192.168.1.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 '192.168.1.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o vmbr0 -j MASQUERADE

简单说下配置的意思。

前面一段是网卡信息。
bridge_ports 没有指向的网卡,之前安装的时候,我曾把 vmbr0 指向到 物理网卡。
bridge_stp offbridge_fd 0 不知道什么意思。

后面一段是和网卡相关的附属配置。
post- ,这个单词前缀,是 after ,behind 的意思。
post-up, post-down 可以理解为,在网卡启用后,在网卡关闭后。

在网卡开启后,需要在内核配置开启转发,然后在 iptables 上配置一条 nat 规则,源地址为 ‘192.168.1.0/24’ 的流量,转发到 vmbr0 接口。 -A,是添加规则。

在网卡关闭后,-D 删除这条规则。

注意:
这个配置文件是没有语法校验的,请确保无误。万一打错了一个字母,重启后你的母鸡就离线了。。

确认好后,重启网络程序,来应用更改。建议重启的时候关掉 VM,否则 VM 的网络会有问题,也需要重启 VM 的。

1
/etc/init.d/networking restart

如果配置没问题的话,shell 会立刻重连上。

如果重启网络程序的时候,有 VM 正在运行,VM 的网络会断掉,所以你需要重启一下 VM。

VM 上的网络配置

VM 的网络配置如下:

1
2
3
4
5
IP 地址: 192.168.1.2
子网掩码:255.255.255.0
网关: 192.168.1.1

DNS: 1.1.1.1

DNS 需要使用外部 DNS,这里填网关地址是不行的,母鸡上没有处理 DNS 的程序。