PVE (Proxmox Virtual Environment) 7.4-3网络配置

发布时间 2023-06-15 15:11:57作者: alexanderzjs

简要记录下自己折腾两天的成果,以便后来人使用。顺便吐槽下,网上的教程五花八门,感觉就是说不到点上,我来试着解释清楚每一步需要做什么方便大家理解。

基础环境介绍

公司给配置了一台个人用的台式机,接入公司网络,由于公司网络限制,只分配了一个公司内网地址(假设这个地址是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/eno2/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 eno2 -j MASQUERADE。      # 下面几行是网络转发,虚拟机的包转发出去到互联网的,这里的地址是网段地址
        post-down iptables -t nat -D POSTROUTING -s '192.168.1.0/24' -o eno2 -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

上面修改完毕后,记住运行ifreload -a来更新网络

PVE虚拟机网络设置

虚拟机里面的网络设置就相对简单多了,我用的虚拟机网卡一般是Intel E1000。进入虚拟机后,手动设置一个IP地址,假设是192.168.1.2,掩码是255.255.255.0。这里的网关地址就是上面那个网桥的网关地址192.168.1.1。

都设置好以后,从虚拟机ping下面几个IP地址:

  1. 虚拟机网关192.168.1.1
  2. 宿主机地址101.101.101.101
  3. 宿主机网关101.101.101.1

当上面三个地址都ping通了以后,说明网络基本上就通了。如果ping不通宿主机网关,那说明配置还是有问题,后续联网的时候,包根本到不了网关,也就不能上网。

最后,别忘了虚拟机里面设置代理,没错,虚拟机还要再设置一次http://111.111.111.111:1111,要不然即使能访问网关,但是代理不设置还是出不去的。