要在 Linux 中进行内网转发,可以使用 iptables 或者更现代化的 nftables。以下是使用 iptables 进行内网转发的步骤:
- 启用 IP 转发功能:
sudo sysctl -w net.ipv4.ip_forward=1
这将允许 Linux 主机作为路由器转发数据包。
- 添加转发规则:
假设你想将来自 IP 地址 192.168.1.2
的请求转发到 IP 地址 10.0.0.2
,可以使用以下命令添加转发规则:
sudo iptables -t nat -A PREROUTING -s 192.168.1.2 -j DNAT --to-destination 10.0.0.2
这会将来自 192.168.1.2
的所有数据包目标地址修改为 10.0.0.2
。
- 如果需要,添加相应的过滤规则:
sudo iptables -A FORWARD -s 192.168.1.2 -d 10.0.0.2 -j ACCEPT
这会允许转发从 192.168.1.2
到 10.0.0.2
的数据包。
- 最后,保存 iptables 规则以确保重启后规则不丢失:
sudo service iptables save
这些命令只是示例,你需要根据实际情况调整 IP 地址和端口。iptables 是一个功能强大但复杂的工具,建议在操作之前仔细了解相关文档或者进行测试以避免不必要的影响。
在上述的规则中,所有来自指定源 IP 地址的流量都会被转发到目标地址,而不会区分端口。如果你想要仅转发特定端口的流量,你可以通过添加匹配源端口的条件来实现。
例如,如果你只想转发源端口为 80 的流量,你可以使用以下规则:
sudo iptables -t nat -A PREROUTING -s 192.168.1.2 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
这样只有目标端口为 80 的流量会被转发到目标地址。同样地,你也可以根据需要添加过滤规则来限制流量。