详解Linux下端口映射

端口映射器可实现端口映射功能,一个主要用途就是可以在局域网的网关上运行本程序,将网关服务器的某个端口映射为局域网中某台机器的某个端口,这样,局域网外部访问网关服务器的8081端口就相当于访问了局域网内部某台机器的80端口了。

打开 IP 转发

打开 IP 转发(路由器设备是默认打开的),必须允许 IP 转发,否则即使设置了 nat 映射规则,也是不能发生映射的,因为不开启转发,包不能被发过去。

echo 1 > /proc/sys/net/ipv4/ip_forward

从一台机器映射到另一台机器

映射关系 192.168.122.1:80 —> 192.168.122.221:80 192.168.122.221 在 80 端口开启了 nginx 服务器 本地链路的报文是不需要经过 PREROUTING 与 POSTROUTING 的,所以必须配置 OUTPUT 否则在本机上测试会发现转发规则无效!

  • 在 192.168.122.1 配置如下规则,然后在 192.168.122.1(本机) 的机器能访问 “192.168.122.1:80”
iptables -t nat -A OUTPUT -p tcp -d 192.168.122.1 --dport 80 -j DNAT --to 192.168.122.221:80
  • 在 192.168.122.1 配置如下规则,然后在 192.168.122.29(其他设备) 能访问 ”192.168.122.1:80“
# 配置目的地址转换
iptables -t nat -A PREROUTING -p tcp -d 192.168.122.1 --dport 80 -j DNAT --to 192.168.122.221:80
# 配置源地址转换
iptables -t nat -A POSTROUTING -p tcp -d 192.168.122.221 --dport 80 -j SNAT --to 192.168.122.1

从本机一个端口到另一个端口

映射关系 192.168.122.221:8080 —> 192.168.122.221:80 本地链路上的报文是不需要经过 PREROUTING 与 POSTROUTING 的,所以必须配置 OUTPUT 否则在本机上测试会发现转发规则无效! 192.168.122.221 在 80 端口开启了 nginx 服务器

  • 在 192.168.122.221 配置如下规则, 8080 映射到 80,这样本机能访问 “127.0.0.1:8080”
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 8080 -j DNAT --to-port 127.0.0.1:80
  • 在 192.168.122.221 配置如下规则, 8080 映射到 80,这样能访问 “192.168.122.221:8080”
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80

其他

# 查看 nat 链规则
iptables -t nat -L -n --line-number

# 删除规则 POSTROUTING 的规则 1
iptables -t nat -D POSTROUTING 1

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/9947.html

(0)
晴川运维晴川运维
上一篇 2025年6月21日
下一篇 2025年6月21日

相关推荐

  • 通过eNSP实现静态NAT转换

    eNSP是图形化网络仿真平台,该平台通过对真实网络设备的仿真模拟。网络转换技术也叫做NAT技术,他的作用就是实现私网IP和公网IP 的转换来达到网络的互通 实验环境: pc:172…

    Linux系统 2025年6月4日
  • HTML 元素使用实例

    HTML 文档是由 HTML 元素定义的。HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码,下面为大家详细讲解一下HTML 元素 HTML…

    Linux系统 2025年6月8日
  • Linux下常见端口转发

    在一些实际的场景里,我们需要通过利用一些端口转发工具,比如系统自带的命令行工具或第三方小软件,来绕过网络访问限制触及目标系统,本篇文章重点为大家分享一下Linux下常见端口转发。 …

    Linux系统 2025年6月8日
  • Linux常用命令fsck.minix命令具体使用方法

    Linux fsck.minix命令用于检查文件系统并尝试修复错误。 当minix文件系统发生错误时,可用fsck.minix指令尝试加以参考。 语法 fsck.minix&nbs…

    Linux系统 2025年6月8日
  • 详解zookeeper ACL

    zookeeper 的 ACL(Access Control List,访问控制表)权限在生产环境是特别重要的。ACL 权限可以针对节点设置相关读写等权限,保障数据安全性。perm…

    Linux系统 2025年6月8日
  • Linux下通过命令行管理KVM虚拟环境具体方法

    KVM 是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko 提供和虚拟化核心架构和处理器规范模块,使用 KVM 可允许多个包括 L…

    Linux系统 2025年6月8日
  • Java中JAR包、EAR包、WAR包有什么区别?

    Java中的JAR包、EAR包、WAR包你知道有什么区别吗?本篇文章为大家讲解一下Java中JAR包、EAR包、WAR包。 WAR包 WAR(Web Archive file)网络…

    Linux系统 2025年7月10日
  • 详解golang ssh包使用

    在使用gexpect包发现很多问题之外,这里又尝试使用ssh [email protected]的思路进行用户切换。这里记录下具体的使用方法,遇到的ssh: must s…

    Linux系统 2025年6月21日
  • Windows上面挂载NFS共享具体方法

    Windows上面如何挂载NFS共享?NFS普遍用于unix之间共享,windows默认是不支持这种文件系统的。如果我们要用windows访问NFS的话,而windows系统自身又…

    Linux系统 2025年6月4日
  • 使用CPU加速Linux命令执行速度

    在处理大数据的时候我们总会想着一些并行的操作来加速我们的操作,我们的cpu是多核多线程的,但是我们的有些命令却是单线程的命令,不能够进行并行的运算,如: grep、bzip2、wc…

    Linux系统 2025年6月29日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注