Iptables实现端口映射

说明:
一. 需要将外网访问本地IP(172.16.16.12)的80端口转换为访问(172.16.16.13)的8000端口,这就需要用到iptables的端口映射

1. 需要先开启linux的数据转发功能

vi /etc/sysctl.conf     

        net.ipv4.ip_forward=0  ==> net.ipv4.ip_forward=1

sysctl -p

2. 更改iptables,使之实现nat映射功能

# 将外网访问172.16.16.1280端口转发到172.16.16.138000端口

iptables -t nat -A PREROUTING -d 172.16.16.12 -p tcp --dport 80 -j DNAT --to-destination 172.16.16.13:8000

# 将172.16.16.138000端口将数据返回给客户端时,将源ip改为172.16.16.12

iptables -t nat -A POSTROUTING -d 172.16.16.13 -p tcp --dport 8000 -j SNAT 172.16.16.12

二. 以上是针对从一台机到另一台机的端口转发,如果要针对本机进行端口转发,就需要按如下操作

# 将外网访问80端口的数据转发到8000端口

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8000

# 将本机访问80端口的转发到本机8080

iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080

iptables -t nat -A OUTPUT -p tcp -d 192.168.4.177 --dport 80 -j DNAT --to 127.0.0.1:8080

# 本地连接指的是在本机上,用 127.0.0.1 或者本机 IP 来访问本机的端口 本地连接的数据包不会通过网卡,而是由内核处理后直接发给本地进程。这种数据包在 iptables 中只经过 OUTPUT 链,而不会经过 PREROUTING 链。所以需要在 OUTPUT 链中进行 DNAT。除了对 127.0.0.1 之外,对本机 IP (即 192.168.4.177) 的访问也属于本地连接

转载于:https://my.oschina.net/ruokluo/blog/1939645

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值