我对 NAT 和 iptables 还不熟悉,我的物理服务器运行的是 CentOS 6,安装了 KVM,另外启动了 2 个 Linux 机器作为 VM - VM2 和 VM3,它们的 IP 分别为 192.168.122.2 和 192.168.122.3。由于我只有一个真实 IP,因此使用 NAT 将外部请求端口转发到 VM 的应用程序,例如将端口 30022 转发到 VM3 的 ssh(端口 22)。设置后一切正常,已经运行了一个月,但在我完成 RAM 升级和服务器重启后,NAT/端口转发不再起作用。
更多信息:
- Iptables 在主机操作系统上运行,但不在客户操作系统上运行。
- 主机操作系统 iptables 已配置 NAT 如下:
目标 保护 优化 源 目标 DNAT tcp -- 任意位置任意位置 tcp dpt:30022 至:192.168.122.3:22 DNAT tcp -- 任意位置 tcp dpt:20022 至:192.168.122.2:22(22)
- 命令iptables -t nat -L -v -n的结果:
pkts 字节数 目标 协议 选择加入 退出 源 目标 6 304 LOG tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 LOG 标志 0 级别 4 前缀 ROUTE APP3 6 304 DNAT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 到:192.168.122.3:22 3 152 DNAT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 到:192.168.122.2:22
- 这意味着当我尝试从本地 PC(独立网络)远程登录 30022 时,包由 NAT 规则处理
已经挣扎了好几天了..有什么帮助吗?
答案1
您应该使用 检查主机上是否启用了 IP 转发cat /proc/sys/net/ipv4/ip_forward
。此命令应打印1
。如果未启用,您应该使用 启用它 echo 1 > /proc/sys/net/ipv4/ip_forward
。