zoukankan      html  css  js  c++  java
  • ProxmoxVE_PVE防火墙_本机静态路由_本机端口转发_修改默认8006端口_旁路由VM

    ProxmoxVE_PVE防火墙_本机静态路由_本机端口转发_修改默认8006端口_旁路由VM

    转载注明来源: 本文链接 来自osnosn的博客,写于 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
       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的防火墙总开关即可。
    • Proxmox VE中虚拟机非对等路由出站数据包被丢的情况分析

    PVE 节点中有个主路由器,且有ipv6

    • VM 客户机(路由器)的防火墙如果Yes
      • 需要在/etc/pve/firewall/<VMID>.fw中,[OPTIONS]中,加入radv: 1。允许路由广播。
    • pve节点 和 vm客户机 两个地方的 Firewal->Options 中 NDP 也要设置为 Yes。允许网络邻居发现协议。

    转载注明来源: 本文链接 来自osnosn的博客.

  • 相关阅读:
    iOS Graphics 编程
    如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
    Python服务器开发二:Python网络基础
    Access一些问题
    托管调试助手报错
    ConnectionString
    百度也开源
    Microsoft SQL Server 错误代号: 15535 解决方法
    临时表的一个用法
    类型初始值设定项引发异常
  • 原文地址:https://www.cnblogs.com/osnosn/p/14590683.html
Copyright © 2011-2022 走看看