首页 > 系统相关 >Linux 或 Windows 上实现端口映射

Linux 或 Windows 上实现端口映射

时间:2023-05-27 09:12:33浏览次数:47  
标签:index Windows Linux portproxy 192.168 nat 172.16 端口映射

Linux 或 Windows 上实现端口映射

Linux就该这么学 2023-05-27 08:02 发表于北京

图片

链接:https://www.cnblogs.com/connect/p/server-port-proxy.html 排版:入门小站

通常服务器会有许多块网卡,因此也可能会连接到不同的网络,在隔离的网络中,某些服务可能会需要进行通信,此时服务器经过配置就可以承担起了转发数据包的功能。

一、Windows 下实现端口映射

1.  查询端口映射情况

netsh interface portproxy show v4tov4

2. 查询某一个 IP 的所有端口映射情况

netsh interface portproxy show v4tov4 | find "[IP]"
例:
netsh interface portproxy show v4tov4 | find "192.168.1.1"

3. 增加一个端口映射

netsh interface portproxy add v4tov4 listenaddress=[外网IP] listenport=[外网端口] connectaddress=[内网IP] connectport=[内网端口]
例:
netsh interface portproxy add v4tov4 listenaddress=2.2.2.2 listenport=8080 connectaddress=192.168.1.50 connectport=80

4. 删除一个端口映射

netsh interface portproxy delete v4tov4 listenaddress=[外网IP] listenport=[外网端口]
例:
netsh interface portproxy delete v4tov4 listenaddress=2.2.2.2 listenport=8080

二、Linux 下端口映射

1. 允许数据包转发

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A FORWARD -i [内网网卡名称] -j ACCEPT
iptables -t nat -A POSTROUTING -s [内网网段] -o [外网网卡名称] -j MASQUERADE
例:
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A FORWARD -i ens33 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens37 -j MASQUERADE

2. 设置端口映射

iptables -t nat -A PREROUTING -p tcp -m tcp --dport [外网端口] -j DNAT --to-destination [内网地址]:[内网端口]
例:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 6080 -j DNAT --to-destination 10.0.0.100:6090

实验:将部署在内网的服务映射到外网

实验环境

  1. VMWare Workstation Pro

  2. 5 台最小化安装的 centos 7 虚拟机

实验拓扑

图片

内网外网是相对Server4来说的。
Server1Server2为内网环境的两台服务器;
Server3为外网环境下的一台服务器;
Server4为一台双网卡主机,分别连接192.168.50.0/24172.16.2.0/24两个网络。

配置实验环境

1. Server1,2,3 上搭建 HTTP 服务

用 Python 在Server1上搭建一个简单的 HTTP 服务

cd ~
echo "server1" > index.html
python -m SimpleHTTPServer 8080
图片

Server2、Server3同理

对照实验

client上访问Server1的资源

curl http://192.168.50.11:8080/index.html
图片

client上访问Server2的资源

curl http://192.168.50.12:8080/index.htm
图片

client上访问Server3的资源

curl http://172.16.2.11:8080/index.html
图片

可以看到,外网的client是无法访问内网Server1,Server2的资源的。

Server4上配置端口映射

临时配置

#允许数据包转发
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A FORWARD -i ens33 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens37 -j MASQUERADE
#设置端口映射
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.50.11:8080
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8082 -j DNAT --to-destination 192.168.50.12:8080

永久配置

如果需要永久配置,则将以上命令追加到/etc/rc.local文件。

检查效果

client上访问 Server1 的资源

curl http://172.16.2.100:8081/index.html

client上访问Server2的资源

curl http://172.16.2.100:8082/index.html
图片

client上访问Server3的资源

curl http://172.16.2.11:8080/index.html
图片

如果Server4为 Windows,替换一下相应的命令即可

Windows 的 IP 信息如下

网卡IP 地址子网掩码默认网关备注
Ethernet0 192.168.50.105 255.255.255.0 - 内网网卡
Ethernet1 172.16.2.105 255.255.255.0 - 外网网卡
图片

配置并查看端口映射情况

netsh interface portproxy add v4tov4 listenaddress=172.16.2.105 listenport=8081 connectaddress=192.168.50.11 connectport=8080
netsh interface portproxy add v4tov4 listenaddress=172.16.2.105 listenport=8082 connectaddress=192.168.50.12 connectport=8080
netsh interface portproxy show v4tov4

检查效果

client节点上

curl http://172.16.2.105:8081/index.html
curl http://172.16.2.105:8082/index.html
curl http://172.16.2.11:8080/index.html
图片

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

