[转]iptables 设置端口转发/映射

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

网络拓扑

服务器A有两个网卡

内网ip:192.168.1.3

外网ip:10.138.108.103

本地回环:127.0.0.1

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

内网ip:192.168.1.1

目的

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

思路

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

包分析

开启内核ip转发

nano /etc/sysctl.conf

将下项注释去掉

# net.ipv4.ipv4_forward=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 –line-number

关于xmsg

技术面前人人平等.同时技术也不分高低贵贱.正所谓学无大小,达者为尊.
此条目发表在功能配置, 思维启发分类目录,贴了标签。将固定链接加入收藏夹。