二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

  • GitLab

  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

    • 整理蓝鲸社区版3-X部署文档
    • 关于开源堡垒机jumpserver_1-2的一些体验记录
    • 防火墙基础知识之SNAT详解
    • 关于easyops的社区版与正式版两者体验之思考
    • DELL R430服务器做raid以及安装操作系统过程
    • CentOS系统安装之后的优化
    • 如何快速的批量配置某台主机对多台主机免密码登陆
    • Python-2-7的安装
    • pinpoint安装流程
    • CentOS7上Python-3-6的安装
    • 记录我与maven的故事三则
    • tomcat默认日志优化处理
    • Maven 基础知识大全汇总整理
    • 会话管理工具tmux整理
    • 使用pure-ftpd搭建ftp服务
    • 简单快速部署轻量Git服务器gogs
    • 使用athens部署企业内部Gitlab包的私服代理
    • 快速部署cerebro-v0-9-4监控es集群状态
    • 使用transfer部署一个内网上传程序
    • 认识并使用一个透明代理http-server
  • 运维观止
  • Other
二丫讲梵
2018-06-14

防火墙基础知识之SNAT详解

文章发布较早,内容可能过时,阅读注意甄别。

在防火墙配置策略当中有 SNAT 以及 DNAT 之分,两者各有区别,今天先来说明一下 SNAT。

多应用在公司只有一个外网 IP, 那么整个公司的内网, 该怎么上网呢?

image

要想都能够访问外网, 就可以通过防火墙规则将它们出去时的源地址修改成唯一的公网 IP, 然后与外网对接, 数据返回之后, 它再交给内网 (局域网)PC 机。

image

现在可以通过简单的实验来做个验证。

主机 A: 模拟内网主机 eth0 192.168.66.10

主机 B: 模拟网关服务器 eth0 192.168.66.20 eth1 200.200.200.10

主机 C: 模拟外网 Web 站点 eth0 200.200.200.20

条件:

1, 内网各主机将设置正确的 IP 地址 / 子网掩码,并设置网关服务器的内网 IP 为默认网关地址。(可由 DHCP 服务器分发)

route add default gw 192.168.66.20
1

2, 网关服务器支持 IP 路由转发,并编写 SNAT 转换规则。

vim /etc/sysctl.conf
其中的net.ipv4.ip_forward = 1	#开启转发
sysctl -p  #加载一下
1
2
3
#iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o eth1 -j SNAT --to-source 200.200.200.10
1

解释这条规则如下:

#在防火墙的 nat 表当中的 POSTROUTING 链上添加(-A)一条规则,规则是从(-s)66 网段过来的请求,出去(-o OPUTPUT)的时候都走 eth1(外网网卡),做的动作(-j)是转换它的源地址(SNAT)为 200.200.200.10

查看一下这条规则

image

3, 外网服务器,安装 apache,写一个测试网页!

yum -y install httpd
echo “11111” >  /var/www/html/index.html
service httpd start
1
2
3

测试:

直接在内网主机输入 curl 200.200.200.20,如果访问到,则说明成功。

插曲:

上边是针对企业中常应用的,但在家庭当中,很少有固定地址,一般都是动态地址,也就是说,出去的跳板是变动的,这样刚才所设置的规则就不行了,不过现在可以通过一个叫做 MASQUERADE—- 地址伪装来解决。

按刚才的环境不变,清空刚才的的防火墙规则。重新添加。

iptables	-F -t nat
iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o eth1 -j MASQUERADE
1
2

image

ok,现在,可以模拟改变外网 IP

ifconfig eth1 200.200.200.200 netmask 255.255.255.0
1

测试:

直接在内网主机输入 curl 200.200.200.20,如果访问到,则说明成功。

微信 支付宝
上次更新: 2024/07/04, 22:40:37
关于开源堡垒机jumpserver_1-2的一些体验记录
关于easyops的社区版与正式版两者体验之思考

← 关于开源堡垒机jumpserver_1-2的一些体验记录 关于easyops的社区版与正式版两者体验之思考→

最近更新
01
睡着的人不关灯
06-12
02
学习周刊-总第215期-2025年第24周
06-12
03
学习周刊-总第214期-2025年第23周
06-05
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式