服务器实现端口转发的N种方式

这篇具有很好参考价值的文章主要介绍了服务器实现端口转发的N种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

在一些实际的场景里,我们需要通过利用一些端口转发工具,比如系统自带的命令行工具或第三方小软件,来绕过网络访问限制触及目标系统。下文为大家总结了linux系统和windows系统端口转发常用的一些方法。

注:Linux实现端口转发需要内核支持,请确保内核参数net.ipv4.ip_forward值为1

一、采用iptables实现

iptables是一个功能丰富的Linux防火墙工具,可以用于配置网络地址转换(NAT)规则,从而实现端口转发。

# 端口映射规则
iptables -t nat -A PREROUTING -p tcp --dport [目标端口] -j DNAT --to-destination [映射地址]:[映射端口]
iptables -t nat -A POSTROUTING -p tcp -d [映射地址] --dport [映射端口] -j SNAT --to-source [本地地址]

# 案例:将远程主机 192.168.1.101 的 80 端口映射到本地的 8080 端口,输入以下命令
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.101:80
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.101 --dport 80 -j SNAT --to-source [本地IP]
# 注意要将 [本地IP] 替换为本地 IP 地址。

# 查看转发规则
iptables -t nat --list --line-number

参数说明

  • -t nat:指定转换表(nat 表);
  • -A PREROUTING:指定要添加到哪个链中;
  • -p tcp :指定协议为 TCP;
  • --dport [目标端口]:指定需要映射到的目标端口;
  • -j DNAT:指定使用目标地址转换;
  • --to-destination [映射地址]:[映射端口]:指定目标地址和端口;
  • -A POSTROUTING:指定要添加到哪个链中;
  • -d [映射地址]:指定目标地址;
  • --dport [映射端口]:指定目标端口;
  • -j SNAT:指定使用 源地址转换;
  • --to-source [本地地址]:指定本地地址。

二、采用firewalld实现

firewalld是另一个功能强大的Linux防火墙工具,也可以用于配置网络地址转换(NAT)规则来实现端口转发。

# 规则
firewall-cmd --zone=public --add-forward-port=port=[本机端口]:proto=[协议]:toaddr=[远程主机IP]:toport=[远程主机端口] --permanent

# 案例:将192.168.1.10的80端口转发到本机的8080
firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.10:toport=80 --permanent
firewall-cmd --reload

# 查看已设置的规则
firewall-cmd --list-all

参数说明

  • --zone=public:指定了这条规则的生效区域是public
  • --add-forward-port:指定了添加一条端口转发规则,具体规则参数解释如下:
    • port:需要转发的端口
    • proto:协议类型,支持tcp、udp、icmp
    • toport:目标端口
    • toaddr:可选参数,转发到指定IP地址

三、采用ssh隧道实现

利用SSH为TCP链接提供的隧道功能实现端口转发。
# 规则
ssh -N -L [远程端口]:[本地地址]:[本地端口] root@[远程地址]

# 案例:将服务器 172.20.150.199 上的 8000 端口映射到本地的 8888 端口
ssh -N -L 8000:localhost:8888 root@172.20.148.199

更多高级用法可访问 https://www.lixueduan.com/posts/linux/07-ssh-tunnel/

四、采用nc实现

NC(也称作Netcat)是一个类Unix操作系统中的网络工具,有着强大的端口转发功能。

# 格式
nc -lp [本地映射端口] -c "nc [远程主机地址] [远程主机端口]"

# 案例:将192.168.1.110的3306映射到本机的3000端口
nc -lp 3000 -c "nc 192.168.1.110 3306"

五、采用ncat实现 

ncat是一个多功能网络工具,可用于端口转发。它是nc(netcat)的升级版本。

# 规则
ncat --sh-exec "ncat [远程主机地址] [远程主机端口]" -l [本地映射端口]  --keep-open

# 案例:将10.100.39.144的80端口转发到本地8000
ncat --sh-exec "ncat 10.100.39.144 80" -l 8000 --keep-open

六、采用socat实现

socat是一款非常强大的网络工具,在实现端口映射时,可以用它来建立TCP连接,将本地端口映射到远程机器上的一个端口。下面是使用socat实现端口映射的步骤:

# 规则
socat TCP-LISTEN:[本地映射端口],reuseaddr,fork TCP:[远程主机地址]:[远程主机端口]

# 案例: 将192.168.199.236的22端口,映射到本机的7777端口
socat TCP-LISTEN:7777,reuseaddr,fork TCP:192.168.199.236:22

七、Windows系统使用netsh实现

在 Windows 操作系统中,可以使用 netsh 命令实现网络端口转发。以下是使用 netsh 实现端口转发的步骤:

