首页 > 系统相关 >linux端口映射

linux端口映射

时间:2023-02-20 13:57:14浏览次数:40  
标签:index linux portproxy 192.168 nat 172.16 端口映射

Linux或Windows上实现端口映射

入门小站 入门小站 2023-02-16 21:50 发表于湖北 收录于合集 #Linux704个 #windows23个 #端口映射2个 入门小站 分享运维技巧及10k+Stars的开源项目 224篇原创内容 公众号

【Linux250个常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

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

原文: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
图片

Server2Server3同理

对照实验

client上访问Server1的资源

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

client上访问Server2的资源

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

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
图片

【Linux250个常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

图片 入门小站 分享运维技巧及10k+Stars的开源项目 224篇原创内容 公众号 收录于合集 #Linux  704个 上一篇如何平(优)滑(雅)的抛弃CentOS7下一篇终端调试哪家强? 阅读 1347       写下你的留言    

标签:index,linux,portproxy,192.168,nat,172.16,端口映射
From: https://www.cnblogs.com/cherishthepresent/p/17137084.html

相关文章

  • 重拾JAVA——Linux 常见命令与环境搭建
    前言:java程序常见运行再linux系统下,所以学习linux常见命令与环境搭建也是比较重要的环节;个人因为工作原因接手java项目,需要Linux环境下部署,习惯了window下图像化操作,不要......
  • Linux文件 profile、bashrc、bash_profile区别
    Linux系统中,有三种文件出现的非常频繁,那就是profile、bash_profile、bashrc文件。1、profile作用profile,路径:/etc/profile,用于设置系统级的环境变量和启动程序,在......
  • 第一周学习--linux
    认识Linux学习是有多种方法的认清楚一种东西这玩意是什么能做什么怎么做怎么优化怎么实现就是一系列的五套连招把这五套连招学会了那么就是荣耀王者巅峰万强了......
  • linuxz中压缩解压缩文件
    压缩解压缩.tar格式文件:把文件打包为tar.gz命令:tar-zcvf文件名.tar.gz要压缩的文件/文件夹                     例如,把w......
  • Linux系统配置 Samba客户端
    参考:https://blog.csdn.net/m0_63624418/article/details/127856957  本文为局域网中linux和window共享文件方案——samba后续篇。 ============================......
  • Linux04
    编译工具链IDE(集成开发环境):visualstudio,clion,Eclipse,xcodeSDK(softwareDevelopmentKit):软件开发工具包GCC(GNUCCompiler)//查看gcc版本gcc-v预处理(-E)作用:......
  • linux文件夹重命名
    转载自:https://www.cnblogs.com/Hackerman/p/16057228.html====================== 通过mv命令来对一个文件夹进行重命名,把一个文件夹的名字换成新的名字。[root@shar......
  • 基于Linux的tty架构及UART驱动详解——转载
     一、模块硬件学习1.1.Uart介绍通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称为UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传......
  • Linux-485收发切换延迟的解决方法 ——转载
     【前言】本文引用各种资料甚多,而引用出处标明并不详细,若有侵权,请联系删除。转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10381616.html一、问题描述R......
  • 10. 操作系统和Linux
    进程和线程的区别线程是进程划分成的更小的运行单位,一个进程在其执行的过程中可以产生多个线程。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同......