如果虚拟接口的流量通过 TPROXY 目标转发,如何使虚拟机内的端口可供主机访问?

如果虚拟接口的流量通过 TPROXY 目标转发,如何使虚拟机内的端口可供主机访问?

我有一个连接到虚拟接口的虚拟机,该虚拟接口的所有流量都通过 TPROXY 透明代理发送:

ip tuntap add tap0 mode tap
ip link set tap0 up
ip addr add 10.0.0.1/24 dev tap0
ip rule add fwmark 1088 table 100

ip rule add fwmark 1088 table 100
ip route add local default dev tap0 table 100
iptables -t mangle -A PREROUTING -i tap0 -p tcp \
  -j TPROXY -s 10.0.0.2 --on-ip 10.0.0.1 \
  --on-port 10000 --tproxy-mark 1088

主机端的虚拟接口的IP地址为10.0.0.1,虚拟机的IP地址为10.0.0.2。但我无法从主机端访问虚拟机地址(例如 10.0.0.2:8080)上的任何 TCP 端口,因为 iptables TPROXY 规则会阻止所有到达虚拟机地址的连接。

如何让虚拟机IP中的端口在主机端可以访问?

相关内容