配置iptables实现本地端口转发的方法详解

admin3年前云主机116


场景
假如你在用 resin 调试一个 Web 程序,需要频繁地重启 resin。这个 Web 程序需要开在 80 端口上,而 Linux 限制 1024 以下的端口必须有 root 权限才能开启。但是你又不愿意在调程序的时候总是开着一个 root 终端。在这种情况下,你可以把 resin 开在默认的 8080 端口上,然后使用 iptables 来实现和真的把服务开在 80 端口上一样的效果。
方法
将与 80 端口的 TCP 连接转接到本地的 8080 端口上。使用 DNAT (Destination Network Address Translation) 技术可以满足这一要求。因为 iptables 在处理本地连接和远程连接的方法不同,所以需要分开处理。下面假设本机的 IP 是 192.168.4.177。
远程连接
远程连接指的是由另外一台机器连接到这台机器上。这种连接的数据包在 iptables 会首先经过 PREROUTING 链,所以只需在 PREROUTING 链中作 DNAT。

复制代码代码如下:
# iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.168.4.177 --dport 80 -j DNAT --to 192.168.4.177:8080

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

复制代码代码如下:
# 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

注意事项
你也许需要通过以下命令打开 IP 转发:

复制代码代码如下:
# echo 1 > /proc/sys/net/ipv4/ip_forward

在进行试验时,如果要重新设置 iptables,需要首先清空 nat 表:

复制代码代码如下:
# iptables -F -t nat

实例操作
这里将本地接口IP 61.144.a.b 的3389端口 转发到 116.6.c.d的3389      (主要访问到61.144.a.b的3389端口,就会跳转到116.6.c.d的3389)
1、 首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0    这样允许iptalbes FORWARD。
2、 service iptables stop  关闭防火墙
3、 重新配置规则

复制代码代码如下:
iptables -t nat -A PREROUTING --dst 61.144.a.b -p tcp --dport 3389 -j DNAT --to-destination 116.
6.c.d:3389
iptables -t nat -A POSTROUTING --dst 116.6.c.d -p tcp --dport 3389 -j SNAT --to-source 61.144.a.b
service iptables save

        将当前规则保存到 /etc/sysconfig/iptables
        若你对这个文件很熟悉直接修改这里的内容也等于命令行方式输入规则。
5、 启动iptables 服务, service iptables start


可以写进脚本,设备启动自动运行;


复制代码代码如下:
# vi /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.</p><p>touch /var/lock/subsys/local</p><p>sh /root/myshipin.log
---------------------------------------------------------------------
vi myshipin.log
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.</p><p>iptables -F -t nat
iptables -t nat -A PREROUTING --dst 61.144.a.b -p tcp --dport 3389 -j DNAT --to-destination 116.6.c.d:3389
iptables -t nat -A POSTROUTING --dst 116.6.a.b -p tcp --dport 3389 -j SNAT --to-source 61.144.c.d
~
----------------------------------------------------------------
TCP</p><p>iptables -t nat -A PREROUTING --dst 61.144.a.b -p tcp --dport 9304 -j DNAT --to-destination 10.94.a.b:9304
iptables -t nat -A POSTROUTING --dst 10.94.a.b -p tcp --dport 9304 -j SNAT --to-source 61.144.a.b</p><p>UDP
iptables -t nat -A PREROUTING --dst 61.144.a.b -p udp --dport 9305 -j DNAT --to-destination 10.94.a.b:9305
iptables -t nat -A POSTROUTING --dst 10.94.a.b -p udp --dport 9305 -j SNAT --to-source 61.144.a.b

另:

>iptables配置文件的位置:/etc/sysconfig/iptables 外网地址发变化在配置文件里修改就可以了。《配置iptables实现本地端口转发的方法详解》来自互联网同行内容,若有侵权,请联系我们删除!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

为何不使用香港服务器:广告联盟不宜使用的原因

一、政治因素香港主权移交后的政治环境一直不稳定,金融风险、社会动荡、政治不确定性都给香港市场带来了影响。此外,香港与中国大陆的关系也面临着种种困难,例如最近的反送中示威活动引发的对若干法案的质疑,整个...

免费申请个人主页

什么是个人主页个人主页是一个由个人设计和维护的网页,旨在向他人展示自己的个人信息、兴趣爱好、技能和成果等信息,并让人们更好地了解和联系自己。为什么需要个人主页在当今数字化时代,人们越来越注重个人品牌的...

境外服务器代理平台:隐私安全始终如一

一、优势1:网络匿名性境外服务器代理平台可以隐藏用户的真实IP地址,这意味着用户可以在互联网上以匿名身份访问网站、下载资源等,提高了用户的网络匿名性。在一些需要保护隐私的场合,如政治活动、新闻报道、反...

衡天云服务器报价

衡天云服务器报价云服务器是一种基于云计算技术的虚拟主机服务,它可以提供高性能、高可用、高可靠、高灵活的计算资源,方便用户进行数据处理、网站托管、应用部署、存储等各种任务。在众多的云服务器服务商中,衡天...

购买国内云服务器能做什么

引言云服务器是一种通过互联网提供计算能力和存储空间的服务,近年来在国内市场上呈现了快速增长的势头。购买国内云服务器可以为用户提供强大且灵活的计算和存储能力以及快捷高效的网络连接,让用户在无需投入大量资...

台湾主域名服务器如何连接

1. 什么是台湾主域名服务器?台湾主域名服务器(Taiwan Root DNS Server)是Internet上最重要的服务器之一。它是网络域名系统(DNS)的一部分,负责将域名转换为IP地址。当你...