介绍

iptables概述:

netfilter/iptables : IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables 组成。

netfilter/iptables 关系:

netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。

IP地址规划

主机名 eth0 eth1 作用
firewalld 10.0.0.81 172.16.1.81 防火墙
m01 10.0.0.61 172.16.1.61 (ifdown) 批量管理

 m01通过内网网关(访问firewalld内网IP地址)进行地址转换,从而访问外网。

流程图:

防火墙服务安装部署

[root@firewalld ~]# yum install -y iptables-services  

[root@firewalld ~]# systemctl start iptables

修改m01网卡配置

因为是内网访问所以我们无需使用eth0,直接down就可以

[root@m01 ~]#  ifdown  eth0
[root@m01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
UUID=ae935876-ade9-4a88-b7d7-45fb1fc6d690
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.61
PREFIX=
GATEWAY=172.16.1.81 #网关是firewalld的内网IP地址
DNS1=223.5.5.5 #要有DNS解析,否则无妨上网

修改完需要我们重启eth1网卡:

[root@m01 ~]#  ifdown eth1 && ifup eth1
Device 'eth1' successfully disconnected.
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/)

修改firewalld的网卡配置

forward 表 负责转发流经主机的数据包,起转发的作用,和NAT关系很大

LVS NAT 模式,net.ipv4.ip_forward=0

[root@firewalld ~]# echo ""> /proc/sys/net/ipv4/ip_forward   #修改当前系统内存中ip_forward的值,这是开启ip转发
[root@firewalld ~]# cat /proc/sys/net/ipv4/ip_forward
[root@firewalld ~]# sysctl -p 或者:
[root@firewalld ~]# vim /etc/sysctl.conf
#最后一行加上
net.ipv4.ip_forward =
[root@firewalld ~]# sysctl -p

firewalld防火墙配置

POSTROUTING:  表示数据包在从一个接口要流出, 做一个地址映射
PREROUTING:   表示数据包在从一个接口要流入, 做一个地址转换
OUTPUT :  表示将防火墙自身产生的数据流量做地址或者端口转换

[root@firewalld ~]# iptables -t nat -A POSTROUTING  -s  172.16.1.61  -o eth0 -j SNAT  --to-source 10.0.0.81
#将172.16.1.61IP地址转换为10.0.0.
[root@firewalld ~]# service iptables save #保存设置,将上面的设置写入文件内

[root@m01 ~]# iptables-save #查看内容
# Generated by iptables-save v1.4.21 on Thu Dec ::
*nat
:PREROUTING ACCEPT [:]
:INPUT ACCEPT [:]
:OUTPUT ACCEPT [:]
:POSTROUTING ACCEPT [:]
-A POSTROUTING -s 172.16.1.61/ -o eth0 -j SNAT --to-source 10.0.0.81
COMMIT
# Completed on Thu Dec ::
# Generated by iptables-save v1.4.21 on Thu Dec ::
*filter
:INPUT ACCEPT [:]
:FORWARD ACCEPT [:]
:OUTPUT ACCEPT [:]
COMMIT
# Completed on Thu Dec ::

m01 进行测试:

[root@m01 ~]# ping  baidu.com
PING baidu.com (220.181.38.148) () bytes of data.
bytes from 220.181.38.148 (220.181.38.148): icmp_seq= ttl= time= ms
bytes from 220.181.38.148 (220.181.38.148): icmp_seq= ttl= time= ms
bytes from 220.181.38.148 (220.181.38.148): icmp_seq= ttl= time= ms
bytes from 220.181.38.148 (220.181.38.148): icmp_seq= ttl= time= ms

实验完成,最核心的是iptables的配置,需要用到nat表中的POSTROUTING

