婚恋网站建设无锡谷歌推广
1.创建一个mysql ,无法外部访问
docker run -d --name mysql_container -e MYSQL_ROOT_PASSWORD=liuyunshengsir -v /path/to/mysql_data:/var/lib/mysql mysql
2.设置规则外部直接可访问
要使用 iptables 将网络流量转发给内部容器中的 MySQL 服务,你可以按照以下步骤进行设置:
- 确保系统已经启用了 IP 转发功能
vim/etc/sysctl.conf
net.ipv4.ip_forward=1
保存文件后,使用以下命令使更改生效:
sudo sysctl -p
- 设置 NAT 规则来实现端口转发。假设 MySQL 容器监听的端口是 3306,并且外部访问的端口是 8888,你可以使用以下命令来添加 iptables 规则:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 13306 -j DNAT --to-destination 172.17.0.2:3306
替换 <内部容器的IP地址>
为你的 MySQL 容器实际的 IP 地址。
- 允许转发的数据包通过防火墙。使用以下命令启用转发:
sudo iptables -A FORWARD -p tcp --dport 13306 -d <内部容器的IP地址> -j ACCEPT
替换 <内部容器的IP地址>
为你的 MySQL 容器实际的 IP 地址。
-
如果你的系统上启用了防火墙(例如 UFW),请确保允许相应的端口通过防火墙。例如,在 UFW 中,你可以运行以下命令开放 13306端口:
sudo ufw allow 13306
这将允许外部主机连接到你的系统的 13306端口。
完成上述步骤后,当有外部请求进入系统的 13306端口时,iptables 将会将流量转发给内部容器中 MySQL 服务的 3306 端口,从而实现端口转发。请确保你的 MySQL 容器已经正确配置并监听了相应的端口。
3.永久保存规则
在 CentOS 系统上,可以使用以下方法来永久设置 iptables
规则:
-
使用
iptables
命令保存和加载规则:这是一种简单的方法,当系统重启时会自动加载保存的规则。-
配置所需的
iptables
规则。例如,添加规则:sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -j DROP
-
保存规则到文件:
sudo service iptables save
-
这将把当前的
iptables
规则保存到/etc/sysconfig/iptables
文件中。 -
当系统启动时,
iptables
服务将自动加载保存的规则。
-
-
使用
iptables-services
包:这是一个包含iptables
服务的软件包,可让你更方便地管理iptables
规则。-
首先,确保已安装
iptables-services
包:sudo yum install iptables-services
-
启动
iptables
服务,并设置为在系统启动时自动启动:sudo systemctl start iptables sudo systemctl enable iptables
-
配置所需的
iptables
规则。例如,添加规则:sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -j DROP
-
保存规则到文件:
sudo service iptables save
-
这将把当前的
iptables
规则保存到/etc/sysconfig/iptables
文件中。 -
当系统启动时,
iptables
服务将自动加载保存的规则。
-
确保在配置 iptables
规则之后,将其保存并加载,以便规则在系统重启后仍然生效。