echo 1 >/proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A PREROUTING -d xxx.xxx.xxx.xxx -p tcp --dport 8000 -j DNAT --to-destination xxx.x.x.x:80

可以使用命令:iptables -t nat --list检查nat列表信息:
Nat列表信息删除:
iptables -t nat -D PREROUTING 1    //序号从1 开始,后边以此+1.

测试网络连接:

Server:

[crayon-5bf06608e9489229694814 inline="true" ]nc -lvp 4444
[/crayon]

Client:

[crayon-5bf06608e948e743310537 inline="true" ]nc -vv 192.168.111.102 8888
[/crayon]

Client连接成功

端口转发和端口映射有什么不同?实现端口映射的软件

花生壳|2018-10-18

端口转发

端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。

在网吧通过路由器或者代理连接到外网,而在内网建立和运行网络服务器或FTP服务器是没办法使外网用户直接访问的,通过在路由上的NAT开启建立相应端口转发的映射,你可以指示路由器转发对某一特定网端口(如80 ,为网络服务器或21为FTP服务器) 所有的信息为本地网络。 这意味着,如果一个外部主机试图通过HTTP访问外网的IP加相应端口,就可访问到相应的内网建立的服务器。 外部访问此服务器的用户并不知道服务器是处于内部网络上的。 这种方法被广泛应用于网吧或通过NAT共享上网在内网建立服务器的用户。公安监控系统即通过此方法来监控网吧数据的。

端口映射

端口映射是NAT的一种,功能是把在公网的地址转翻译成私有地址, 采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。

端口映射就是将外网主机的IP地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。端口映射有动态和静态之分。

通俗来讲,端口映射是将一台主机的内网(LAN)IP地址映射成一个公网(WAN)IP地址,当用户访问提供映射端口主机的某个端口时,服务器将请求转移到本地局域网内部提供这种特定服务的主机;利用端口映射功能还可以将一台外网IP地址机器的多个端口映射到内网不同机器上的不同端口。 端口映射功能还可以完成一些特定代理功能,比如代理POP,SMTP,TELNET等协议。理论上可以提供65535(总端口数)-1024(保留端口数)=64511个端口的映射。

端口映射和端口转发的区别

转发与映射,按理解意思,是用不同的方法实现同样的目标。

端口转发:你给我了,我打开看看,发现这上面标志显示是要给张三,那么我就给张三去。如果标志是给李四,那我就再给李四去。

端口映射:你放到我左手,我就直接给张三;你放到我右手,我就直接给李四。这中间我不管你放我手上的是什么东西。

转发的重点在“转”上面。送快递的过来,把所有快递都交给门口保安,保安再根据每件快递上的收件人来分发。映射,就是在大门口给每个人装个柜子,送快递的直接按收件人名字,把快递放到对应的柜子里面。

就是做端口映射的。端口映射对于不专来的人来说,可能很难懂。说白了就是你在你的本机做个网站,怎么才能让所有人都能访问呢?你可以通过做个端口映射,把你本地的80端口映射出去。因为你如果是拨号的话,本机IP地址是私网IP,在INTERNET上私网IP是不能直接被传输的。所以要有公网IP别人才能访问你的网站。你现在拨号,拨通后运营商就会给你分一个公网IP地址,这样别人就可以通过这个公网IP访问你的网站了。说的了就是别人访问你的网站,先通过访问路由器上的80端口。因为路由器上是不能做网站的,然后路由器再把这个请求传送到你本机。就是这样。实现一个端口的对接。

#以下为参考资料

打开转发开关
要让iptables的端口转发生效,首先需要打开转发开关
方法一:临时打开,重启后失效
$sudo su
#echo 1 >/proc/sys/net/ipv4/ip_forward

方法二:永久打开,重启依然有效
编辑/etc/sysctl.conf文件,将net.ipv4.ip_forward=1前面的#注释去掉,保存文件,然后执行sudo sysctl -p使其生效

典型使用场景举例
场景一:目标机的22端口外网没有打开,通过本地端口转发实现通过其他端口访问ssh的22端口
案例:125.69.67.213机器的22端口未对外开放,但开放了3000~4000之间的端口,因此通过3000端口转发到22实现ssh登录
sudo iptables -t nat -A PREROUTING -p tcp -i eth0 -d 125.69.67.213 --dport 3000 -j DNAT --to 125.69.67.213:22
这个属于本机端A端口转发到本机的B端口

场景二:将内网的22端口映射到外网的一个端口,实现SSH直接登录,不用跳转
案例:192.168.2.61为外网机,192.168.2.70为内网机,如果不做映射,需要先登录到61,再登录到70.做如下映射之后,可直接通过外网机的3003登录到内网机
sudo iptables -t nat -A PREROUTING -d 192.168.2.61 -p tcp --dport 3003 -j DNAT --to-destination 192.168.2.70:22
sudo iptables -t nat -A POSTROUTING -d 192.168.2.70 -p tcp --dport 22 -j SNAT --to 192.168.2.61
注:(1) 本例中也可以通过SecureCRT的自动登录实现。

场景三:在外网直接访问内网的MySQL数据库
案例:很多时候数据库在内网机,外网不能直接访问,但做运维的时候可能需要通过图形界面工具直接连上去。做端口映射就可以解决这个问题。例如:将外网机192.168.2.61的3001端口转发到内网机192.168.2.70的MySQL的3306端口
sudo iptables -t nat -A PREROUTING -d 192.168.2.61 -p tcp --dport 3001 -j DNAT --to-destination 192.168.2.70:3306
sudo iptables -t nat -A POSTROUTING -d 192.168.2.70 -p tcp --dport 3306 -j SNAT --to 192.168.2.61

iptables其他常见操作
查看当前iptables的所有规则
sudo iptables -L
或者
sudo iptables-save

