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查看 ...
随机推荐
- 做一个U盘的学习路线
最近想研究一个U盘,然后顺便熟悉一下USB协议.因为USB协议比较复杂, 常用的复杂外设除了WiFi,Ethernet,SDIO和USB这些就是USB了,学习USB的时候肯定要拿一个东西下手,所以简单 ...
- PHP打印跟踪调试信息
对于大部分编译型语言来说,比如 C . Java . C# ,我们都能很方便地进行断点调试,但是 PHP 则必须安装 XDebug 并且在编辑器中进行复杂的配置才能实现断点调试的能力.不过,如果只是简 ...
- Shell系列(35)- for循环语法一简介及批量解压缩脚本
for循环语法一 for 变量 in 值1 值2 值3 - do 程序 done 例子 需求:批量解压缩 脚本: #!/bin/bash cd /root/publicls *.tar.gz > ...
- 【C++ Primer Plus】编程练习答案——第5章
1 void ch5_1() { 2 using namespace std; 3 int small, big, sum{0}; 4 cout << "enter small ...
- 【C++ Primer Plus】编程练习答案——第4章
1 void ch4_1() { 2 using namespace std; 3 string fname, lname; 4 char grade; 5 unsigned int age; 6 c ...
- Android12系统源码分析:NativeTombstoneManager
Android12系统源码分析:NativeTombstoneManager 概述 android12新增的system_server进程(LocalService)本地服务,用于管理native t ...
- java 从零开始手写 RPC (03) 如何实现客户端调用服务端?
说明 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 写完了客户端和服务端,那么如何实现客户端和服务端的 ...
- 怎样将.h文件添加到项目中
作为C++的初学者,在运行别人的程序时,第一个遇到的问题就是无法将程序中写到的.h文件包含到项目中来.下面来写一下处理方法.本文以easyx.h为例进行说明 首先右键你的工程 选择Properties ...
- $\Large{\LaTeX}$ 常用公式
$$\Large{\LaTeX}$$: \[\Large{\LaTeX} \] $ $ 表示行内 $$ $$ 表示独立 $\operatorname{lcm}(x)$\(\operatorname{l ...
- CF911G Mass Change Queries(线段树+暴力)
cf机子真的快. 其实这个题的维护的信息还是很巧妙的. 首先,观察到题目中涉及到,区间修改这个操作,然后最后只查询一次,我们不妨用线段树来维护这个过程. 但是貌似直接维护每个位置的值可能不太好维护. ...