在运行 Proxmox 的专用机器上,端口转发存在一些问题。我为 LoadBalancing 创建了一个 LXC-Container,并将端口 80 和 443 上的所有传入请求转发到它。如果我从此设置中的任何节点通过 https 使用 curl 或 git clone,则会在端口 443 上拒绝连接。这是一个问题,我的 GitLab Runners 无法连接到 GitLab。所以我需要一种方法来仅转发来自外部 IP 的端口 80 和端口 443 的请求。
例如:
外部 IP:88.88.88.88、88.88.89.88
负载均衡器 IP:10.10.10.20
如果我尝试通过端口 443 从 10.10.10.10 或 10.10.10.20 进行连接,则会收到连接被拒绝错误。
我的配置在 /etc/network/interfaces
auto lo
iface lo inet loopback
iface enp2s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 88.88.88.88/24
gateway 88.88.88.1
bridge-ports enp2s0
bridge-stp off
bridge-fd 0
auto vmbr1
iface vmbr1 inet static
address 10.10.10.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1
# Nameserver
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 53 -j DNAT --to 10.10.10.10:53
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 53 -j DNAT --to 10.10.10.10:53
post-up iptables -t nat -A PREROUTING -i vmbr0 -p udp --dport 53 -j DNAT --to 10.10.10.10:53
post-down iptables -t nat -D PREROUTING -i vmbr0 -p udp --dport 53 -j DNAT --to 10.10.10.10:53
# Load Balancer
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.10.10.20:80
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.10.10.20:80
post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to 10.10.10.20:443
post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to 10.10.10.20:443
iface vmbr0:0 inet static
address 88.88.89.88/24
gateway 88.88.89.1
bridge-ports enp2s0
bridge-stp off
bridge-fd 0
非常感谢您的帮助。