参考连接:https://developer.aliyun.com/article/607330

环境为云环境,有外网主机的IP为192.168.0.39,无外网主机的IP为192.168.0.228

需要实现无外网主机通过有外网主机的IP上网,同时还可以做nat。最终目的是把无网主机连上网,然后把无网的主机的服务端口映射出去。让互联网可以直接访问原本无网主机的服务。

1,首先需要增加一个私网ip地址192.168.0.2,增加在私网里面ping一下看是否生效。

E="eth0"

BOOTPROTO="dhcp"

ONBOOT="yes"

TYPE="Ethernet"

PERSISTENT_DHCLIENT="yes"

IPV6INIT=yes

DHCPV6C=yes

IPADDR=192.168.0.2

PREFIX=24

2,安装iptables服务

yum install iptables-services

3,开启ip转发功能

vi /etc/sysctl.conf

net.ipv4.ip_forward=1

4,使sysctl -p命令使上面的配置修改生效。

sysctl -p

5,配置SNAT规则,

iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 192.168.0.39

可以这样理解 iptables -t nat -I POSTROUTING -s 转换的网段 -j SNAT --to-source 转换后的源地址也就是能上外网的地址

保存生效

service iptables save

也可以通过修改iptables配置文件来配置规则

配置文件路径

vi /etc/sysconfig/iptables

需要注意的是修改iptales配置文件之后要重启iptables服务。

systemctl restart iptables

配置过SNAT之后,原本无网的主机添加一条静态路由之后就可以上网了。

在无网的主机上添加静态路由

route add -net 0.0.0.0/0 gw 192.168.0.2

测试联网

6,配置DNAT规则,配置DNAT规则的目的在于在原无网主机的某个服务映射出去,下面将原本无网主机的ssh服务映出去。实现从外面连3389端口,数据转发内部主机192.168.0.228主机上的22端口上。

iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to 192.168.0.228:22

iptables -t nat -I POSTROUTING -p tcp --dport 3389 -j MASQUERADE

可以这样理解:

iptables -t nat -I PREROUTING -p tcp --dport 对外开放端口号 -j DNAT --to 转发到内网之后的IP和端口号

iptables -t nat -I POSTROUTING -p tcp --dport 对外开放端口号 -j MASQUERADE

注意:云主机所在的安全组要访问对应的端口

也可以通过编辑iptables配置文件来实现

编辑配置文件之后有要重启iptables服务,直接使用iptables命令的要执行保存操作。对应目录如下

重启服务

systemctl restart iptables

保存配置

service iptables save

最后测试成功

Iptables 代理局域网内的主机上网的更多相关文章

  1. arp命令(windows ),nmap查看局域网内所有主机IP和MAC

    ARP命令详解 ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址.实用arp命令,我们能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容.此外,使用arp命令,也可 ...

  2. Nginx代理实现内网主机访问公网服务

    通过Nginx代理实现内网主机访问公网和接口服务 1.需求: m2.test.com为公司测试环境的微信测试域名,因为要调用微信服务接口需要访问外网,现通过Nginx代理现实此功能. 2.环境如下: ...

  3. 局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目(转)

    局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目     1.在宿主机cmd中查看宿主机的ip(注意区分主机中虚拟机的ip) 我连的是无线,IP如下 2.在Django项目的mysit ...

  4. 访问局域网内其他主机的VMware虚拟机上的mysql数据库和redis缓存

    上一篇写了访问局域网内其他主机的虚拟机上的项目 ,现在说说访问局域网内其他主机的虚拟机上的数据库和缓存 博主使用的linux是Ubuntu16.04: 一.安装数据库和缓存 这里连接的数据库和缓存以m ...

  5. 如何通过iptables代理访问内网

    场景 A机器能够联通内网机器,B机器能够联通A机器,但是访问不到内网机器,场景是希望通过A机器能够转发直接联通局域网内的其它机器 机器IP 内网为172.0.0.x/24 A机器为172.0.0.10 ...

  6. windows CMD命令查看局域网内所有主机名及IP

    COLOR 0A CLS @ECHOOff Title查询局域网内在线电脑IP :send @ECHO off&setlocal enabledelayedexpansion ECHO 正在获 ...

  7. AUTOSSH设置ssh隧道,实现反向代理访问内网主机

    内网主机上配置: autossh -M -CNR :localhost: ubuntu@123.207.121.121 可以实现将访问主机123.207.121.121的1234端口的数据,通过隧道转 ...

  8. CentOS squid代理内网主机上网 openVpn配置

  9. Linux 下查看局域网内所有主机IP和MAC

    linux环境下,执行namp对局域网扫描一遍,然后查看arp缓存表就可以知道局域内ip对应的mac.namp比较强大也可以直接扫描mac地址和端口,执行扫描之后就可以在/proc/net/arp查看 ...

随机推荐

  1. 定要过python二级 第11套

    1. 2.乃至好的代码片段与解决方法,我保存在了 H:盘中python中的:H:\python\python二级好的代码片段与错误解决 3.接着第一个点,为什么print(read(f))  把f 放 ...

  2. PolarDB PostgreSQL logindex 设计

    背景介绍 PolarDB采用了共享存储一写多读架构,读写节点RW和多个只读节点RO共享同一份存储,读写节点可以读写共享存储中的数据:只读节点仅能各自通过回放日志,从共享存储中读取数据,而不能写入,只读 ...

  3. python读Excel方法(xlrd)

    在我们做平常工作或自动化测试中都会遇到操作excel,Python处理exc相当顺手,如何通过python操作excel,当然python操作excel的库有很多,比如pandas,xlwt/xlrd ...

  4. 什么鬼?你还搞不懂json和字典的区别??

    现在自动化培训烂大街,是个人都能说的上几个框架,面试如果问框架相关问题,求职者只需一瓶 82 年的雪碧,会吹的让你怀疑人生!所以面试官为了更清楚的知道你是停留在表面上的花拳绣腿还是有扎实的基础,就不会 ...

  5. 使用Golang搭建gRPC服务提供给.NetCore客户端调用

    目录 gRPC概述 RPC gRPC又是什么呢 安装 Golang IDE(Goland) Protocol Buffer 下载Protocal Buffer 配置Protocal Buffer编译器 ...

  6. WPF进阶技巧和实战08-依赖属性与绑定02

    将元素绑定在一起 数据绑定最简单的形式是:源对象是WPF元素而且源属性是依赖项属性.依赖项属性内置了更改通知支持,当源对象中改变依赖项属性时,会立即更新目标对象的绑定属性. 元素绑定到元素也是经常使用 ...

  7. Serverless:这真的是未来吗?(二)

    原文 | https://www.pulumi.com/blog/is_serverless_the_future_part_2/ 作者 | Lee Briggs & Piers Karsen ...

  8. react之组建通信

    父组件与子组件通信 父组件将自己的状态传递给子组件,子组件当做属性来接收,当父组件更改自己状态的时候,子组件接收到的属性就会发生改变 父组件利用ref对子组件做标记,通过调用子组件的方法以更改子组件的 ...

  9. 前段---css

    css主要是用来做如何显示html元素的 当浏览器读到一个样式表,它就会按照这个样式表来对文档做渲染 注意:每一个css样式表都是由两个部分组成的, 1,选择器 2,声明 声明又包括属性值和属性,每个 ...

  10. L1-017 到底有多二 (15 分) java解题

    1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String args[]){ 5 doub ...