# 端口转发
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=80 connectaddress=10.100.38.14 connectport=80
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=443 connectaddress=10.100.38.14 connectport=443

# 展示
netsh interface portproxy show v4tov4
侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
0.0.0.0         80          10.100.38.14    80
0.0.0.0         443         10.100.38.14    443

# 删除
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=80

 文章来源地址https://www.toymoban.com/news/detail-410580.html

到了这里,关于服务器实现端口转发的N种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx 反向代理服务器端口转发问题

    先介绍一下项目背景,公司里有个外包Saas项目,这里假设为A项目( 前后端不分离 );项目架构大概如下;但是项目部署到生产环境时,那台服务器80端口被其他应用占用了(我尼玛...),nginx监听端口那边只能监听其他端口了,比如监听:18000,通过nginx反向代理将18000端口转发到

    2024年02月04日
    浏览(56)
  • Linux 服务器 Firewalld 防火墙配置端口转发

    业务应用系统的web容器无法更改IP地址,例如临时SSH端口,但是不想修改SSH配置;例如某些服务web服务需要通过公共IP进行统一访问;例如外网访问内网资源等;例如快速调整web容器的端口而不需要更改服务的任何配置等。 流量转发命令语法为: firewalld-cmd --permanent --zone=区域

    2024年02月06日
    浏览(52)
  • Windows Server 2012 搭建网关服务器并端口转发

    使用 Windows server 作为Hyper-V 虚拟出许多虚拟机,基本上都分配了内网地址,现在需要这些虚拟机访问外网,或者外网直接访问这些虚拟机,必须配置一个网关服务器。我决定直接使用 Windows 的远程访问中的 NAT 服务来完成。 没有找到官方文档,本文完全参考了以下文章 在Wi

    2024年02月07日
    浏览(43)
  • 【让云服务器更灵活】iptables转发tcp/udp端口请求

    iptables转发tcp/udp端口请求 路由转发是计算机网络中的一种重要概念,特别是在网络设备和系统之间。它涉及到如何处理和传递数据包,以及决定数据包应该发送到哪个网络设备或路由表中的哪条路径,iptables是本文主要应用的软件技术。 1 2 本文主要介绍以下几个情况的配置

    2024年02月03日
    浏览(57)
  • 使用IO完成端口实现简单回显服务器

    使用IO完成端口实现简单回显服务器,因为是测试用的,所以代码很粗糙。 提醒 使用的是ReadFile、WriteFile来实现Overlapped IO,正式场合应该用WSARecv、WSASend,原因:来自《Windows网络编程技术》 8.2.5节 在这里插入图片描述 技术点记录下 io以同步方式立马完成时,系统也会将此通知

    2024年02月06日
    浏览(38)
  • iis配置网站服务器配置端口,如何实现IIS多个网页同一个端口?

    在Internet Information Services (IIS) 中配置多个网站共用同一个端口是可能的,但需要进行一些特定的配置。以下是实现这一目标的一般步骤: 创建多个网站: 首先,您需要在 IIS 中创建多个不同的网站。每个网站应该有自己的根目录和内容。 绑定共享端口: 在每个网站的配置中

    2024年02月13日
    浏览(78)
  • 通过SSH实现将本地端口反向代理到公网服务器

    有一台公网服务器,能够对外开放服务进行访问,但是这个公网服务器资源较低,无法运行太多服务 有一台闲置电脑可以全天候开机使用,且配置较好,可以部署多个服务,但是没有公网IP 需求:将本地的服务反向代理到公网服务器,以实现通过公网服务器访问内网资源 必

    2024年02月15日
    浏览(64)
  • 如何实现服务器对外开放?路由器端口映射怎么设置?

    使用路由器后,Internet用户无法访问到局域网内的主机,因此不能访问内网搭建的Web、FTP、Mail等服务器。路由器端口映射功能可以实现将内网的服务器映射到Internet,从而实现服务器对外开放。路由器端口映射怎么设置? 下面给大家介绍一下具体设置步骤。 第一步:设置虚拟

    2024年02月16日
    浏览(54)
  • FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考

    2024年02月11日
    浏览(51)
  • nginx反向代理实现不同域名映射到同一台服务器的相同端口

    在实际应用中,我们经常会遇到多个域名需要映射到同一台服务器的相同端口的情况,这时可以使用nginx反向代理来实现。 以实现将www.example.com和www.test.com都映射到127.0.0.1的80端口为例,具体步骤如下: 修改hosts文件 在本地hosts文件中添加以下两行: 配置nginx反向代理 在ngi

    2024年02月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包