ProxmoxVE_PVE防⽕墙_本机静态路由_本机端⼝转发_修改默认
8006端⼝_旁路由VM
转载注明来源: 来⾃,写于 2021-03-29.
以下内容基于 pve 版本为 6.2-4
PVE ⾃⾝设置静态路由
按 Debian 的设置来,pve 的⽹卡没有使⽤ NetworkManager 管理。
所以直接修改/etc/network/interfaces,记得 up/down 要对应。
在对应的 iface vmbr0 下⾯,添加静态路由,使⽤ ip route 指令。
PVE 添加 nat 的 redirect 规则
pve 的管理 web ⼝ 8006,是写死在 perl5 的模块中。
/usr/share/perl5/PVE/Service/pveproxy.pm
如果要修改的话,要改好多个地⽅。包括防⽕墙,issue,……,太复杂。
所以还是考虑⽤ iptables 的 redirect 规则。重定向443端⼝。
pve 的防⽕墙,只能添加 filter 表的过滤规则。⽆法添加 nat 表的规则。
为了不破坏 pve 的防⽕墙,就不另外安装第三⽅防⽕墙服务了。
pve 也没有 rc.local 可以写。
只好写在/etc/network/interfaces中了,⽤ iptables 命令。
⽰例
iface vmbr0 inet static
route add 添加路由address 10.123.123.99/24
gateway 10.123.123.250
...
up ip route add 10.0.0.0/8 via 10.123.123.1 proto static
down ip route del 10.0.0.0/8 via 10.123.123.1
post-up iptables -t nat -A PREROUTING -p tcp -d 10.123.123.99/32 --dport 443 -j REDIRECT --to-ports 8006
post-down iptables -t nat -D PREROUTING -p tcp -d 10.123.123.99/32 --dport 443 -j REDIRECT --to-ports 8006
修改 interfacces ⽂件后,重启就会⽣效。
如果不想马上重启,⼿⼯执⾏⼀下添加的命令即可。
pve的防⽕墙开/关,不影响 nat 表中的内容。
开启 PVE 的防⽕墙
集 Datacenter -> Firewall -> Options -> Firewall 的值改为 Yes。这个是防⽕墙总开关。
防⽕墙总开关打开后,节点就不能被 ping 通了。这是正常现象。如需被ping,⾃⾏在节点添加⼀条允许
规则即可。
如果防⽕墙总开关为 No,下⾯的就不⽤做了。同时 VM 的防⽕墙也⽆法使⽤。
节点 Node -> Firewall -> Options -> Firewall 的值改为 Yes。
节点 Node -> Firewall 中添加规则,允许全⽹访问,允许从any地址到⾃⾝10.123.123.99,端⼝TCP/8006.
因为,pve 缺省的防⽕墙规则,只允许 10.123.123.0/24 ⽹段访问 8006.
或者,不添加规则,去改变管理的地址集ipset来实现。
缺省只允许 local network 访问 8006 和 22。其实是因为缺省的管理ipset仅包含本地局域⽹。
可以参考⽂档man pve-firewall中的说明,修改这个管理的ipset(地址集)。
在⽂件/etc/pve/firewall/cluster.fw中,添加[IPSET management],写⼊允许的ip和IP范围。
还能设置⿊名单ipset [IPSET blacklist],不过⿊名单是全局的,连vm都不能访问。
另外还有个地⽅限制管理的ip。(是应⽤层级的,⾮防⽕墙层级)。
⽂档man pveproxy中的说明,创建/etc/default/pveproxy
写⼊配置项⽬ ALLOW_FROM=, DENY_FROM=, POLICY=
VM 客户机的防⽕墙,按需使⽤。这⾥的规则只影响对应的 VM,不影响 pve 本⾝。
PVE 节点中有个旁路由器的 vm
PVE的防⽕墙总开关No,这个旁路由⼯作正常。没有问题。
PVE的防⽕墙总开关Yes.
pve同节点中其他vm使⽤这个旁路由,没问题。
pve节点外部的实体机,使⽤这个旁路由,可以ping通⽬标,但⽆法浏览⽬标⽹站。
通过查看 iptables 的规则。发现是 filter 表 FORWARD 链中第⼀条规则,
-A PVEFW-FORWARD -m conntrack --ctstate INVALID -j DROP限制的。
这条规则在模块/usr/share/perl5/PVE/Firewall.pm中,受配置项nf_conntrack_allow_invalid控制。
解决办法,在/etc/pve/nodes/<nodename>/host.fw中的[OPTIONS]中,
加⼊nf_conntrack_allow_invalid: 1。
然后,重新开关⼀次pve的防⽕墙总开关即可。
【】
PVE 节点中有个主路由器,且有ipv6
VM 客户机(路由器)的防⽕墙如果Yes
需要在/etc/pve/firewall/<VMID>.fw中,[OPTIONS]中,加⼊radv: 1。允许路由⼴播。
pve节点和 vm客户机两个地⽅的 Firewal->Options 中 NDP 也要设置为 Yes。允许⽹络邻居发现协议。转载注明来源: 来⾃.