iptables内网访问外网 ε=ε=ε=(~ ̄▽ ̄)~的更多相关文章

  1. 利用iptables的NAT代理实现内网访问外网

    利用NAT代理实现内网访问外网 背景及原理 若局域网中的两台计算机只能有一台能够访问外网,而这两台计算机之间能相互通信,那么可以配置能访问外网的那台服务器实现路由器的功能,即实现其他机器的NAT转换, ...

  2. 医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网

    首先介绍下主要需求,很简单,就是要在医院his系统内嵌公司的平台,实现内网直接访问外网 这是院方给我提供的网闸相关配置,105是医院内网的服务器,120是外网的服务器,中间通过网闸配置的几个端口实现互 ...

  3. iptables之NAT代理-内网访问外网

    1.前言 本文使用NAT功能:内网服务器,想上网又不想被攻击. 工作原理:内网主机向公网发送数据包时,由于目的主机跟源主机不在同一网段,所以数据包暂时发往内网默认网关处理,而本网段的主机对此数据包不做 ...

  4. openWRT利用mac地址限制局域网内设备访问外网

    利用iptable设置防火墙: iptables -A INPUT -p tcp -m mac --mac-source 44:94:FC:25:68:8D --dport 80 -j DROP

  5. iptables内网地外网之间访问

    环境:一台带外网和内网的机器,另一台只有内网,默认不能上网.两台机器都是centos系统带外网机器的外网ip为 123.221.20.11, 内网网关ip为 192.168.15.100内网机器的内网 ...

  6. Docker 容器内无法通过 HTTP 访问外网

    现象 内/外网 IP 和 域名 可以 ping 通 容器内无法访问宿主机所在内网及外网的 Web 服务(404) 通过 curl 查看返回头信息感觉是所有 Web 请求被中转到一个固定的 Nginx ...

  7. 内网DMZ外网之间的访问规则

    当规划一个拥有DMZ的网络时候,我们可以明确各个网络之间的访问关系,可以确定以下六条访问控制策略. 1.内网可以访问外网 内网的用户显然需要自由地访问外网.在这一策略中,防火墙需要进行源地址转换. 2 ...

  8. 内网IP外网IP的关联及访问互联网原理

    首先解释一下“内网”与“外网”的概念: 内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的.但两个局域网内的内网IP可以有相同的. 外网:即互联网 ...

  9. Windows两个网卡配置路由规则 同时访问内网和外网

    电脑上有两个网卡,一个有线一个无线,有线连局域网,无线连外网,虽然两个网都连着,但还是会出现访问不通的情况. 这就要求我们自己来配置路由规则,让内网的访问走内网的网卡,外网的访问走外网的网卡. 一.查 ...

随机推荐

  1. python网络编程(Socket、TCP、UDP)

    Socket 是网络编程的一个抽象概念,通常我们用一个Socket表示 "打开了一个网络链接",而打开一个Socket 需要知道目标计算机的IP 地址和端口号,再指定协议类型即可. ...

  2. .net core cookie滑动过期设置

    HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, userPrincipal, new Authe ...

  3. MathType 6.0中MT Extra(TrueType)问题

    问题 MathType 6.0中MT Extra(TrueType)字体问题在打开MathType6.0时,有时会提示MathType需要安装一个较新版本的MT Extra(TrueType)字体,这 ...

  4. C# 重写WndProc

    重写WndProc方法来处理 Windows 消息 处理 Windows 消息. 在开发winForm时,常常要处理Windows消息,可以重写WndProc来实现.常见代码如下: using Sys ...

  5. MessageBox显示位置

    假设存在2个窗口类CImDlg与CChatDlg,如果希望MessageBox跟随CChatDlg,方法是 CChatDlg *pDlg = xxx; pDlg->MessageBox();

  6. Thinkphp6框架学习:($this->error()undefined)Call to undefined method app\index\controller\Admin::error()

    最近在使用Thinkphp6框架的时候,想做一个初始化来验证登录状态. 当没有Session::get(‘adminUid’)的时候就应该跳转到admin\adminLogin的方法中,和以前Tp5的 ...

  7. centos 7 源码安装 mysql 5.6

    下载 mysql 安装包 $ wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.44.tar.gz # or $ curl -O ht ...

  8. EM 算法(二)-KMeans

    KMeans 算法太过简单,不再赘述 本文尝试用 EM 算法解释 KMeans,而事实上 KMeans 算是 EM 的一个特例 EM 算法是包含隐变量的参数估计模型,那对应到 KMeans 上,隐变量 ...

  9. spark教程(12)-生态与原理

    spark 是目前非常流行的大数据计算框架. spark 生态 Spark core:包含 spark 的基本功能,定义了 RDD 的 API,其他 spark 库都基于 RDD 和 spark co ...

  10. FullPage.js全屏插件文档及使用方法

    简介 fullPage.js是一个基于jQuery的全屏滚动插件,它能够很方便.很轻松的制作出全屏网站 下载地址 下载地址 相关示例:基于fullpage.js实现的360全屏滑动效果 支持功能 支持 ...