iptables规则保存到文件
sudo sh -c "iptables-save > /etc/iptables.rules"

从文件恢复iptables的规则
sudo iptables-restore /etc/iptables.rules

开机启动加载iptables规则
注:配置的规则系统默认重启后就失效,因此做开机启动时加载iptables的配置也有必要。
在/etc/network/interfaces的末尾添加如下一行: 
pre-up iptables-restore < /etc/iptables.rules

如果想在关机的时候自动保存修改过的iptables规则,可添加如下行
post-down iptables-save > /etc/iptables.up.rules

参考资料:
1. https://help.ubuntu.com/community/IptablesHowTo
--------------------- 
作者:gobitan 
来源:CSDN 
原文:https://blog.csdn.net/gobitan/article/details/50696641 
版权声明:本文为博主原创文章,转载请附上博文链接!

ubuntu端口映射相关推荐

  1. 【docker教程】docker视频教程(ubuntu)数据卷挂载、数据卷容器volume、端口映射(镜像叠加,分层复用)rootfs、bootfs(没看完)

    黑马程序员Docker容器化技术,从零学会Docker教程 可以先看1-13课.以及 docker概述 文章目录 docker概述 ubuntu安装docker docker架构 配置docker镜像 ...

  2. VMware中ubuntu虚拟机与windows的端口映射,共享一个IP地址

    在ubuntu虚拟机中,运行了meteor的后台程序,需要终端进行连接,需要进行ubuntu虚拟机与windows的端口映射(虚拟机与主机共享IP地址). 下面为设置步骤: 1.点击编译,虚拟网络编辑 ...

  3. Ubuntu系统下python opencv视频采集:使用USB端口映射指定要读取的相机设备

    Ubuntu16.04 下 python opencv 视频采集:使用USB端口映射指定要读取的相机设备 有时我们需要读取指定设备的视频流,但笔记本电脑通常自带相机,同时可能连接多个USB相机,每次插 ...

  4. Ubuntu 20.04防火墙 UFW做NAT转换,IP伪装,端口重定向,端口映射

    参考文档: <Ubuntu 防火墙IP转发做NAT,内网集群共享网络(简单)> <focal (8) ufw-framework.8.gz手册> 项目需要一台路由器以实现NAT ...

  5. ubuntu 下使用 upnp 配置路由器端口映射

    使用命令行工具 MiniUPnP client 安装方法: 从这里下载源代码,然后编译,如下: make sudo checkinstall 这样安装,以后还可以卸载掉. 使用方法: Usage : ...

  6. Linux(Ubuntu)安装和完美卸载Apache详细教程和配置多域名、端口映射

    Linux(Ubuntu)安装,卸载Apache详细教程 第一种方法–软件包安装(简单便捷) sudo apt-get update sudo apt-get install apache2 参考博客 ...

  7. [内网端口映射]内网端口映射ubuntu

    理解: "你家在1个小区里B栋2410室,你朋友来找你,找到小区门口,不知道你住哪层哪号?就问守门的保安,保安很客气的告诉了他你家详细门牌,所以你朋友很轻松的找到了你家.这个过程就是外网访问 ...

  8. 使用virtualbox nat方式中的端口映射使用ssh服务

    2019独角兽企业重金招聘Python工程师标准>>> Guest系统端口映射 在VirtualBox NAT网络模式下面,Guest系统对Host系统和局域网内其他的机器都是不可见 ...

  9. VirtualBox使用技巧:关于undo差分盘与端口映射

    为什么80%的码农都做不了架构师?>>>    参见VirtualBox UserManual文档 一.undo盘(Differencing images),差异盘的具体实现 使用V ...

  10. WSL端口映射到win

    WSL端口映射到win #在powershell中执行,获取虚拟机内ubuntu的ip地址 wsl -- ifconfig eth0 #将ip地址的对应的端口映射到宿主win10对应的端口 netsh ...

最新文章

  1. web.py使用要点
  2. ubuntu数据库安装配置
  3. 如何实现electron多页面间通信
  4. TF之LiR:基于tensorflow实现手写数字图片识别准确率
  5. MySQL WHERE:条件查询
  6. Javascript String类的属性及方法
  7. Ext JS 3.2.0发布(转)
  8. [JS]关于表单的自动运算(已解决)
  9. JS之形参带默认值的写法代码
  10. 计算机内部网络连接,在电脑中新建专用网络连接的操作方法【图文教程】
  11. 系统的x86与x64是什么意思以及他们的区别?
  12. 计算机dns服务器错误或不存在,找不到服务器或 DNS 错误,详细教您找不到服务器或dns错误怎么解决...
  13. 将真分数分解为埃及分数
  14. 在线小蝌蚪匿名聊天室源码 用于网站引流
  15. 打造一个无广告无弹窗快速的Windows办公环境(软件推荐)
  16. SEO优化 TDK的写法思路
  17. BUUCTF msic 专题(120)[QCTF2018]X-man-A face
  18. Docker安装报错Hardware assisted virtualization and data execution protection must be enabled in the BIOS
  19. 视频编解码——视频编解码器工作原理
  20. html标签做代码块

热门文章

  1. get请求400错误 vue_VUE 配置proxy代理后,前台报错400 bad request
  2. Direct2D 介绍
  3. matlab 多项式排序,MATLAB多项式
  4. Python绘制多维度专题地图
  5. MATLAB bp神经网络的雾霾天气下交通标志的识别系统
  6. Python模块大全
  7. 微型计算机的一般结构,微型计算机的基本结构
  8. 解决雷电模拟器一直出现安全证书有问题
  9. [分享]加拿大渥太华市卡尔顿大学John W. Chinneck教授谈如何组织论文
  10. 程序员为什么单身?细数程序员六宗罪