iptable实现端口转发
利用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实现端口转发的更多相关文章
- CentOS7 下使用 Firewall防火墙系统封禁允许IP和端口的访问 端口转发 IP转发方法
		
CENTOS7的防火墙系统默认已经从iptable改成了firewall,使用方法也有所不同,下面是详细介绍 一.管理端口 列出 dmz 级别的被允许的进入端口 # firewall-cmd --zo ...
 - 使用iptables做端口转发
		
通过iptables可以做转发 #!/bin/sh IPT="/sbin/iptables" /bin/echo "1" > /proc/sys/net/ ...
 - SecutrCRTt 连接VirtualBox 中的Ubuntu -端口转发
		
端口转发: 设置>网络>端口转发 端口转发: 子系统地址通过在Linux系统总使用ifconfig查看: 还需要在linux主机上安装sshd sudo apt-get insta ...
 - LCX端口转发实现内网突破
		
工具:lcx.exe 原理:当目标主机仅开放了web服务,而该服务又仅能供内网用户使用,外网用户根本无法直接访问.因此想要让外网用户能能够访问局域网中的系统服务,必须进行端口映射等操作才行.其原理就是 ...
 - Linux IPTABLES端口转发
		
之前在Linux上用普通用户部署了一个Tomcat,然后将其server.xml中的端口配置为80端口,用普通用户运行就提示绑定端口失败(permission denied),google了一下,原来 ...
 - 【nginx配置】nginx做非80端口转发
		
一个场景 最近在使用PHP重写一个使用JAVA写的项目,因为需要查看之前的项目,所以要在本地搭建一个Tomcat来跑JAVA的项目.搭建成功后,因为Tomcat监听的端口是8080,因此,访问的URL ...
 - SSH 端口转发+内网穿透
		
用最直白的语言对本文所有内容进行定义: 端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行) 内网穿透(-R):用A机器 ...
 - 用iptables 实现本地端口转发
		
设定本机2121端口转发到21端口 iptables -t nat -A PREROUTING -p tcp -i eth0 -d -j DNAT --to iptables -t nat -I PO ...
 - 使用VirtualBox进行端口转发   连接数据库
		
转自 http://blog.sina.com.cn/s/blog_484d87770102uxi6.html 使用VirtualBox很久了,很多用法都没有深钻,真的是不虚心学习啊. 由 ...
 
随机推荐
- 「luogu4135」作诗
			
「luogu4135」作诗 传送门 分块好题. 预处理出 \(f[i][j]\) 表示 \(i\) 号块到 \(j\) 号块的答案,\(num[i][k]\) 表示 \(k\) 在前 \(i\) 块的 ...
 - Python开发之Anconda环境搭建
			
Python的强大之处在于它的应用范围广泛,遍及人工智能.科学计算.web开发.系统运维.大数据及云计算等,实现其强大功能的前提,就是Python具有数量庞大且功能相对完善的标准库和第三方库.通过对库 ...
 - 笔记||Python3进阶之调用外部程序
			
像wget可以下载文件 ffmpeg可以切割.合并.转换.录制视频 free命令可以查看linux内存使用信息 python提供了库来调用外部程序.命令?> 最常见的两种方法: ①o ...
 - Steam游戏《Zengeon(神明在上)》修改器制作-[先使用CE写,之后有时间的话改用C#](2020年寒假小目标06)
			
日期:2020.01.30 博客期:138 星期四 [温馨提示]: 只是想要修改器的网友,可以直接点击此链接下载: 只是想拿CT文件的网友,可以直接点击此链接下载: 没有博客园账号的网友,可以将页面下 ...
 - core版本使用ef连接数据库(一)
			
参考 参考代码 sqlserver数据库:①Nuget: Microsoft.EntityFrameworkCore.SqlServer ORACLE数据库:①Nuget: Oracle.Entity ...
 - C# 中[DllImport("user32.dll")]和extern用法和示例----转载
			
原文:https://blog.csdn.net/michellehsiao/article/details/7629746 extern 修饰符用于声明在外部实现的方法.extern ...
 - GoJS简单示例
			
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
 - Day3-G - Task HDU4864
			
Today the company has m tasks to complete. The ith task need xi minutes to complete. Meanwhile, this ...
 - Redis的增删改查 c# key value类型和hash map 类型
			
using Newtonsoft.Json; using StackExchange.Redis; using System; using System.Collections.Generic; us ...
 - 关于pgsql 几个操作符的效率测试比较
			
关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次取平均时间.测试结果:->> 效率高 5% ...