iptables 做端口转发

该博客详细介绍了如何使用iptables在服务器web1(192.168.100.10)上进行端口转发,使得客户端(192.168.200.156)访问80端口时,实际连接到web2(192.168.100.254:80),访问8888端口时连接到192.168.100.253:8888。通过iptables的PREROUTING、FORWARD和POSTROUTING链设置,实现了数据包的目的地转换和源地址伪装,从而达到端口转发的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iptables 内建各表格与链的相关性

 

iptables 所在的服务器                                  web1                                        web2                                         客户端

eth0:192.168.100.10                           eth0:192.168.100.254                 eth0:192.168.100.253                 192.168.200.156

eth1:192.168.200.158  


web1中httpd.conf里Listen:80

web2中httpd.conf里Listen:8888

目的:客户端访问192.168.100.10:80 端得到192.168.100.254的web界面,访问192.168.100.10:8888端得到的是192.168.100.253:8888的web界面,从而实现

端口转发功能


#清楚默认规则
iptables -F
iptables -X
iptables -Z

iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z

#默认操作
iptables  -P INPUT DROP
iptables  -P OUTPUT ACCEPT
iptables  -P FORWARD DROP



#INPUT基本规则
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP


#FORWARD基本规则
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state INVALID -j DROP

#放行所有通过lo的数据包
iptables -A INPUT -i lo -j ACCEPT 

#icmp
iptables -A INPUT -p icmp --icmp-type any -s 192.168.200.0/24 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type any -s 192.168.100/24 -j ACCEPT



#sshd
iptables -A INPUT -s 192.168.200.0/24 -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.200.0/24 -i eth1 -p udp --dport 22 -j ACCEPT


#修改数据包目的地址
iptables -t nat -A PREROUTING -p tcp -d 192.168.200.158 --dport 80 -j DNAT --to 192.168.100.254:80
iptables -t nat -A PREROUTING -p tcp -d 192.168.200.158 --dport 8888 -j DNAT --to 192.168.100.253:8888
#修改数据包来源地址
iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.254 --dport 80 -j SNAT --to 192.168.100.10
iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.253 --dport 8888 -j SNAT --to 192.168.100.10

#FORWARD设置
iptables -A FORWARD -p tcp -d 192.168.100.254 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.100.253 --dport 8888 -j ACCEPT

分析:

1)当客户端192.168.200.156访问192.168.200.158:80时,首先客户端发的数据包会经过PREROUTING链,根据上面iptables配置可知,目的地址被改为192.168.100.254:80

r再经过路由判断数据包会经过上图B,然后经过FORWARD链,有iptables配置知此数据包会被放行,然后经过POSTROUTING链,有iptables配置可知,来源被修改为192.168.100.10

然后数据包通过iptables所在的服务器转发到了web1

2)web1通过分析客户端发来的数据包,可知web1发送的数据包目的地址为192.168.100.10,首先此数据包会经过PREROUTING链,此时Iptables配置里没有对来自

192.168.100.254:80的规则,则放行,经过路由判断,目的地址为192.168.100.10正好是iptables所在的机器此时经过端口好等一系列的映射就能返回到客户端手中(具体过程不清楚,web返回的数据只要知道目的地址192.168.100.10就能返回)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值