PVE (Proxmox Virtual Environment) 7.4-3网络配置
简要记录下自己折腾两天的成果,以便后来人使用。顺便吐槽下,网上的教程五花八门,感觉就是说不到点上,我来试着解释清楚每一步需要做什么方便大家理解。
基础环境介绍
公司给配置了一台个人用的台式机,接入公司网络,由于公司网络限制,只分配了一个公司内网地址(假设这个地址是101.101.101.101/24,网关地址是101.101.101.1,这个网关地址很关键,不要搞错了,其实可以从内网地址101.101.101.101加子网掩码算出来的),本身从台式机访问外网需要网络代理(假设这个代理地址是111.111.111.111,端口号是1111)。并且,公司还不允许你的虚拟机分配真实内网地址(想分配到101.101.101.XXX,想都别想)
PVE宿主机(Debian 11)配置
首先,要让自己的宿主机连接上互联网,这一般只需要台式机的物理网卡是好的(假设这个网卡是eno1),并且在环境变量里面export HTTP_PROXY=http://111.111.111.111:1111和export HTTPS_PROXY=http://111.111.111.111:1111就可以了(设置的位置就不多说了,一般是.bashrc)。好了,这时候,别高兴得太早了,很可能ping不通任何的地址,有可能是公司内网屏蔽了这个命令,不着急,试试用curl -v https://www.baidu.com/ 。
然后,配置apt代理,输入命令:vim /etc/apt/apt.conf.d/proxy.conf,再输入以下内容:
Acquire::http::Proxy "http://111.111.111.111:1111/";
Acquire::https::Proxy "http://111.111.111.111:1111/";
最后运行apt update,如果看到正常运行,说明PVE宿主机环境基本上配置好了。
PVE网络配置
PVE创建的时候应该默认创建了vmbr0这个桥接网络(网络IP段设置为192.168.1.XXX),下面,修改/etc/network/interfaces这个文件(里面的解释可能不对,望海涵):
auto lo
iface lo inet loopback
auto eno1
iface eno1 inet static # 这里的网口要用固定地址了
address 101.101.101.101/24 # 这个就是你公司内网的地址
gateway 101.101.101.1 # 这个是你公司的网关地址
post-up echo 1 > /proc/sys/net/ipv4/ip_forward # 下面这两行是做网络转发的,也就是从互联网过来的包你要转给下面的网关继续转到虚拟机
post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp # 同上
auto vmbr0
iface vmbr0 inet static
address 192.168.1.1/24 # 网桥的地址,这个地址在虚拟机里面要当作网关来使用,在虚拟机里不要再用这个地址了
bridge-ports none # 这个bridge-ports不用设置,千万别设置成eno1,小心整个web端进不去了
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 eno1 -j MASQUERADE # 下面两行是网络转发,虚拟机的包转发出去到互联网的,这里的地址是网段地址
post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o eno1 -j MASQUERADE
post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 # 下面两行是为了过防火墙用的
post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1
post-up iptables -t nat -A PREROUTING -i eno1 -p tcp --dport 2222 -j DNAT --to 192.168.1.2:22. # 下面两行是SSH端口转发的要求,宿主机2222转到虚拟机22端口
post-down iptables -t nat -D PREROUTING -i eno1 -p tcp --dport 2222 -j DNAT --to 192.168.1.2:22
上面修改完毕后,记住运行ifreload -a
来更新网络
PVE虚拟机网络设置
虚拟机里面的网络设置就相对简单多了,我用的虚拟机网卡一般是Intel E1000。进入虚拟机后,手动设置一个IP地址,假设是192.168.1.2,掩码是255.255.255.0。这里的网关地址就是上面那个网桥的网关地址192.168.1.1。
都设置好以后,从虚拟机ping下面几个IP地址:
- 虚拟机网关192.168.1.1
- 宿主机地址101.101.101.101
- 宿主机网关101.101.101.1
当上面三个地址都ping通了以后,说明网络基本上就通了。如果ping不通宿主机网关,那说明配置还是有问题,后续联网的时候,包根本到不了网关,也就不能上网。
最后,别忘了虚拟机里面设置代理,没错,虚拟机还要再设置一次http://111.111.111.111:1111,要不然即使能访问网关,但是代理不设置还是出不去的。