`
oraclhr123
  • 浏览: 29451 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

linux端口映射

阅读更多


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

输入机器的root密码 

后台执行:ssh -C -f -N -g root@127.0.0.1 -L 5000:61.235.139.123:5000



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



关于ssh端口转发的深入实例
2007-05-13 17:02

转自geminis@http://floss.zoomquiet.org/data/20070104103806/


ssh的三个强大的端口转发命令:
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
            ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
            ssh -C -f -N -g -D listen_port user@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配置端口映射都不够详细,我在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端口映射工具

    将端口映射到其它主机上的端口,使用方便 使用方法: 首先配置 natd.conf 文件 启动:./run.sh start 关闭:./run.sh stop

    linux端口映射mapport软件.doc

    linux端口映射mapport软件.doc

    UPNP linux 端口映射工具

    在Linux系统中,使用UPNP进行端口映射对于需要从公共互联网访问内部服务器或设备的用户非常有用。 本文将详细介绍如何在Linux上使用UPNP工具进行端口映射,以及相关的知识背景和技术要点。 首先,我们需要了解端口...

    Linux端口映射转发的方法

    总之,掌握Linux端口映射转发技术对于解决网络通信中的各种问题非常有用。它不仅可以帮助开发者绕过访问限制,还能在某些场景下提高系统的安全性。因此,深入学习和理解Linux网络配置及工具对于IT从业者来说至关重要...

    Nginx端口映射配置方法

    前因 搭建一个网站传统的方法是...但是在Centos里面做开发调试环境,测试是用window的浏览器的,所以要用一个中间的web服务器做端口映射 Nginx端口映射配置 server { listen 80; server_name rbac.dev-lu.com; #

    在Linux系统下使用SSH实现端口映射的方法.docx

    在 Linux 系统下使用 SSH 实现端口映射的方法 SSH 端口映射是 Linux 系统中的一种常用技术,它可以将远端服务器的一个端口绑定到本地端口,实现远程服务器的端口访问。通过使用 SSH 命令,可以实现远程服务器的端口...

    端口映射原理与linux

    内网的一台电脑要上因特网,就需要端口映射 端口映射分为动态和静态 动态端口映射: 内网中的一台电脑要访问新浪网,会向NAT网关发送数据包,包头中包括对方(就是新浪网)IP、端口和本机IP、端口,NAT网关会把本机IP、...

    Linux操作系统下VMware的端口映射

    在Linux操作系统下,VMware的端口映射是一项关键配置,它允许主机系统与虚拟机之间进行通信。这里我们以Ubuntu 7.4作为主机环境和VMware Workstation 6.0.0作为虚拟化软件为例,探讨如何实现端口映射。 VMware ...

    Linux下用于端口映射的工具rinetd

    **rinetd简介** rinetd,全称是"remote internet ...总的来说,rinetd是Linux环境中一个强大的端口映射工具,通过简单的配置就能实现复杂的服务转发需求。不过,在实际应用中,必须谨慎操作,以保证网络环境的安全性。

    局域网的端口映射工具

    5. **远程访问**:端口映射工具也能帮助用户从外部网络访问家中的服务器,例如通过SSH连接到家里的Linux服务器进行远程维护,或者通过FTP上传文件。 6. **动态DNS集成**:如果用户的公网IP是动态分配的,端口映射...

    Linux 或 Windows 上实现端口映射.docx

    Linux 或 Windows 上实现端口映射 端口映射是指将一个或多个网络端口从一个网络地址映射到另一个网络地址的过程。在服务器环境中,端口映射非常有用,因为服务器可能会连接到不同的网络,而某些服务可能需要进行...

    TCP端口映射源(UNIX/LINUX)

    TCP端口映射源码(unix或linux)

    PortMap1.6 端口映射器 端口转发器

    端口映射器和端口转发器是网络通信中非常重要的工具,特别是在处理网络限制、访问受限服务或者优化网络性能时。PortMap1.6 是这样一款软件,它专门用于实现这样的功能。在这个讨论中,我们将深入理解端口映射和端口...

    nginx 端口映射

    "nginx 端口映射" Nginx 作为一个轻量级的 Web 服务器软件,它具有许多重要的作用之一是实现 IP 端口映射。通过 Nginx,我们可以将外部的 HTTP 请求转发到内部的服务器上,从而实现负载均衡、反向代理、缓存等功能...

    内网映射工具--UPnP自动端口映射工具.zip.zip

    6. **跨平台兼容**:考虑到不同的操作系统和设备,一个好的UPnP端口映射工具应该能兼容Windows、Mac OS、Linux等多种平台。 7. **用户友好界面**:工具应提供直观易用的图形用户界面,使得非技术人员也能轻松设置和...

    Java 端口映射

    JNA允许Java代码直接调用C/C++的函数,例如Windows的`CreateFileMapping`和`MapViewOfFile`,或者Linux的`iptables`命令,从而实现更灵活的端口映射策略。 5. **Java RMI(远程方法调用)**: 虽然RMI主要用于对象...

    远程控制软件(路由器不用做端口映射)

    在标题和描述中提到的“远程控制软件(路由器不用做端口映射)”是一种特别的设计,它规避了通常远程控制过程中需要手动配置路由器端口映射的步骤,使得远程访问更为简便。 端口映射,也称为端口转发,是在路由器上...

    简单的端口映射

    ### 知识点一:端口映射的基本概念 端口映射是一种网络技术,用于在网络设备上将内部网络中的私有IP地址转换为公有IP地址,以便外部网络能够访问内部网络的服务。简单来说,就是让外网可以通过特定端口访问到内网中...

Global site tag (gtag.js) - Google Analytics