要使用 iptables 将网络流量转发给内部容器中的 MySQL 服务,你可以按照以下步骤进行设置:
确保系统已经启用了 IP 转发功能。可以通过编辑
/etc/sysctl.conf
文件并确保以下行的注释被取消掉:#net.ipv4.ip_forward=1
保存文件后,使用以下命令使更改生效:
sudo sysctl -p
设置 NAT 规则来实现端口转发。假设 MySQL 容器监听的端口是 3306,并且外部访问的端口是 8888,你可以使用以下命令来添加 iptables 规则:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8888 -j DNAT --to-destination <内部容器的IP地址>:3306
替换
<内部容器的IP地址>
为你的 MySQL 容器实际的 IP 地址。允许转发的数据包通过防火墙。使用以下命令启用转发:
sudo iptables -A FORWARD -p tcp --dport 3306 -d <内部容器的IP地址> -j ACCEPT
替换
<内部容器的IP地址>
为你的 MySQL 容器实际的 IP 地址。如果你的系统上启用了防火墙(例如 UFW),请确保允许相应的端口通过防火墙。例如,在 UFW 中,你可以运行以下命令开放 8888 端口:
sudo ufw allow 8888
这将允许外部主机连接到你的系统的 8888 端口。
完成上述步骤后,当有外部请求进入系统的 8888 端口时,iptables 将会将流量转发给内部容器中 MySQL 服务的 3306 端口,从而实现端口转发。请确保你的 MySQL 容器已经正确配置并监听了相应的端口。