Linux下配置SNAT上网
局域网有一台主机A,没有公网的IP, 也就是没有办法直接连到互联网上下载东西,同时内网有另外一台主机B,有公网接入。这个时候为了让A连接到互联网,我把B设置成NAT主机,A的网关指向B。
准确的来说,现在的相当于SNAT模式。分析一下数据包流向:
IP信息如下:
A: eth0: 10.122.70.74
B: eth1:10.122.70.65 / eth0:220.220.220.65
发送数据包:
A发送数据包时,B也就是NAT主机,分析数据包表头,将此数据包转到可以连接公网的Public IP上去。由于私有IP与公有IP不能互通,B会通过iptables的NAT table内的Postrounting链将数据包表头伪装成B的公网IP,并且将这两个不同来源的数据包对应关系写入暂存内存中,然后将数据包传送出去。此时传到互联网的这个数据包,已经表现为来自公网IP,而非来自局域网。
接收响应包:
当从互联网把数据响应给A时,会首先进入NAT主机B,B分析数据包的序号,对比刚刚记录到内存中的数据,由于发现该数据包为后端主机之前传送出去的,因此在NAT Prerouting链中,会将目标IP修改成为后端主机,即A的IP,然后发现目标已经不是本机公网IP,开始通过路由分析,将数据包传送到B的局域网接口,再传送到最终目标10.122.70.74上去。
B的设置如下:
#允许接受局域网网卡的数据包,
iptables -I INPUT -i eth1 -j ACCEPT
#开启路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward
#伪装数据包
iptables -t nat -A POSTROUTING -s 10.122.70.74 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.122.70.74 -j MASQUERADE
或者用SNAT直接修改IP数据包的表头来源IP
iptables -t nat -A POSTROUTING -o eth1 -j SNAT –to 10.122.70.74
如果支持多个IP
iptables -t nat -A POSTROUTING -o eth1 -j SNAT –to 10.122.70.74-10.122.70.100
A设置:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.122.70.74
NETMASK=255.255.0.0
GATEWAY=10.122.70.65
===============================================
查看nat表链规则
iptables -t nat -L -n
删除POSTROUTING第一条规则
iptables -t nat -D POSTROUTING 1
参考:http://www.cellmean.com/linux%E4%B8%8B%E9%85%8D%E7%BD%AEsnat%E4%B8%8A%E7%BD%91
Linux下配置SNAT上网的更多相关文章
- 【转】 linux下配置squid 服务器,最简单使用方式
linux下配置squid 1.什么是squid Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器.Squid有广泛的用途,从作为网 ...
- Linux下配置一个VNC服务器
在Linux下配置一个VNC服务器,并设置2个用户,要求其中一个用户登录时不需要输入密码. 然后在客户端使用ssh+vncview的方式访问. 1确认vnc安装 2配置vncserver 3测试vnc ...
- linux下配置mysql默认编码utf8
linux下配置mysql默认编码utf8 下面是需要在对应地方加入的配置 [client] default-character-set=utf8 [mysqld] character-set-ser ...
- Linux下配置Lamp
linux下配置lamp步骤: 一.快速安装Apache+PHP5+MySql 先更新: # yum update 然后安装LAMP环境:(163的yum源上只有php5.1.6 mysql 5.0. ...
- Linux下配置PHP开发环境
转载于: http://www.uxtribe.com/php/405.html 该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件 ...
- 一步一步教你如何在linux下配置apache+tomcat(转)
一步一步教你如何在linux下配置apache+tomcat 一.安装前准备. 1. 所有组件都安装到/usr/local/e789目录下 2. 解压缩命令:tar —vxzf 文件名(. ...
- Linux下配置Tomcat服务器
Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安 ...
- Linux下配置JDK
下面以CentOS为例,详细说一下Linux下配置JDK的过程 首先按照约定俗成的习惯,将jdk放在/usr/local/java下,首先进入/usr/local然后新建一个目录java 然后我们需要 ...
- Linux下配置Node环境变量及问题详解
这是之前在Linux下配置Node环境变量时踩过的坑,今天又有小伙伴询问这个问题,因此记录下来,不仅是给新童鞋们一些参考,也方便日后查阅 在这之前,相信都已经安装好了,没安装的可以查看博主另一篇文章 ...
随机推荐
- dede织梦怎么修改description的字数
织梦在调用描述的时候都会使用description来调用描述,想要更改字数也可以控制调用的字数,但是就算是这样更改也是有字数限制的,描述的字数是不能没有限制. 在模板中调用描述的标签一般有四种: 1: ...
- MYSQL主从库同步配置过程
MYSQL主从库同步配置过程 为了实现网站数据库的异地备份,采用了MySQL数据库主从同步配置,需要两台服务器分别作为主从库,当主库发生增删改等操作,会实时反映到从库,我的个人服务器配置如下: 主库为 ...
- 一个故事讲明白线程的私家领地:ThreadLocal
张大胖上午遇到了一个棘手的问题,他在一个AccountService中写了一段类似这样的代码: Context ctx = new Context(); ctx.setTrackerID(.....) ...
- 2017-07-07(zip unzip gzip gunzip)
zip压缩格式 zip zip 压缩文件名 源文件 (压缩文件) zip -r 压缩文件名 源文件 (压缩目录) unzip unzip 压缩名 .gz压缩格式 gzip gz ...
- RocketMQ-quickstart(批量消费问题)
基本概念: Producer:消息生产者,负责生产消息,一般由业务系统负责生产消息. Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费. Push Consumer:Consum ...
- scss 编译方法
第一种: 手动创建 scss文件夹 用Node.js command promt 进入项目目录 在项目目录下面 输入 sass scss/main.scss css/main.css s ...
- tomcat server.xml context path配置需要注意的事情
在tomcat下放个war包,假如我是这样配置server.xml的,<Context docBase="eggchina" path="/yanan" ...
- junit设计模式--组合模式
Composite,英语翻译下,复合,组合. 组合模式有时候又叫做部分-整体模式,它使我们在树形结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户 ...
- JDBC (五)
1 使用dbutils进行一对多.多对多的开发 1.1 准备 mysql驱动的pom.xml <!-- https://mvnrepository.com/artifact/mysql/mysq ...
- 关于awk的多文件处理
关于awk的多文件处理: awk的数据输入有两个来源,标准输入和文件,后一种方式支持多个文件,如1.shell的Pathname Expansion方式:awk '{...}' *.txt # *.t ...