图片

刘遄老师QQ:5604215

Linux技术交流群:3861509

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!

 

阅读原文 阅读 270 分享此内容的人还喜欢   Go 语言 map 是并发安全的吗?     AlwaysBeta 不看的原因   第5回 超强大!赋予VsCode灵魂的7款扩展,全部解锁     量化风云 不看的原因   最近一周github热门开源项目盘点     程序那些事儿 不看的原因   写留言      

标签:index,Windows,Linux,portproxy,192.168,nat,172.16,端口映射
From: https://www.cnblogs.com/cheyunhua/p/17436250.html

相关文章

  • Linux安装Maven-V3.9.2
    1、下载Maven进入Apachemaven官网https://maven.apache.org/download.cgi下载Maven的二进制压缩包  2.上传到服务器进行解压tar-zxvfapache-maven-3.9.2-bin.tar.gz 3.配置环境变量#配置环境变量exportMAVEN_HOME=/fanjf/maven-3.9.2exportPATH=$MAVEN_HOME......
  • Linux 安装 Redis
    一、概要1.环境(1)Redis6.2.7,点击可检查最新版本;(2)RockyLinux9.1二、安装与配置1.安装Redis的安装非常简单,官方针对Ubuntu/Debian系统提供了具体指引,对于其他Linux系统也可以通过Snapcraft进行安装。对于RHEL9系统,dnf库也内置了Redis,不过该Redis是6.2.7并非最新的......
  • 【Linux学习笔记】设备驱动模型详解——总线、设备、驱动和类
    简介设备驱动是计算机系统中的重要组成部分,它们允许操作系统与硬件交互。设备驱动模型是一种通用的抽象框架,用于描述操作系统如何管理硬件设备。这里我们将介绍设备驱动模型中的四个关键概念:总线、设备、驱动和类。总线在计算机系统中,总线是指多个设备之间传输数据的路径。总线......
  • linux 内存管理
    内存管理的目标外存是程序存储的地方,内存是进程运行的地方。内存管理的目标除了实现进程之间的隔离、进程与内核之间的隔离、减少物理内存并发使用的数量之外,还有以下几个目标。1、减少内存碎片,包括外部碎片和内部碎片。外部碎片是指还在内存分配器中的内存,但是由于比较分散,无......
  • Linux篇二
    vi和vim的基本介绍Linux系统会内置vi文本编辑器Vim具有程序编辑能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完,编译及错误跳转等方便编程的功能特别丰富。vi和vim常用的三种模式正常模式以vim打开一个档案就直接进入一般模式了(这是默认......
  • windows11 安装 Rancher Desktop
    从官网下载了最新版的Rancher.Desktop.Setup.1.8.1.msi安装包,安装很顺利。但是安装完,启动时报错Thek3scacheisemptyandthereisnonetworkconnection.不明所以,网上查了,原来是github访问不了的原因,具体看这个#issue3741,大意就是网络问题,而提这个问题的哥们自己用代理......
  • linux服务器安装maven
    maven官网地址https://maven.apache.org/download.cgi  使用scp命令将文件上传到服务器 [email protected]:/root/maven.tar.gz请注意这里的p不要小写了,小写报错如下 进入root目录tar-zxvfmaven.tar.gz......
  • Linux入门篇之环境搭建
    前言对于Linux的初学者来说,云服务器是最好也是最方便的选择一、搭建Linux环境的方法1.裸机安装Linux操作系统,不推荐2.虚拟机安装Linux操作系统,不推荐3.云服务器安装,推荐二、白嫖使用云服务器云服务器的安装平台有很多,例如腾讯云,阿里云等,我们可以直接进入对应平台官网进行下载但是,有......
  • 阿里云服务器Linux MySQL root 密码忘记了如何操作?
    阿里云服务器Linux MySQL root密码忘记了如何操作?假如我们使用的MySQL数据库忘记的账号密码,是能够土工调节配置文件,然后跳过密码方式登录到数据库的。然后在数据库里面修改账号和密码,通常在默认情况下账号为root具体操作步骤如下:1】编辑MySQL配置文件my.cnf【注】在具体的操作......
  • linux 条件语句和逻辑判断
    目录一、条件判断二、逻辑判断三、if和case四、七个实验 一、条件判断1.test测试test[条件表达式]    -e:测试目录是否存在    -d:测试是否为目录   -f:是否为文件 -r:当前用户是否有读写权限-w:当前用户是否有写权限-x:当......