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

iptables端口转发配置实现

一、iptables端口转发实现

需求描述:应用系统部署在C主机上且服务端口为3306,此时需要A主机访问C主机的3306端口。因为网络策略原因A主机与C主机之间无法直接访问,但A主机与B主机网络互通,B与C之间网络互通。所以从B主机进行中转,以达到A主机与C主机网络打通的目的。即10.41.1.1访问10.42.2.2:3307端口,并通过iptables将请求转发到10.43.3.3:3306端口

操作系统:Centos 7

示例IP:

A主机:10.41.1.1(请求发起主机)

B主机:10.42.2.2(转发实现主机,转发操作在该主机上进行操作)

C主机:10.43.3.3(应答主机,应用系统部署所在主机)

需求实现(所有转发操作都在B主机上执行):

1.开启Linux内核的转发功能,编辑 /etc/sysctl.conf文件

将net.ipv4.ip_forward = 0
修改为:net.ipv4.ip_forward = 1
开启内核转发功能

2.修改完成后执行:sysctl -p  使配置修改生效

3.检查iptables状态,确保iptables处于运行状态

systemctl status iptables

开启状态

4.添加转发规则到iptables规则表中

iptables -t nat -A PREROUTING -p tcp --dport 3307 -j DNAT --to-destination 10.43.3.3:3306

5.为转发请求指明请求来源,将请求B主机3307端口转发至C主机3306端口

iptables -t nat -A POSTROUTING -p tcp -d 10.43.3.3 --dport 3306 -j SNAT --to-source 10.42.2.2

6.放行转发命令

#eth0改为实际使用网卡(一般是eth0)
# 放行Forward的数据包
iptables -I FORWARD -i eth0 -j ACCEPT
# 开启网卡混杂模式(允许任意流向的数据包)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

7.保存转发规则(一直生效)

service iptables save
#执行这条命令后才会将规则保存至系统配置中,即使机器重启也不会有影响,否则下次机器重启时规则会失效

8.功能验证

在A主机上执行:telnet 10.42.2.2 3307端口,能通说明配置成功

二、iptables端口转发实现过程的坑

1.服务器为云服务器时,源端、目的端防火墙or安全组需要进行放开

2.配置完端口转发规则后需要放开网卡的数据转发规则,步骤6

3.主机的内核转发配置是否放开,步骤1

三、iptables nat转发规则删除

语法: iptables -t nat -D chain rulenum [options]
注解: chain 是链的意思,就是INPUT FORWARD 之类的定语
rulenum 是该条规则的编号。从上往下数,确定需要删除的规则序号

可以使用 iptables -t nat -L -n 列出指定的链的规则的编号后对指定规则进行删除

示例:

[root@VM-centos ~]# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3307 to:10.224.65.3:3306
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3308 to:10.224.64.12:3306
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3309 to:10.224.64.11:3306
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3310 to:10.226.64.213:3306

删除第四条nat转发规则,执行命令:

iptables -t nat -D POSTROUTING 4

centos7操作系统默认使用firewalld,在执行:systemctl status iptables时,报错:Failed to restart iptables.service: Unit not found.

原因是centos7操作系统没有安装iptables,此时执行以下两条命令后即可

yum install -y iptablesyum install iptables-services -y   #主要是这个

执行完成上面两条命令后,再次执行systemctl status iptables  即可恢复正常

iptables启动:systemctl start iptables

iptables重启:systemctl restart iptables

iptables查看启动状态:systemctl status iptables

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

相关文章:

  • 分享88个搜索链接PHP源码,总有一款适合你
  • SUSE Studio 的用户可以透过 SUSE Gallery 分享做好的 Linux appliance
  • Linux 准确延时
  • 魔域富甲天下mysql打不开_《魔域》魔域3.2无敌版之富甲天下心得
  • 属兔的人今日运势-360星座网_【十二生肖明日运势查询】12月11日
  • BEV感知:BEV开山之作LSS(lift,splat,shoot)原理代码串讲
  • JAVA 异常Exception讲解
  • 一张图解释TCP和UDP有啥区别,太精辟了!
  • B 站出面回应源码泄露门事件!裁员报复还是反抗 996?
  • 区块链白皮书(2023年)
  • 【并发编程】--- interrupt、interrupted和isInterrupted使用详解
  • 需要了解下Android的Recovery模式
  • 世界上最难的视觉图_世界上最长的蛇有多长?四川惊现55米洪荒巨蟒(图)
  • 各种电子书格式及优缺点
  • 无限制版电驴搜索器(绿色版)
  • 塞尔达传说gba_3分钟快聊《塞尔达传说》全系列
  • 点子库
  • 古文中惊艳的句子,绝对有你想要的!
  • python初学入门————列表
  • 基于51单片机的12864液晶显示4X4矩阵键盘程序仿真
  • q讯家园看加密空间 官方免费版
  • 445port入侵详细解释
  • 如何优化百度搜索引擎?(10个技巧让你的网站更容易被搜索到)
  • MT6732芯片资料MT6732芯片最新参考设计MT6732芯片规格书
  • 验证邮箱平台
  • MEGA是Mega Limited公司推出的一款云存储服务。
  • ProEssentials的MFC 图表库在VS2019-VS2022上机试用教程
  • 计算机丢失lidcef.dll,lidcef.dll(libcef.dll丢失修复文件)V1.0 免费版
  • 浅析近场通信技术特点及未来可能的应用与发展
  • 【备查】DELL服务器硬件报错解决方法——错误代码寄解决和处理办法