nftables를 사용하여 호스트 트래픽을 내부 VM으로 리디렉션할 수 없음

nftables를 사용하여 호스트 트래픽을 내부 VM으로 리디렉션할 수 없음

내 문제는 다음과 같습니다: 우분투 20 호스트에서. 외부에서 액세스할 수 있는 다중 채널 하이퍼바이저와 가상 머신이 있습니다.

  • 물리적 호스트: eth1 192.168.10.33/16

  • 가상 머신: mpqemubr0 10.54.32.232/24

전달이 활성화되었습니다:

cat /etc/sysctl.conf | grep forward
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

각 인터페이스에서도 활성화됩니다.

cat /proc/sys/net/ipv4/conf/mpqemubr0/forwarding
1

cat /proc/sys/net/ipv4/conf/eth0/forwarding 
1

iptables 및 ufw가 비활성화되고 nftables가 설치됩니다.

nftables 구성은 다음과 같습니다.

#!/usr/sbin/nft -f
flush ruleset
table ip nat {
        chain prerouting {
            type nat hook prerouting priority 100;
            
            ip daddr 192.168.10.33 tcp dport {80,8080} dnat 10.54.32.232:8080
        }
        chain postrouting {
            type nat hook postrouting priority 100; policy accept;
            ip saddr 10.54.32.0/24 oifname {eth0,mpqemubr0} masquerade
        }
}
table inet filter {
    chain input {
        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
            ip daddr 10.54.32.232 accept
    }
    chain output {
        type filter hook output priority 0;
    }
}
  • 호스트에서 포트 8080을 통해 VM에 텔넷으로 연결할 수 있습니다.
  • 외부에서 주인에게 연락할 수 있어요
  • VM에서 외부로 ping할 수 있습니다.

호스트에서 VM으로 외부적으로 트래픽을 리디렉션할 수 없으며 호스트에서 tcpdump를 사용하면 시스템에서 패킷이 도착하는 것을 볼 수 있지만 포트 8080 또는 호스트 10.54.32.232에는 출력이 없습니다.

sudo tcpdump -i any -n port 80 or port 8080 -vvvv
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
14:30:36.229571 IP (tos 0x0, ttl 63, id 5375, offset 0, flags [DF], proto TCP (6), length 60)
    10.55.55.16.38848 > 192.168.10.33.80: Flags [S], cksum 0x71ba (correct), seq 560636356, win 64860, options [mss 1380,sackOK,TS val 1972236760 ecr 0,nop,wscale 7], length 0

분명히 가상 머신은 인터페이스에 들어오는 어떤 것도 보지 못합니다.

예전에는 동일한 호스트의 다른 VM과 작동했지만 이를 다시 생성해야 했고 새 VM은 다른 IP를 사용했으며 새 VM IP와 일치하도록 nftables.conf를 변경한 후에도 더 이상 작동하지 않습니다(그런데, 이전 가상 머신)이 더 이상 존재하지 않습니다.

구성이 누락된 것 같습니다. 그런데 어디에 있나요?

당신의 도움을 주셔서 감사합니다!

관련 정보