NAT는 라우팅 전에 발생합니다.

NAT는 라우팅 전에 발생합니다.

현재 Proxmox를 사용하여 프라이빗 클라우드 클러스터를 구축하고 있습니다. 내 클러스터에는 헤드 노드 1개와 컴퓨팅 노드 2개가 포함되어 있습니다.

내 헤드 노드는 NAT 서버와 openvpn 서버, 그리고 3개의 NIC(아웃바운드용 1개, 컴퓨팅 노드당 1개)를 호스팅합니다. NAT를 사용하면 두 컴퓨팅 노드 모두와 인터페이스할 수 있습니다. 두 컴퓨팅 노드 모두에서 라우터당 ~30개의 VLAN이 있는 라우터를 호스팅하고 있습니다.

내 목표는 라우터에 연결할 때 VPN 클라이언트의 주소를 볼 수 있는 것입니다. 현재 VPN을 사용하여 헤드에 연결한 다음 라우터에 ping 또는 ssh를 시도하면 연결이 헤드 노드의 IP 주소에서 오는 것으로 표시됩니다. 어떤 도움이라도 대단히 감사하겠습니다!

내 경로는 다음과 같습니다.

default via *.*.*.1 dev eno1 onlink 
10.10.1.0/24 via 10.10.1.2 dev tun0 
10.10.1.2 dev tun0 proto kernel scope link src 10.10.1.1 
*.*.*.0/25 dev eno1 proto kernel scope link src *.*.*.46 
192.168.0.0/19 via 192.168.77.1 dev vmbr0 
192.168.32.0/19 via 192.168.76.6 dev vmbr1 
192.168.76.0/24 dev vmbr1 proto kernel scope link src 10.10.1.1
192.168.77.0/24 dev vmbr0 proto kernel scope link src 192.168.77.1 

그리고 NAT 규칙(현재 Firewalld를 사용하고 있습니다):

-A POST_public_allow ! -o lo -j MASQUERADE

답변1

귀하가 보여준 NAT 규칙은관습POSTROUTING다른 테이블(아마도 테이블 의 )에 있는 다른(표준) 체인에서 호출되는 것으로 추정되는 체인입니다 . nat를 사용하여 볼 수 있습니다 iptables -t nat -L POSTROUTING.

현재 겪고 있는 문제는 헤드 노드를 컴퓨팅 노드와 연결하는 인터페이스에 가장이 적용된다는 것입니다.

이를 처리하는 방법은 헤드 노드가 인터넷에 연결하는 데 사용하는 인터페이스에만 SNAT를 두는 것입니다.

하지만 한 가지 문제에 주목하세요. VPN을 사용하여 헤드 노드에 액세스한다는 사실은(질문을 올바르게 읽은 경우) 헤드 노드에서 과도한 매스커레이딩을 비활성화하면 컴퓨팅 노드가 전송 중인 패킷을 볼 수 있음을 의미합니다.~ 위에VPN은 전송 프로그램이 있는 네트워크에서 오는 것으로 간주됩니다. 프라이빗 서브넷인 것으로 추정되므로 다음 사항을 확인해야 합니다. - 소스 네트워크와 헤드 노드와 컴퓨팅 노드를 연결하는 네트워크의 주소가 서로 다릅니다(둘 다 터널이 사용하는 서브넷과 분리되어야 함). - 컴퓨팅 노드 소스 네트워크에 대한 경로 규칙이 있어야 합니다(해당 목적지로 향하는 패킷을 헤드 노드로 보내기 위해). - 헤드 노드에는 IP 전달이 활성화되어 있어야 합니다.

관련 정보