Iptables 代理局域网内的主机上网
参考连接: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 代理局域网内的主机上网的更多相关文章
- arp命令(windows ),nmap查看局域网内所有主机IP和MAC
ARP命令详解 ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址.实用arp命令,我们能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容.此外,使用arp命令,也可 ...
- Nginx代理实现内网主机访问公网服务
通过Nginx代理实现内网主机访问公网和接口服务 1.需求: m2.test.com为公司测试环境的微信测试域名,因为要调用微信服务接口需要访问外网,现通过Nginx代理现实此功能. 2.环境如下: ...
- 局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目(转)
局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目 1.在宿主机cmd中查看宿主机的ip(注意区分主机中虚拟机的ip) 我连的是无线,IP如下 2.在Django项目的mysit ...
- 访问局域网内其他主机的VMware虚拟机上的mysql数据库和redis缓存
上一篇写了访问局域网内其他主机的虚拟机上的项目 ,现在说说访问局域网内其他主机的虚拟机上的数据库和缓存 博主使用的linux是Ubuntu16.04: 一.安装数据库和缓存 这里连接的数据库和缓存以m ...
- 如何通过iptables代理访问内网
场景 A机器能够联通内网机器,B机器能够联通A机器,但是访问不到内网机器,场景是希望通过A机器能够转发直接联通局域网内的其它机器 机器IP 内网为172.0.0.x/24 A机器为172.0.0.10 ...
- windows CMD命令查看局域网内所有主机名及IP
COLOR 0A CLS @ECHOOff Title查询局域网内在线电脑IP :send @ECHO off&setlocal enabledelayedexpansion ECHO 正在获 ...
- AUTOSSH设置ssh隧道,实现反向代理访问内网主机
内网主机上配置: autossh -M -CNR :localhost: ubuntu@123.207.121.121 可以实现将访问主机123.207.121.121的1234端口的数据,通过隧道转 ...
- CentOS squid代理内网主机上网 openVpn配置
- Linux 下查看局域网内所有主机IP和MAC
linux环境下,执行namp对局域网扫描一遍,然后查看arp缓存表就可以知道局域内ip对应的mac.namp比较强大也可以直接扫描mac地址和端口,执行扫描之后就可以在/proc/net/arp查看 ...
随机推荐
- 深入浅出 BPF TCP 拥塞算法实现原理
本文地址:https://www.ebpf.top/post/ebpf_struct_ops 1. 前言 eBPF 的飞轮仍然在快速转动,自从 Linux 内核 5.6 版本支持 eBPF 程序修改 ...
- 【PHP数据结构】链表的相关逻辑操作
链表的操作相对顺序表(数组)来说就复杂了许多.因为 PHP 确实已经为我们解决了很多数组操作上的问题,所以我们可以很方便的操作数组,也就不用为数组定义很多的逻辑操作.比如在 C 中,数组是有长度限制的 ...
- webpack4一些设置
一.sourceMap: 是一个映射关系,如果出错可以知道实际文件行数出错 在webpack.config.js设置属性 devtool: 'source-map' 在生产环境可以设置为(提醒错误比较 ...
- I/O流中的字节流
今天总结一下Java中重要的知识点I/O流,今天主要学习了字节流(自己的理解) 什么是I/O:我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出ou ...
- Shell条件判断(6)- 多重条件判断
多重条件判断 多个条件判断一起使用 测试选项 作用 判断1 -a 判断2 逻辑与,判断1和判断2都成立,最终的结果才为真 判断1 -o 判断2 逻辑或,判断1和判断2有一个成立,最终的结果就为真 ! ...
- 最推荐的抓包工具charles
Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据.它允许一个开发者查看所有连接互联 ...
- javascript 标签切换
* index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 接口测试-Mock测试方法
接口测试-Mock测试方法一.关于Mock测试1.什么是Mock测试?Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造 ...
- python多线程与_thread模块
进程与线程 1.进程:计算机程序只是存储在磁盘中的可执行二进制(或其他类型)的文件.只有把他们加载到内存中并被操作系统调用,才具有其生命周期.进程则是一个执行中的程序.每个进程都拥有自己的地址空间,内 ...
- 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 百篇博客分析OpenHarmony源码 | v5.05
百篇博客系列篇.本篇为: v05.xx 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度谁 ...