欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


fileziller恢复站点管理器内的ftp帐号
在Linux下的SSH端口转发的程序
linux技巧之使用screen管理你的远程会话
Linux下Patch的应用和制作方法介绍
企业部署云计算时应避免的五大误区
linux比较文件输出不同的内容
hosts文件的妙用,hosts文件的功效
Windows CE环境下无线网卡的自动安装
Ubuntu电脑操作基础:终端和命令行
Windows Home Server常见问题解答
linux系统中的电脑程序知识之端口映射
【 来源:网络 】【 点击:1 】 【 发布时间:2017_03_03 08:59:59 】

   关于想要了解linux端口映射的知识,其实很简单。那么现在我们那就一起来看看这其中的奥秘吧!

  01

  ssh -C -g root@127.0.0.1 -L 5000:61.235.139.123:5000

  02

  03

  #输入机器的root密码

  04

  05

  #后台执行:

  06

  ssh -C -f -N -g root@127.0.0.1 -L 5000:61.235.139.123:5000

  07

  08

  #另:

  09

  10

  ssh -C -f -N -g -R remote_port:local:port user@remotehost

  可以将远端服务器一个端口remote_port绑定到本地端口port,其中-C是进行数据压缩,-f是后台操作,只有当提示用户名密码的时候才转向前 台。-N是不执行远端命令,在只是端口转发时这条命令很有用处。-g 是允许远端主机连接本地转发端口。-R表明是将远端主机端口映射到本地端口。如果是-L,则是将本地端口映射到远端主机端口。

  ssh的三个强大的端口转发命令:

  1

  ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host

  2

  ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host

  3

  ssh -C -f -N -g -D listen_portuser@Tunnel_Host

  -f Fork into background after authentication.

  后台认证用户/密码,通常和-N连用,不用登录到远程主机。

  -p port Connect to this port. Server must be on the same port.

  被登录的ssd服务器的sshd服务端口。

  -L port:host:hostport

  将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

  -R port:host:hostport

  将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

  -D port

  指定一个本地机器 “动态的'’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.

  -C Enable compression.

  压缩数据传输。

  -N Do not execute a shell or command.

  不执行脚本或命令,通常与-f连用。

  -g Allow remote hosts to connect to forwarded ports.

  在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用,参见III)

  iptables实现端口转发的过程

  设我们有一台计算机,有两块网卡,eth0连外网,ip为1.2.3.4;eth1连内网,ip为192.168.0.1.现在需要把发往地址1.2.3.4的81端口的ip包转发到ip地址192.168.0.2的8180端口,设置如下:

  1. iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 81 -j DNAT --to-destination192.168.0.2:8180

  2. iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.0.0 -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j SNAT --to-source 192.168.0.1

  真实的传输过程如下所示:

  假设某客户机的ip地址为6.7.8.9,它使用本机的1080端口连接1.2.3.4的81端口,发出的ip包源地址为6.7.8.9,源端口为1080,目的地址为1.2.3.4,目的端口为81.

  主机1.2.3.4接收到这个包后,根据nat表的第一条规则,将该ip包的目的地址更该为192.168.0.2,目的端口更该为8180,同时在连接跟 踪表中创建一个条目,(可从/proc/net/ip_conntrack文件中看到),然后发送到路由模块,通过查路由表,确定该ip包应发送到 eth1接口.在向eth1接口发送该ip包之前,根据nat表的第二条规则,如果该ip包来自同一子网,则将该ip包的源地址更该为 192.168.0.1,同时更新该连接跟踪表中的相应条目,然后送到eth1接口发出.

  此时连接跟踪表中有一项:

  连接进入: src=6.7.8.9 dst=1.2.3.4 sport=1080 dport=81

  连接返回: src=192.168.0.2 dst=6.7.8.9 sport=8180 dport=1080

  是否使用: use=1

  而从192.168.0.2发回的ip包,源端口为8180,目的地址为6.7.8.9,目的端口为1080,主机1.2.3.4的TCP/IP栈接收到该 ip包后,由核心查找连接跟踪表中的连接返回栏目中是否有同样源和目的地址和端口的匹配项,找到后,根据条目中的记录将ip包的源地址由 192.168.0.2更该为1.2.3.4, 源端口由8180更该为81,保持目的端口号1080不变.这样服务器的返回包就可以正确的返回发起连接的客户机,通讯就这样开始.

  还有一点, 在filter表中还应该允许从eth0连接192.168.0.2地址的8180端口:

  iptables -A INPUT -d 192.168.0.2 -p tcp -m tcp --dport 8180 -i eth0 -j ACCEPT

  linux上端口映射的详细步骤

  在网上搜索好多,对linux配置端口映射都不够详细,我在RedHat8.0上用iptables配置了端口映射,讲述详细的配置过程,供大家参考。

  【实现功能】

  PC A是

  eth0 172.18.10.212 内网

  eth1 219.239.xx.xx 外网

  PC B是 172.18.10.205 内网

  A的8080端口映射到B的80端口

  【步骤】

  1、 首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0

  这样允许iptalbes FORWARD。

  2、 在/etc/rc.d/init.d目录下有iptables 文件,使用格式如下

  Usage: ./iptables {start|stop|restart|condrestart|status|panic|save}

  相当与service iptables {....}

  把iptables 服务停止,清除以前的规则,存盘

  到/etc/rc.d/init.d目录下,运行

  ./iptables stop

  iptalbes -F

  iptalbes -X

  iptalbes -Z

  ./iptables save

  3、 重新配置规则

  iptables -t nat -A PREROUTING -d 219.239.xx.xx -p tcp --dport 8080 -j DNAT --to-destination 172.18.10.205:80

  iptables -t nat -A POSTROUTING -d 172.18.10.205 -p tcp --dport 80 -j SNAT --to 172.18.10.212

  iptables -A FORWARD -o eth0 -d 172.18.10.205 -p tcp --dport 80 -j ACCEPT

  iptables -A FORWARD -i eth0 -s 172.18.10.205 -p tcp --sport 80 -j ACCEPT

  DNAT SNAT 的请参考帮助,这里不再陈述。

  4、 新的规则存盘

  ./iptables save

  规则存盘后在/etc/sysconfig/iptables这个文件里面,若你对这个文件很熟悉

  直接修改这里的内容也等于命令行方式输入规则。

  5、 启动iptables 服务

  ./iptables start

  在/proc/net/ip_conntrack文件里有包的流向,如下面

  tcp 6 53 TIME_WAIT src=221.122.59.2 dst=219.239.xx.xx sport=7958 dport=8080 packets=9 bytes=1753

  src=172.18.10.205 dst=172.18.10.212 sport=80 dport=7958 packets=9 bytes=5777 [ASSURED] use=1

  小结:关于linux端口映射的知识,对于使用一些的文件,内存或者是通讯的使用都是有很大的帮助的!这个关于在Linux系统的知识也是很重要的一部分哦!

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站