打开转发开关
要让iptables的端口转发生效,首先需要打开转发开关
方法一:临时打开,重启后失效
$sudo su
#echo 1 >/proc/sys/net/ipv4/ip_forward

方法二:永久打开,重启依然有效
编辑/etc/sysctl.conf文件,将net.ipv4.ip_forward=1前面的#注释去掉,保存文件,然后执行sudo sysctl -p使其生效

典型使用场景举例
场景一:目标机的22端口外网没有打开,通过本地端口转发实现通过其他端口访问ssh的22端口
案例:125.69.67.213机器的22端口未对外开放,但开放了3000~4000之间的端口,因此通过3000端口转发到22实现ssh登录
sudo iptables -t nat -A PREROUTING -p tcp -i eth0 -d 125.69.67.213 --dport 3000 -j DNAT --to 125.69.67.213:22
这个属于本机端A端口转发到本机的B端口

场景二:将内网的22端口映射到外网的一个端口,实现SSH直接登录,不用跳转
案例:192.168.2.61为外网机,192.168.2.70为内网机,如果不做映射,需要先登录到61,再登录到70.做如下映射之后,可直接通过外网机的3003登录到内网机
sudo iptables -t nat -A PREROUTING -d 192.168.2.61 -p tcp --dport 3003 -j DNAT --to-destination 192.168.2.70:22
sudo iptables -t nat -A POSTROUTING -d 192.168.2.70 -p tcp --dport 22 -j SNAT --to 192.168.2.61
注:(1) 本例中也可以通过SecureCRT的自动登录实现。

场景三:在外网直接访问内网的MySQL数据库
案例:很多时候数据库在内网机,外网不能直接访问,但做运维的时候可能需要通过图形界面工具直接连上去。做端口映射就可以解决这个问题。例如:将外网机192.168.2.61的3001端口转发到内网机192.168.2.70的MySQL的3306端口
sudo iptables -t nat -A PREROUTING -d 192.168.2.61 -p tcp --dport 3001 -j DNAT --to-destination 192.168.2.70:3306
sudo iptables -t nat -A POSTROUTING -d 192.168.2.70 -p tcp --dport 3306 -j SNAT --to 192.168.2.61

iptables其他常见操作
查看当前iptables的所有规则
sudo iptables -L
或者
sudo iptables-save

iptables规则保存到文件
sudo sh -c "iptables-save > /etc/iptables.rules"

从文件恢复iptables的规则
sudo iptables-restore /etc/iptables.rules

开机启动加载iptables规则
注:配置的规则系统默认重启后就失效,因此做开机启动时加载iptables的配置也有必要。
在/etc/network/interfaces的末尾添加如下一行: 
pre-up iptables-restore < /etc/iptables.rules

如果想在关机的时候自动保存修改过的iptables规则,可添加如下行
post-down iptables-save > /etc/iptables.up.rules

作者:gobitan
来源:CSDN
原文:https://blog.csdn.net/gobitan/article/details/50696641
版权声明:本文为博主原创文章,转载请附上博文链接!

Ubuntu环境下的iptables的端口转发配置实例的更多相关文章

  1. 大自然的搬运工:Ubuntu环境下gedit的一些个简单配置

    gedit是Ubuntu默认的文本编辑器,个人觉得还是不错的,用它来编程写一些小的demo也很方便,原谅我比较菜,vim用起来感觉打字速度真的很慢呀. 下面对gedit做一些简单配置,方便编程. 一. ...

  2. Ubuntu环境下SSH的安装及使用

    Ubuntu环境下SSH的安装及使用 SSH是指Secure Shell,是一种安全的传输协议,Ubuntu客户端可以通过SSH访问远程服务器 .SSH的简介和工作机制可参看上篇文章SSH简介及工作机 ...

  3. ubuntu环境下docker安装步骤

    本文是根据docker官方文档翻译,原文:https://docs.docker.com/engine/installation/linux/ubuntulinux/ Docker 支持以下 Ubun ...

  4. Ubuntu环境下Anaconda安装TensorFlow并配置Jupyter远程访问

    本文主要讲解在Ubuntu系统中,如何在Anaconda下安装TensorFlow以及配置Jupyter Notebook远程访问的过程. 在官方文档中提到,TensorFlow的安装主要有以下五种形 ...

  5. iptables 设置端口转发/映射

    iptables 设置端口转发/映射 服务器A有两个网卡 内网ip:192.168.1.3 外网ip:10.138.108.103 本地回环:127.0.0.1 服务器B有网卡,8001提供服务 内网 ...

  6. centos7 && centos6.5部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发

    centos7 && centos6.5 部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发 一.准备工作: 1: 检查kvm ...

  7. 在Ubuntu环境下配置Proxmark3(PM3)使用环境

    参考资料:PM3官方Wiki 因为国内网络上大多是在Kali系统上使用PM3的教程(链接1.链接2.链接3),而这些教程的步骤对于Ubuntu系统并不完全适用.所以写下本文,记录我个人的安装经历. 本 ...

  8. Linux(Ubuntu)环境下使用Fiddler

    自己的开发环境是Ubuntu, 对于很多优秀的软件但是又没有Linux版本这件事,还是有点遗憾的.比如最近遇到一个问题,在分析某个网站的请求路径和cookie时就遇到了问题.本来Chome浏览器自带的 ...

  9. Go学习笔记(一):Ubuntu 环境下Go的安装

    本文是根据<Go Web 编程>,逐步学习 Ubuntu 环境下go的安装的笔记. <Go Web 编程>的URL地址如下: https://github.com/astaxi ...

随机推荐

  1. macbook 安装laravel5.4

    1.安装composer php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');&q ...

  2. gcc xx -o xx

    GCG -o选项用来指定输出文件,它的用法为: [infile] -o [outfile] [infile] 表示输入文件(也即要处理的文件),它可以是源文件,也可以是汇编文件或者是目标文件:[out ...

  3. JavaScript中Promise 使用、原理以及实现过程

    1.什么是 Promise promise 是目前 JS 异步编程的主流解决方案,遵循 Promises/A+ 方案. 2.Promise 原理简析 (1)promise 本身相当于一个状态机,拥有三 ...

  4. 12)PHP,常量和魔术常量

    义:用于存储一个不会变化也不希望变化的数据的标示符. 常量命名规则,同变量,但习惯说,常常将常量的名称使用“全大写”形式. 定义形式 使用define()函数定义 使用形式:define(“常量名”, ...

  5. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:循环神经网络预测正弦函数

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 定义RNN的参数. HIDDEN_SIZE = ...

  6. 吴裕雄--天生自然 JAVA开发学习:重写(Override)与重载(Overload)

    class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Anim ...

  7. 黑马eesy_15 Vue:04.综合案例(前端Vue实现)

    黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) 黑马eesy_15 Vue:04.综合案例(前端 ...

  8. mysql之DTS的那些事

    最近才考虑数据库迁移,想起了之前做DTS踩过的那些坑. 基于数据库迁移,比如从源A库迁移到源B库,包括但不限于数据库上云. 数据库迁移方案有两种场景: (1).停机迁移方案 这种方案是允许停服的场景, ...

  9. mock简单的json返回

    针对非常简单的json返回串,我们也不一定非得通过freemarker模板的方式来构造返回数据,这里看实际的需求,如果返回的内容是固定的,而且json又非常简单,我们也可以直接写在程序里面,下面的接口 ...

  10. Spring 的 IOC 和 AOP 的理解

    Spring 的 IOC 和 AOP 的理解: https://www.jianshu.com/p/bf1adc3b75e6 对Spring的核心(AOP和IOC)的理解(大白话) https://w ...