![多个 DHCP NIC 和本地 LAN - Debian、Proxmox](https://linux22.com/image/779611/%E5%A4%9A%E4%B8%AA%20DHCP%20NIC%20%E5%92%8C%E6%9C%AC%E5%9C%B0%20LAN%20-%20Debian%E3%80%81Proxmox.png)
tl;dr:如何让 3 个 NIC 进行路由、备份/故障转移并相互通信?
我有一个带有 3 个 NIC 的 proxmox 服务器 vmbr1:公司局域网 - dhcp(工程部) vmbr2:机器人网络(静态) vmbr3:公司局域网 - 不同子网(业务部)
现在,我想通过 vmbr1 和 vmbr3 提供 VM。vmbr2 可以访问一些机器人和自动化系统。
我通过工程子网 ssh 到 vmbr1,并通过 wpa_supplicant 访问互联网(仅在 vmbr1 上工作)。有时我会在重启/重新加载后失去连接,因为路由不好,而且根本没有收到 dhcp 提供。
vmbr1 和 vmbr3 桥接至我的 vms 并将端口转发至我的 pfSense,后者在 robonet(vmbr2)中为 dhcp 提供服务。我希望主要通过 vmbr1 连接互联网,并通过两个接口为 vms 提供服务。
我勉强掌握了路由的想法,但却看不到让它运行的最终步骤。
接口:
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT read its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!
auto lo
iface lo inet loopback
iface eno2 inet manual
auto eno1
iface eno1 inet static
hwaddress ac:1f:6b:e9:6e:56
# zuweisung virtueller FAKE MAC um doppelte dhcp anfrage zu vermeiden
auto vmbr1
iface vmbr1 inet dhcp
hwaddress ac:1f:6b:e9:7e:56
wpa-conf /etc/wpa_supplicant/wpasupp.conf
wpa-driver wired
wpa-logfile /var/log/eit-wpa.log
wpa-debug-level 2
#pre-up /etc/network/preup.sh
#post-down /etc/network/postdown.sh
bridge-ports eno1
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A PREROUTING -i vmbr1 -p tcp -m multiport ! --dport 22,8006 -j DNAT --to 192.0.0.2
post-up iptables -t nat -A PREROUTING -i vmbr1 -p udp -j DNAT --to 192.0.0.2
post-up ip route replace default via 10.152.32.254 dev vmbr1
# eit-w1, Zuweisung der originalen NIC ENO1 MAC.
# Öffnen der Firewall für alle ports außer 22 und 8006. April2022: 80 und 443 für nginx baremetal - wurde wieder entfernt für tests (16.8.2022)
# Öffnen aller udp ports zur pfsense
auto enx00e04c680542
iface enx00e04c680542 inet manual
altname eno3
# USB NIC für vmbr3 IRAS-W0
auto vmbr3
iface vmbr3 inet dhcp
hwaddress ac:1f:6b:e9:7e:73
bridge-ports enx00e04c680542
bridge-stp off
bridge-fd 0
#post-up route del default dev vmbr3
#post-up ip route add 10.181.116.0/22 dev vmbr3 src 10.181.116.185 table irasnet
#post-up ip route add default via 10.181.116.254 dev vmbr3 table irasnet
#post-up ip rule add to 10.181.116.185/32 table irasnet
#post-up ip rule add from 10.181.116.185/32 table irasnet
# IRAS W0 Brücke für VM ans ADS - Netzwerk. Funktioniert auch...
auto vmbr2
iface vmbr2 inet static
address 172.31.1.25/16
bridge-ports eno2
bridge-stp off
bridge-fd 0
hwaddress ac:1f:6b:e9:7f:60
# robonet, lokaler Zugriff über eno2. NAT Forwarding kommt dann über die Pfsense
auto vmbr100
iface vmbr100 inet static
address 192.0.0.1/30
bridge-ports none
bridge-stp off
bridge-fd 0
hwaddress ac:1f:6b:e9:7f:61
post-up iptables -t nat -A POSTROUTING -s '192.0.0.0/30' -o vmbr1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.0.0.0/30' -o vmbr1 -j MASQUERADE
# firenet Brücke zur Firewall und nur für Kommunikation von Server zu Firewall mit NAT und PAT
#https://linuxhint.com/debian_network_interface_setup/
#https://wiki.debian.org/NetworkConfiguration#Using_DHCP_to_automatically_configure_the_interface
更新:
也许我的基本想法是错误的 - 我不确定我是否应该通过 iptables 和预路由来配置它,或者将 pfsense 直接连接到校园网 (companylan)。图 1 的目标是推出不同的 Web 服务,并使用 pfsense+haproxy 或 nginx 对它们进行反向代理,这些服务都托管在此服务器 (myproxmox) 上
- myproxmox.campus.net/app1...(例如 pfsense、西门子 hmi)
- myproxmox.campus.net/app2...
default via 10.152.47.254 dev vmbr1
10.152.32.0/20 dev vmbr1 proto kernel scope link src 10.152.32.76
10.181.116.0/22 dev vmbr3 proto kernel scope link src 10.181.116.185
172.31.0.0/16 dev vmbr2 proto kernel scope link src 172.31.1.25
192.0.0.0/30 dev vmbr100 proto kernel scope link src 192.0.0.1