当前位置: 首页 > news >正文

如何设置iptables,让网络流量转发给内部容器mysql

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 服务,你可以按照以下步骤进行设置:

  1. 确保系统已经启用了 IP 转发功能
    vim /etc/sysctl.conf
   net.ipv4.ip_forward=1

保存文件后,使用以下命令使更改生效:

sudo sysctl -p
  1. 设置 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 地址。

  1. 允许转发的数据包通过防火墙。使用以下命令启用转发:
   sudo iptables -A FORWARD -p tcp --dport 13306 -d <内部容器的IP地址> -j ACCEPT

替换 <内部容器的IP地址> 为你的 MySQL 容器实际的 IP 地址。

  1. 如果你的系统上启用了防火墙(例如 UFW),请确保允许相应的端口通过防火墙。例如,在 UFW 中,你可以运行以下命令开放 13306端口:

    sudo ufw allow 13306
    

    这将允许外部主机连接到你的系统的 13306端口。

完成上述步骤后,当有外部请求进入系统的 13306端口时,iptables 将会将流量转发给内部容器中 MySQL 服务的 3306 端口,从而实现端口转发。请确保你的 MySQL 容器已经正确配置并监听了相应的端口。

3.永久保存规则

在 CentOS 系统上,可以使用以下方法来永久设置 iptables 规则:

  1. 使用 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 服务将自动加载保存的规则。

  2. 使用 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 规则之后,将其保存并加载,以便规则在系统重启后仍然生效。

http://www.lryc.cn/news/95171.html

相关文章:

  • 数字IC实践项目(7)—CNN加速器的设计和实现(付费项目)
  • 基于深度学习的高精度80类动物目标检测系统(PyTorch+Pyside6+YOLOv5模型)
  • 海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储
  • 【NCNN】NCNN中Mat与CV中Mat的使用区别及相互转换方法
  • Android 13 设置自动进入wifi adb模式
  • (笔记)插入排序
  • 结构型模式 - 组合模式
  • EDM营销过时了?不,这才是跨境电商成功的最佳工具
  • 【大数据之Hive】二十五、HQL语法优化之小文件合并
  • spring 连接oracle数据库报错{dataSource-1} init error解决,电脑用户名问题
  • 行业视野::人工智能与机器人
  • 【Python入门系列】第十七篇:Python大数据处理和分析
  • spring.profiles的使用详解
  • Docker使用总结
  • MySQL 数据库的备份与还原案例分享 2023.07.12
  • verilog实现数码管静态显示
  • MySQL-DML-添加数据insert
  • Prometheus、Grafana使用
  • UG\NX二次开发 使用throw重新抛出异常
  • 为什么单片机可以直接烧录程序的原因是什么?
  • 使用 uiautomator2+pytest+allure 进行 Android 的 UI 自动化测试
  • Android APP性能及专项测试
  • 人工智能自然语言处理:N-gram和TF-IDF模型详解
  • linux内核调试工具记录
  • XSS 攻击的检测和修复方法
  • Spring后置处理器BeanFactoryPostProcessor与BeanPostProcessor源码解析
  • NXP i.MX 6ULL工业开发板硬件说明书( ARM Cortex-A7,主频792MHz)
  • Ubuntu 放弃了战斗向微软投降
  • 高并发的哲学原理(六)-- 拆分网络单点(下):SDN 如何替代百万人民币的负载均衡硬件
  • 用OpenCV进行图像分割--进阶篇