利用iptables的规则来实现端口转发:

第一步需要将内核参数的net.ipv4.ip_forward=1

场景一:实现本地端口转发

本地端口转发实在PREROUTING链中将端口做NAT转换:

# iptable -t nat -A  PREROUTING -p tcp --dport   "$原端口"  -j REDIRECT --to-port  "$目标端口"

场景二、实现端口远程端口转发

远程端口转发原理,是在本地PREROUTING链中将端口进行NAT转换,然后通过FORWARD链转至POSTROUTING链中,然后在POSTROUTING中将原client地址进行SNAT的转换

1、 DNAT转换  iptable -t nat -A PREROUTING -p tcp -m tcp --dport   "$原端口" -j DNAT --to-destination xxx:xxx:xxx:xxx:$目标端口          note:xxx:xxx:xxx:xxx为目标机器地址

2、FORWARD放行: iptable -t filter -A FORWARD -j ACCEPT      ### 此处可设置其他的过滤条件

3、SNAT转换: iptable -t nat -A POSTROUTING -p tcp -m tcp --dport $目标端口 -j SNAT --to-source "xxx:xxx:xxx:xxx"                             note: xxx:xxx:xxx:xxx 为端口转发机器地址

可选 设置

如果要实现本地应用程序访问目标端口:如 curl http://xxx.xxx.xxx.xxx:$目标端口/                                                                                        note: xxx:xxx:xxx:xxx 为端口转发机器地址

因为本地应用(用户空间)访问目标端口时,是通过OUT链路出用户空间,必须在OUT 链中添加相应DNAT的规则,再经过POSTROUTING链出去目标机器

iptables -t nat -A OUTPUT -p tcp -m tcp --dport    "$原端口"  -j DNAT --to-destination   xxx:xxx:xxx:xxx:$目标端口                                        note: xxx:xxx:xxx:xxx 为目标机器地址

iptable实现端口转发的更多相关文章

  1. CentOS7 下使用 Firewall防火墙系统封禁允许IP和端口的访问 端口转发 IP转发方法

    CENTOS7的防火墙系统默认已经从iptable改成了firewall,使用方法也有所不同,下面是详细介绍 一.管理端口 列出 dmz 级别的被允许的进入端口 # firewall-cmd --zo ...

  2. 使用iptables做端口转发

    通过iptables可以做转发 #!/bin/sh IPT="/sbin/iptables" /bin/echo "1" > /proc/sys/net/ ...

  3. SecutrCRTt 连接VirtualBox 中的Ubuntu -端口转发

    端口转发: 设置>网络>端口转发   端口转发: 子系统地址通过在Linux系统总使用ifconfig查看:   还需要在linux主机上安装sshd sudo apt-get insta ...

  4. LCX端口转发实现内网突破

    工具:lcx.exe 原理:当目标主机仅开放了web服务,而该服务又仅能供内网用户使用,外网用户根本无法直接访问.因此想要让外网用户能能够访问局域网中的系统服务,必须进行端口映射等操作才行.其原理就是 ...

  5. Linux IPTABLES端口转发

    之前在Linux上用普通用户部署了一个Tomcat,然后将其server.xml中的端口配置为80端口,用普通用户运行就提示绑定端口失败(permission denied),google了一下,原来 ...

  6. 【nginx配置】nginx做非80端口转发

    一个场景 最近在使用PHP重写一个使用JAVA写的项目,因为需要查看之前的项目,所以要在本地搭建一个Tomcat来跑JAVA的项目.搭建成功后,因为Tomcat监听的端口是8080,因此,访问的URL ...

  7. SSH 端口转发+内网穿透

    用最直白的语言对本文所有内容进行定义: 端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行) 内网穿透(-R):用A机器 ...

  8. 用iptables 实现本地端口转发

    设定本机2121端口转发到21端口 iptables -t nat -A PREROUTING -p tcp -i eth0 -d -j DNAT --to iptables -t nat -I PO ...

  9. 使用VirtualBox进行端口转发 连接数据库

    转自 http://blog.sina.com.cn/s/blog_484d87770102uxi6.html 使用VirtualBox很久了,很多用法都没有深钻,真的是不虚心学习啊.       由 ...

随机推荐

  1. 一 Java语言基础

    1 标识符: 用来标识类名.变量名.方法名.类型名.数组名.文件名的有效字符序列. 由字母.美元符.下划线.数字组成,不能以数字开头,如  int 6a = 1; 2 基本数据类型8个: 整数4个:字 ...

  2. JSP数据交互二

    1.JSP内置对象:JSP内置对象是 Web 容器创建的一组对象,不用通过手动new就可以使用2.JSP9大内置对象:      对象名称 类型 request (请求对象)  javax.servl ...

  3. 【剑指Offer面试编程题】题目1352:和为S的两个数字--九度OJ

    题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输入: 每个测试案例包括两行: 第一行包含一个整数n和k, ...

  4. JDBC--DBUtils的使用

    1.commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性 ...

  5. c/c++ struct的大小以及sizeof用法

    直入主题,怎么判断内存对齐规则,sizeof的结果怎么来的,请牢记以下3条原则:(在没有#pragma pack宏的情况下) 1:数据成员对齐规则:结构(struct)(或联合(union))的数据成 ...

  6. 前端学习笔记系列一:12 js中获取时间new date()的用法

    获取时间: 1  var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.get ...

  7. leetcode841 Keys and Rooms

    """ There are N rooms and you start in room 0. Each room has a distinct number in 0, ...

  8. 吴裕雄--天生自然JAVAIO操作学习笔记:File类

    import java.io.File ; import java.io.IOException ; public class FileDemo01{ public static void main( ...

  9. Intel欲与AMD共同做大PC市场

    自从2017年发布锐龙处理器以来,AMD在高性能处理器市场上正在恢复失地,CPU市场份额在今年Q1季度已经提升到了13.3%,要知道一年前不过8.6%而已.前面两代锐龙处理器相比Intel酷睿在单核性 ...

  10. 2-10 就业课(2.0)-oozie:4、通过oozie执行shell脚本

    oozie的配置文件job.properties:里面主要定义的是一些key,value对,定义了一些变量,这些变量往workflow.xml里面传递workflow.xml :workflow的配置 ...