iptables流量转发的一个例子

配置说明:

  • A主机nginx主页地址:192.168.242.3:8080

在这里插入图片描述

  • B主机nginx主页地址:192.168.242.4:80

在这里插入图片描述

现在想要将访问A主机8080端口的流量转发到主机B的80端口,并且将B的反馈返还给访问者


操作步骤:

关闭两台机器的selinux,防火墙

主机A与B共同配置 (这里可能你的linux重启后会恢复,所以下次出现问题的时候优先考虑一下是不是这个原因)

# 主机A,B都要配置以下命令
setenforce 0  #暂时设置selinux为permissive模式
systemctl stop firewalld #关闭防火墙

操作完后主机A与B都应该是以下状态(注意这里是临时关闭,下次开机可能就恢复了,想要永久关闭请查阅相关资料)

getenforce # 查看selinux状态

在这里插入图片描述

systemctl status firewalld # 查看防火墙状态

在这里插入图片描述


开启A主机的允许ip转发,并配置主机A的iptables的nat表的POSTROUTING与PREROUTING链

# 在主机A配置
sysctl -w net.ipv4.ip_forward=1 # 使A临时支持ip转发
sysctl net.ipv4.ip_forward # 如果显示1则开启成功
# 将目的地址为192.168.242.3:8080的流量转为192.168.242.4:80的地址(使得访问192.168.242.3:8080的相当于访问192.168.242.4:80)
iptables -t nat -I PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.242.4:80
# 将刚刚的流量的源地址再改为192.168.242.3:8080(使得主机B能够反馈上面的目的地址的访问,否则源地址还是浏览器请求那边的地址,导致主机B并不认识,因为这条流量是A给他的,导致B不知道该返回给谁)
iptables -t nat -I POSTROUTING -p tcp --dport 80 -j SNAT --to 192.168.242.3:8080

配置完成应为类似如下显示

sysctl net.ipv4.ip_forward # 检查主机A是否开启了ip转发

在这里插入图片描述

iptables -t nat -L -v -n

在这里插入图片描述


成果展示:

访问A主机(192.16.242.3:8080)

在这里插入图片描述

访问主机B(192.168.242.4:80)

在这里插入图片描述

可能错误

如果你访问主机A时超时,那么可能有如下原因:

  • 一,浏览器缓存,这时候做好清除一下缓存,我在第一次配置时也由于这个原因很头痛,最后发现就是浏览器缓存
  • 二,可能是两台主机的防火墙或者iptables规则拒绝了访问,这时候要检查你的防火墙(firewalld)是否关闭,检查iptables每个表的规则,注意iptables目前是黑名单还是白名单。
  • 三,你的虚拟机网络连接是否支持不同虚拟环境的局域网通信,NAT模式?桥接模式?……请了解你的连接模式以及其作用与特点(我这里是NAT模式)
  • 四,注意可能是你两台主机不在一个网段或者被隔离了(可以互相ping一下,如果能通就可以排除了)
  • 五,selinux,selinux,selinux重要的事说三遍,对于初学者来说,这一点很容易被忽略,建议学习用的系统永久设置selinux为宽容模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值