利用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 为目标机器地址

最新文章

  1. java-URLConnection网络数据收取
  2. asp.net 上一条和下一条记录的显示
  3. weka数据预处理
  4. 类的大小——sizeof 的研究
  5. Linux device tree 简要笔记
  6. [转]T4模版引擎之生成数据库实体类
  7. (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  8. js获取前之前或之后的日期
  9. ASP.NET Cookie和Session
  10. B. Duff in Love
  11. aside元素
  12. 常见排序算法JAVA实现
  13. 时频工具箱tftb
  14. cocos开发插件笔记
  15. listview添加数据
  16. 常用模块 time sys os json pickle
  17. scala-泛型
  18. Asp.net core 2.0.1 Razor 的使用学习笔记(六)
  19. RC4加密算法的原理及实现
  20. [Ajax] AJAX初体验之-在博客中添加无刷新搜索

热门文章

  1. ES6新语法概览
  2. 在ng-repeat 中使用 ng-click
  3. Community Cloud零基础学习(二)信誉等级设置 & Global Search设定
  4. Centos7 之 MariaDB(Mysql) root密码忘记的解决办法
  5. ASP.NET MVC Web项目中使用Log4Net记录日志,并按照日志类型分文件存储
  6. UIViewContentModel图解+文解
  7. WebGL绘制正方体
  8. HTML相关知识点(3)
  9. 可以看一下我学习linux的过程
  10. Vue.js 内联样式绑定style