利用iptables做网络转发
常见的网络拓扑图结构如下:
但是内网服务器偶尔有上网需求,比如yum工具,wget文件。而我们又不能让重要业务直接暴露在公网上。

好用的安全策略有:三层交换机、路由器做nat映射,防火墙做安全策略。
由于种种原因接触不到上层网络设备,采用临时iptables代理方案:
一、在内网服务器设置网关为web服务器ip地址
二、在web服务器设置iptables转发
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o ens161 -j MASQUERADE
或者
iptables -t nat -A POSTROUTING -i ens192 -o ens161 -j MASQUERADE
或者修改iptables文件,加到nat表中,不要加到filter表中
*nat
-A POSTROUTING -s 172.16.1.0/24 -o ens161 -j MASQUERADE
COMMIT
精简版iptables配置文件,其他端口自行添加
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
-A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP
-A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#公司,XXXXX替换成ssh端口
-A INPUT -p tcp -m multiport --dport 22,XXXXX -j ACCEPT -A OUTPUT -p tcp -m multiport --dports 80,443,21,XXXXX,22 -j ACCEPT
-A OUTPUT -p udp -m multiport --dports 123,53,161 -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
#由于部分内网服务器没有公网ip,采用nat代理
*nat
-A POSTROUTING -s 172.16.1.0/24 -o ens192 -j MASQUERADE
COMMIT
题外话,内容详解
iptables -t nat -A PREROUTING -i eth1 -d 200.200.200.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.66.10
解释这条规则如下: 在防火墙的nat表当中的PRETROUTING链上添加(-A)一条规则,规则是一个请求进来时(-i INPUT),请求我eth1(即目标地址是200.200.200.10)的,而且访问请求的端口是80的,那么我做的动作(-j)是将他的目标地址修改(DNAT)为192.168.66.10
iptables -t nat -A PREROUTING -i eth1 -d 200.200.200.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.66.10:8000
如果客户访问的是正常的apache服务,那么到达我内网服务器时实际访问的是一个叫8000的端口的东东。
利用iptables做网络转发的更多相关文章
- 利用iptables做端口转发
需求背景: A与C不在同一网段无法直接访问,而A和B,C和B可以互通.现需要A借助B访问C的3306端口. 解决方案: 利用iptables配置规则,实现端口转发. 具体操作: 在B上开启端口转发功能 ...
- iptables做端口转发
一.用iptables做本机端口转发 比如80端口转8080端口 代码如下: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT ...
- 使用iptables做端口转发
通过iptables可以做转发 #!/bin/sh IPT="/sbin/iptables" /bin/echo "1" > /proc/sys/net/ ...
- linux下用iptables做本机端口转发方法(转载)
一 :从一台机到另一台机端口转发 启用网卡转发功能 #echo 1 > /proc/sys/net/ipv4/ip_forward 举例:从192.168.0.132:21521(新端口)访问1 ...
- 利用iptables实现基于端口的网络流量统计
如何统计某个应用的网络流量(包括网络流入量和网络流出量)问题,可以转换成如何基于端口号进行网络流量统计的问题.大部分网络应用程序都是传输层及以上的协议,因此基于端口号(tcp, udp)统计网络流量基 ...
- 使用linux系统做路由转发
使用linux系统(PC机)做路由转发 关键字:linux,Fedora,route,iptables,ip_forward 最近做网络实验,在实验过程中需要用到linux的转发功能,但是遇到一些问题 ...
- Android利用Fiddler进行网络数据抓包,手机抓包工具汇总
Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...
- iptables 设置端口转发/映射
iptables 设置端口转发/映射 服务器A有两个网卡 内网ip:192.168.1.3 外网ip:10.138.108.103 本地回环:127.0.0.1 服务器B有网卡,8001提供服务 内网 ...
- iptables nat 技术转发
NAT 一. 什么是 NAT NAT(Network Address Translation)译为网络地址转换.通常路由器在转发我们的数据包时,仅仅会将源MAC地址换成自己的MAC地址,但是NAT技术 ...
随机推荐
- HDU 2044 一只小蜜蜂... (斐波那契数列)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044 题目分析:其实仔细读题就会发现其中的规律, 其中:这是一个典型的斐波那契数列. 代码如下: #i ...
- docker镜像制作及发布
以centos为例. 主要内容:安装docker,制作镜像,发布镜像. 安装docker 1. 安装docker yum install -y docker 等待一会,安装成功,查看安装列表 2. 启 ...
- 《剑指offer》面试题41. 数据流中的中位数
问题描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 例 ...
- golang中的map
1. 声明与初始化 // map的声明与初始化 userInfo := map[string]string{"name": "马亚南", "age&q ...
- gin中绑定表单数据至自定义结构体
package main import "github.com/gin-gonic/gin" type StructA struct { FieldA string `form:& ...
- Redis入门及环境搭建
一:Redis简介 Redis(Remote Dictionary Server 远程字典服务)是一个开源的(BSD许可的)内存数据结构存储,用作数据库.高速缓存和消息队列代理. Redis提供五大基 ...
- 数据库查询语句遇到:Unknown column 'XXXX' in 'where clause'解决方法
数据库查询语句遇到:Unknown colunm 'XXX' in 'where clause'解决方法 根本原因:可能是sql语句所用到的数据类型错误(int与String)弄错- 我的情况: 在网 ...
- 前端基础之CSS(浮动-解决溢出-实现个人头像框)
目录 一:浮动float 1.什么是浮动? 2.浮动的作用 3.浮动有两个特点 4.float格式 二:代码实现左右浮动边框 三:浮动造成父标签塌陷问题(清除浮动) 1.浮动会造成父标签的影响 三:清 ...
- find直接copy大于某一个时间小于某一个时间的文件
find ./ -type f -newermt '2000-01-04 10:30:00' ! -newermt '2019-10-28 10:57:00' -exec cp -a {} /var/ ...
- Spring系列9:基于注解的Spring容器配置
写在前面 前面几篇中我们说过,Spring容器支持3种方式进行bean定义信息的配置,现在具体说明下: XML:bean的定义和依赖都在xml文件中配置,比较繁杂. Annotation-based ...