22
2019
03
17:45:36

iptables 设置端口转发/映射

iptables 设置端口转发/映射

网络拓扑



服务器A有两个网卡

    内网ip:192.168.1.3

    外网ip:10.138.108.103

    本地回环:127.0.0.1


服务器B有网卡,8001提供服务

    内网ip:192.168.1.1

1

2

3

4

5

6

7

目的

使用户通过外网10.138.108.103:8001访问内网服务器192.168.1.1:8001

1

思路



如图2所示,端口转发走的是下发A路,利用nat表中prerouting做dnat,用postrouting做snat


包分析

时期操作源IP:PORT目的IP:PORT

packet in用户访问1.2.3.4:510.138.108.103:8001

preroutingdnat1.2.3.4:5192.168.1.1:8001

routing decision判断是否转发1.2.3.4:5192.168.1.1:8001

postroutingsnat10.138.108.103:X192.168.1.1:8001

packet out转发包10.138.108.103:X192.168.1.1:8001

开启内核ip转发

nano /etc/sysctl.conf


将下项注释去掉


# net.ipv4.ipv4_forward=1

1

使改动生效


sudo sysctl -p


脚本

#!/bin/bash

pro='tcp'


src_host1='192.168.1.3'

src_host2='10.138.108.103'

src_port=8001


Dst_Host='192.168.1.1'

Dst_Port=8001


# 清空规则

iptables -F

iptables -X

iptables -Z

iptables -t nat -F


# Destination network  address translate (dnat)


# 如图2所示

iptables -t nat -A PREROUTING  -p $pro -d $src_host1  --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port

iptables -t nat -A PREROUTING  -p $pro -d $src_host2  --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port



iptables -A FORWARD -p $pro -d $Dst_Host --dport $Dst_Port -j ACCEPT


# 本地连接不经过prerouting,只经过output链,所以想要在服务器A通过本地ip访问服务器B需要在output 链增加dnat规则

iptables -t nat -A OUTPUT -p $pro -d $src_host1 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port

iptables -t nat -A OUTPUT -p $pro -d $src_host2 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port




# source network address translate (snat)

iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host --dport $Dst_Port -j SNAT --to $src_host1


# 显示已有规则

iptables -t nat -L -n 

--------------------- 

作者:light_jiang2016 

来源:CSDN 

原文:https://blog.csdn.net/light_jiang2016/article/details/79029661 

版权声明:本文为博主原创文章,转载请附上博文链接!




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/404.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: