• [云解析] 利用云解析API将域名动态解析到家庭路由器上
    一、背景 前些年各种免费网盘如雨后春笋、铺天盖地,年轻的小伙伴纷纷将珍藏多年的学(稀)习(缺)材(资)料(源)拿出来上云,可是好景不长,各大网盘纷纷关闭,某度也对教育视屏痛下杀手。老师们飘逸的身姿、优雅的背影随着时间一点一点在小伙伴的记忆中慢慢褪去,消香玉损。 作为掌握先进科学知识的互联网从(屌)业(丝)者,自然要发扬“艰苦创业,自力更生”的革命精神,在家里打造属于自己的私有网盘。当然我们不必自己去开发一个完整功能的网盘,目前已经有好几个十分成熟的私有网盘项目,比如资格较老的OwnCloud,由上述原班人马打造的NextCloud,功能和插件都非常丰富的FileRun。你可以让它们运行在家里的电脑上、树莓派上、甚至是路由器上,但是接下来的问题是家庭使用宽带拨号上网的IP总是变化的,总不能每次在家里查好了IP再去访问网盘,所以本文重点是使用python脚本利用华为云解析服务的API实现动态域名解析 二、准备 1、域名一个,建议买一个,通常一年的费用也就60左右,却能给你带来巨大的品牌价值(逼格),当然免费的也有很多,详情Google。 2、在域名注册商将此域名解析到华为权威服务器,参考:http://support.huaweicloud.com/u ... pic_0035467702.html 3、在家里的服务器(PC、树莓派、路由器,有啥都行)上安装python执行环境 三、Code 1、一个对三方库requests封装的类,实现一些简单的HTTP方法请求及响应处理 [code]#!/usr/bin/python # coding: utf-8 # HttpRequest.py # author : qshujun # version : 1.0.0 # date : 2017/11/25 import requests class HttpRequests(): ´´´ 对requests库封装的GET、POST、PUT等方法调用类 ´´´ def __init__(self, url, data=None, type=´GET´, cookie=None, headers=None): self.url = url self.data = data self.type = type self.cookie = cookie self.headers = headers self.send_request() def send_request(self): ´´´´´ setup a request ´´´ if self.url == None or self.url == ´´: raise ´The url should not empty!´ if self.type == ´POST´: self.req = requests.post(self.url, data=self.data, headers=self.headers) elif self.type == ´GET´: if self.data == None: self.req = requests.get(self.url, headers=self.headers) else: self.req = requests.get(self.url, params=self.data, headers=self.headers) elif self.type == ´PUT´: self.req = requests.put(self.url, data=self.data, headers=self.headers) else: self.req = None raise ´The http request type NOT support now!´ def get_code(self): try: return self.req.status_code except Exception,e: raise str(e) def get_url(self): try: return self.req.url except Exception,e: raise str(e) def get_text(self): try: return self.req.text except Exception,e: raise str(e) def get_headers(self): try: return self.req.headers except Exception,e: raise str(e) def get_cookie(self): headers = self.get_headers() if ´set-cookie´ in headers: return headers[´set-cookie´] else: return None[/code][code]#!/usr/bin/python # coding: utf-8 # hwcloud-ddns.py # author : qshujun # version : 1.0.0 # date : 2017/11/25 import json import socket from HttpRequest import HttpRequests ´´´ 定义全局变量 ´´´ #需要解析的域名及主机名 domain = ´shujun.com´ host = ´www´ #认证信息 domainname = ´domainname ´ username = ´username ´ password = ´password ´ regionId = ´cn-north-1´ iam_endpoint = ´https://iam.{regionId}.myhwclouds.com´ get_token_uri = ´/v3/auth/tokens´ #DNS接口信息 nds_endpoint = ´https://dns.myhwclouds.com´ query_zones_uri = ´/v2/zones?type=public&limit=50´ create_zone_uri = ´/v2/zones´ query_recordsets_uri = ´/v2/zones/{zone_id}/recordsets?limit=500´ modify_recordset_uri = ´/v2/zones/{zone_id}/recordsets/{recordset_id}´ create_recordset_uri = ´/v2/zones/{zone_id}/recordsets´ #默认请求头 headers = {´content-type´: ´application/json´} def get_iam_token(): ´´´ 以用户名、密码从IAN换取token并加入headers :return: ´´´ iam_token_url = iam_endpoint.replace(´{regionId}´, regionId) + get_token_uri data = { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": username, "password": password, "domain": { "name": domainname } } } }, "scope": { "project": { "name": regionId } } } } req = HttpRequests(iam_token_url, data=json.dumps(data),type=´POST´, headers=headers) if ´X-Subject-Token´ in req.get_headers(): headers[´X-Auth-Token´] = req.get_headers()[´X-Subject-Token´] else: print ´Get IAM token failed, http code: %s, %s´ % (str(req.get_code()),req.get_text()) exit(1) def query_zone(): ´´´ 查询zone(即domain:shujun.net)的id :return:zone_id ´´´ query_zones_url = nds_endpoint + query_zones_uri req = HttpRequests(query_zones_url, headers=headers) if req.get_code() == 200: zones = json.loads(req.get_text())[´zones´] for zone in zones: if zone[´name´] == domain + ´.´: return zone[´id´] return None else: print ´Query zone list failed, http code: %s, %s´ % (str(req.get_code()),req.get_text()) exit(1) def create_zone(): ´´´ 创建zone(即domain:shujun.net)的,并返回新zone的id :return: zone_id ´´´ create_zone_url = nds_endpoint + create_zone_uri data = { "name": domain + ´.´, "description": "This is an example zone.", "zone_type": "public", "email": "xx@example.org" } req = HttpRequests(create_zone_url, type=´POST´, data=json.dumps(data), headers=headers) if req.get_code() == 202: zone = json.loads(req.get_text()) return zone[´id´] else: print ´Create zone failed, http code: %s, %s´ % (str(req.get_code()),req.get_text()) exit(1) def query_recordset(zone_id): ´´´ 查询主机A记录,并返回记录链接及其值 :param zone_id: :return: recordset_url,old_ip ´´´ query_recordset_url = nds_endpoint + query_recordsets_uri.replace(´{zone_id}´,zone_id) req = HttpRequests(query_recordset_url, headers=headers) if req.get_code() == 200: recordsets = json.loads(req.get_text())[´recordsets´] for recordset in recordsets: if recordset[´name´] == host + ´.´ + domain + ´.´: return recordset[´links´][´self´], recordset[´records´][0] return None, None else: print ´Query recordset list failed, http code: %s, %s´ % (str(req.get_code()),req.get_text()) exit(1) def modify_recordset(recordset_url,new_ip): ´´´ 修改host.domain对应的A记录为新ip :param recordset_url: :param new_ip: :return: ´´´ data = { "description": "This is an example record set.", "ttl": 300, "records": [new_ip] } req = HttpRequests(recordset_url, type=´PUT´, data=json.dumps(data), headers=headers) if req.get_code() == 202: return True else: print ´Modify recordset failed, http code: %s, %s´ % (str(req.get_code()),req.get_text()) def create_recordset(zone_id,new_ip): ´´´ 创建新的主机记录 :param zone_id: :param new_ip: :return: ´´´ create_recordset_url = nds_endpoint + create_recordset_uri.replace(´{zone_id}´, zone_id) date = { "name": host + ´.´ + domain + ´.´, "description": "This is an example record set.", "type": "A", "ttl": 300, "records": [new_ip] } req = HttpRequests(create_recordset_url, type=´POST´, data=json.dumps(date), headers=headers) if req.get_code() == 202: return True else: print ´Create recordset failed, http code: %s, %s´ % (str(req.get_code()),req.get_text()) exit(1) def get_public_ip(): ´´´ 查询当前正在连接的公网ip :return: ´´´ get_ip_url = ´http://www.3322.org/dyndns/getip´ try: req = HttpRequests(get_ip_url) if req.get_code() == 200: return req.get_text() except Exception: pass try: sock = socket.create_connection((´ns1.dnspod.net´,6666)) ip = sock.recv(16) sock.close() return ip except Exception: pass print ´Get Public IP failed, http code: %s, %s´ % (str(req.get_code()),req.get_text()) exit(1) if __name__ == ´__main__´: new_ip = get_public_ip() get_iam_token() zone_id = query_zone() if zone_id == None: zone_id = create_zone() recordset_url, old_ip = query_recordset(zone_id) if recordset_url == None: create_recordset(zone_id,new_ip) else: if old_ip != new_ip: modify_recordset(recordset_url,new_ip)[/code]
  • VPN服务器搭建(转载)
    1.测试坏境[indent]虚拟主机中安装的Centos 6.9 安装的软件pptpd [/indent]因为在公司环境做的实验,为了安全考虑只测试在两个网络段可以正常登录,没有测试互联网的登录.。如果这个环境可以,那么远程互联网登录,不过将另一个网段改成公网IP地址就可以了,但是要做好安全设置。 2.VPN原理VPN技术的本质是在本来能够正常连接的主机之间再建立一条虚拟通道,主要目的是为了交换不能直接在实际通道中传送的数据包,并且可以对数据进行加密处理。例如我们在内网有一台服务器可以访问内网,也设置了对外网的访问(当然是做好安全设置的),现在我们需要访问内网另一台服务器上面的业务。当然看到这里可能会出现这个很像代理服务器啊,那么代理服务器和VPN区别是什么呢? 代理服务器就是 你先通过访问代理服务器,在由代理服务器访问你需要访问的网站,服务器再返回内容给你,vpn 就是虚拟专用网,就是你访问的网站或者其他的什么服务器都要在这个虚拟专用网里,通过走一条虚拟的链路实现访问。 原理图 上图是一个总部和分部在不通地方但是我们要做VPN的示意图。在两个路由器的地方我们需要设置一些映射,使用OA和CRM上面做VPN,这样不管是在分部总部还是在其他地方都可以远程VPN登录,公司内网了。当然如果公司有钱可以做内网专线。但是相对于没有这个能力公司使用VPN是最经济的方法了。 原理图2 这个是远程VPN的示意图,192.168.1.1是内网的地址,210.45.160.4当然是公网的IP地址。现在我们在外地员工希望登录到公司内部办公网络。那么我们第一个要做的是什么呢?就是在公网IP地址的路由器上面设置如果VPN服务器PPTP的将端口tcp的47、1723 这两个端口做映射到192.168.1.1上,L2TP的 则需要映射udp1701端口到192.168.1.1上。那么这样我们的网络就设置好了。后面我们要在内网设置一台VPN服务器了,当然这个服务器必须要能访问到192.168.1.1上面。具体设置需要在VPN服务器配置文件中。 3.安装pptpd软件在安装pptpd之后需要先安装软件PPP。yum install -y ppp 当然还需要防火墙软件iptables 当然这个默认是已经安装的。 安装ppp 下面是我的安装但是没有成功的例子,我分别下载了pptpd-1.4.0.tar.gz 和pptpd-1.3.4.tar.gz但是我使用源码安装都没有成功。报错界面都在下面 下载源码 编译 编译 使用./configure --prefix=/home/pptpd --enable-bcrelay --with-libwrap感觉都正常,但是在使用make时候报错如下图,感觉像程序错误,无法编译。搞了好久都没有成功,使用命令也没有查询到安装软件。在使用源码安装时候一定要注意,可能会遇到各种错误,个人倾向于使用软件管理工具来安装,便于管理和解决依赖关系即可使用yum源也可以使用rpm包安装。 make报错 下面是我安装成功的例子: 因为使用原来的yum源没有pptpd的安装包。所以可以使用如下命令添加pptpd到yum源中。 rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm yum源 可以发现在/etc/yum.repos.d里面pptp.repo文件里面就是刚刚添加的pptp的yum源了。在安装 yum install pptpd -y就成功了。 安装成功 安装完成之后需要将路由转发功能开启,否则登录VPN之后只能在VPN服务器上面,而不能访问其他服务器。将/etc/sysctl.conf中的net.ipv4.ip_forward=1修改。然后使用/sbin/sysctl -p这个修改是永久的。如果临时修改可以使用echo “1”>/proc/sys/net/ipv4/ip_forword ip转发功能开启 测试启动发现正常启动了。你们是否可以使用了呢。不可以,因为我们的配置文件还没有按照需要进行修改,下面我们来看看配置文件。 正常启动 4.配置文件那么安装之后有那些重要文件呢 rpm -ql pptpd 和rpm -ql ppp 安装pptpd后文件 安装ppp之后的文件 重要的配置文件:/etc/pptpd.conf(主配置文件) /etc/ppp/options.pptpd和chap.secrets 主配置文件 主配置文件 以上是主配置文件信息/etc/pptpd.conf options.pptpd文件 options.pptpd文件 以上是配置文件/etc/ppp/options.pptpd。 chap.secrets 上面是chap.secrets中设置登录vpn服务器登录的用户名和密码,最后一个登录端IP地址,*表示任意地址。若指定IP地址是需要登录的客户端 以上我们就配置好了,下面就是测试可以正常使用吗? Service pptpd start 启动pptpd 但是使用windows系统VPN连接时候报错800.后来发现是因为我没有将vpn防火墙设置好的原因,因为我这个是测试我直接停止防火墙就可以正常登录。 windows windows windows windows 登录成功之后我们在vpn查看发现给我连接增加一个进程。 VPN服务器进程 6.关于内外网安全在我自己配置的vpn中没有考虑到内网安全的问题,可能会让很多朋友担心我外网路由器和内网路由器连接上来会不会导致我内网的信息泄漏呢。所以我们可以在内外网路由器之间加入防火墙,设置1723端口可以访问其他限制。也可以对端口数据量限制,使用隔离网闸等,看你对安全怎么设置了。如果是保密级别的单位是做的防护会更高,但是这些怎么都会存在一定的安全问题,不存在完全安全的系统,除非你真的是物理完全隔离。
  • IPsec_VPN实现技术
    本帖最后由 樱桃小丸子 于 2017-11-23 11:07 编辑摘要: GRE Tunnel GRE Tunnel(General Routing Encapsulation 通用路由封装)是一种非常简单的VPN(Virtual Private Network 虚拟专用网络),其基本思路是:VPN网关把发往对方的数据包在网络边界重新进行封装,然后通过Internet将数据包发送到目标站点的对等VPN网 关,这个过程也就是把一个私网的数据包封装在一个公网的数据包中;对方收到数据包后剥离报头,复原出原来的数据包,然后向其私网内的目标主机传递出数据 包;这样私网的数据包就穿过了公网,到达了另一个私网。GRE TunnelGRE Tunnel(General Routing Encapsulation 通用路由封装)是一种非常简单的VPN(Virtual Private Network 虚拟专用网络),其基本思路是:VPN网关把发往对方的数据包在网络边界重新进行封装,然后通过Internet将数据包发送到目标站点的对等VPN网 关,这个过程也就是把一个私网的数据包封装在一个公网的数据包中;对方收到数据包后剥离报头,复原出原来的数据包,然后向其私网内的目标主机传递出数据 包;这样私网的数据包就穿过了公网,到达了另一个私网。但是采用GRE Tunnel VPN技术的一个重要问题是数据包在Internet上传输是不安全的。实验配置IP地址及路由:R1(config)#ip route 0.0.0.0 0.0.0.0 s0/0 12.1.1.2 permanent R2(config)#ip route 34.1.1.0 255.255.255.0 s0/1 23.1.1.3R3(config)#ip route 12.1.1.0 255.255.255.0 s0/1 23.1.1.2R4(config)#ip route 0.0.0.0 0.0.0.0 s0/0 34.1.1.3 permanent配置GRE Tunnel:R1(config)#int tunnel 0 //创建Tunnel接口0,编号只有本地有效R1(config-if)#ip add 172.16.14.1 255.255.255.0 //配置隧道接口的地址,显然该地址是私网地址 R1(config-if)#tunnel source s0/0 //配置Tunnel的源接口 R1(config-if)#tunnel destination 34.1.1.4 //配置Tunnel的目的地址 R1(config-if)#tunnel mode gre ip //配置隧道为GRE模式,默认即为GRER4(config)#int tunnel 0R4(config-if)#ip add 172.16.14.4 255.255.255.0R4(config-if)#tunnel source s0/0 R4(config-if)#tunnel destination 12.1.1.1说明:①Tunnel的源接口:也可以使用“tunnel source 12.1.1.1”命令配置,路由器将以此接口的地址作为源地址重 新封装VPN数据包;②Tunnel的目地址:路由器将以此地址作为目的地址重新封装VPN数据包;③隧道创建后,可以把隧道看成一条专线。实验调试:R1#show int tunnel 0 //查看Tunnel 0接口的状态 配置路由协议:R1(config)#router rip R1(config-router)#version 2 R1(config-router)#no auto-summary R1(config-router)#network 172.16.0.0R4(config)#router rip R4(config-router)#version 2 R4(config-router)#no auto-summary R4(config-router)#network 172.16.0.0实验调试:R1#show ip routeR1#ping 172.16.4.1 source lo0 以上输出表明远程办公室已经学习到了企业总部内部网络的路由,下一跳为隧道另一端的地址。配置NAT:由于现在企业内部和远程办公室都无法与Internet通信,还需要配置NAT。R1(config)#access-list 10 permit 172.16.1.0 0.0.0.255 R1(config)#ip nat inside source list 10 int s0/0 overload R1(config)#int lo0 R1(config-if)#ip nat inside R1(config)#int s0/0 R1(config-if)#ip nat outsideR4(config)#access-list 10 permit 172.16.4.0 0.0.0.255 R4(config)#ip nat inside source list 10 int s0/0 overload R4(config)#int lo0 R4(config-if)#ip nat inside R4(config)#int s0/0 R4(config-if)#ip nat outside 实验调试:R1#ping 34.1.1.3 source lo0 //测试远程办公室和Internet的通信 R1#ping 172.16.4.1 source lo0 //再次测试远程办公室和公司总部的通信,一切正常 Site To Site VPN/LAN To LAN VPNSite To Site是指把一个局域网和另一个局域网连接在一起,本实验采用IPSec(Internet Protocol Security 网际网路协定安全规格)VPN解决这个问题。IPSec VPN是针对IP通信保护的协议簇,IPSec VPN的基础是数据机密性、数据完整性和身份验证。数据机密性:一个常见的安全性考虑是防止窃听者窃取数据。VPN利用封装和加密机制来实现机密性,常见的算 法有DES、3DES和AES。数据完整性:数据完整性确保数据在源主机和目的主机之间传送时不被篡改。VPN通常使用哈希来确保数据完整 性,常见的算法有MD5和SHA。身份验证:身份验证确保消息来自真实来源,并传送到真实目的地。VPN利用用户标识确信与其建立通信的一方 正是其所认为的那一方,常用的算法有预共享密码和数字证书。两种主要的IPSec协议框架:验证报头(AH):仅提供完整性和身份验证功能,在不要求或不允许有机密性时使用。AH在原有的数据包头部和 数据之间加入AH字段,该字段里包含IP头和数据的完整性校验值。因此AH能为两个系统间传送的IP数据包提供 数据验证和数据完整性检查。它验证消息在传送过程中是否未被篡改,还验证来源。AH不提供数据包的数据机 密性(加密)检查。AH协议在单独使用时提供的保护较脆弱,因此需要将其与ESP协议配合使用,来提供数据加 密和防篡改检测等安全功能。封装安全负载(ESP):通过对IP数据包加密隐藏数据及源主机和目的主机的身份提供机密性、完整性和身份验 证。ESP可验证内部IP数据包和ESP报头的身份,从而提供数据来源验证和数据完整性检查。ESP有两种模式:传 输模式和隧道模式。 传输模式:不产生新的IP包头,但是在原有的IP包头和数据字段之间加入ESP头部,并且在尾部加了ESP尾和完 整性校验值,该模式提供端到端的安全。 隧道模式:用新的IP包头对原有的数据包进行了重新封装,添加了ESP头、ESP尾及完整性校验值,该模式提供 路由器到路由器的安全,计算机到路由器的数据安全并不能保证,该模式对用户是透明的,因此使用较多。IPSec的工作方式:协商阶段:互联VPN之前要进行协商,VPN的协商可分为两个阶段: ①密钥协商阶段:设备获取了相应的密钥(为了保证传输过程中传输的安全性会使用非对称密钥); ②IPsec阶段:数据要进加密的数据交换(通过协商后产生的非对称密钥获得加密的先决条件)。 数据传输阶段:采用对称加密算法完成数据的安全传输,对等体双方使用的相应加密手段与校验手段。说明:对称加密算法安全性更高,第一阶段不使用对称加密算法的原因就是避免传输过程中被截获,而第二阶段 通过安全的密钥交换之后不怕被截获,即便被截获通过转换集复杂的加密算法被解密的可能性也是微乎其微。实验 配置IP地址及路由:R1(config)#ip route 0.0.0.0 0.0.0.0 s0/0 12.1.1.2 permanent R2(config)#ip route 34.1.1.0 255.255.255.0 s0/1 23.1.1.3R3(config)#ip route 12.1.1.0 255.255.255.0 s0/1 23.1.1.2R4(config)#ip route 0.0.0.0 0.0.0.0 s0/0 34.1.1.3 permanent配置Site To Site VPN: R1(config)#crypto isakmp policy 10 //创建一个ISAKMP策略,编号为10 R1(config-isakmp)#encryption aes //配置ISAKMP采用AES加密算法 R1(config-isakmp)#authentication pre-share //配置ISAKMP采用预共享密码身份认证算法 R1(config-isakmp)#hash sha //配置ISAKMP采用SHA HASH算法 R1(config-isakmp)#group 5 //配置ISAKMP采用DH group 5密钥交换算法R1(config-isakmp)#lifetime 86400 //为了安全起见设置生存时间,即多长时间重认证,默认即为86400R1(config)#crypto isakmp key cisco address 34.1.1.4 //配置对等体34.1.1.4的预共享密码为ciscoR1(config)#crypto ipsec transform-set TRAN esp-aes esp-sha-hmac //创建一个名为TRAN的IPSec交换集,交换集采用ESP封装,加密算法为AES,HASH算法为SHA R3(cfg-crypto-trans)#mode tunnel //设置ESP的模式,默认即为TunnelR1(config)#ip access-list extended VPN R1(config-ext-nacl)#permit ip 172.16.1.0 0.0.0.255 172.16.4.0 0.0.0.255 //定义一个ACL,只限定从远程办公室到企业总部的流量才通过VPN加密发送,其它流量(如到Internet)不加密 R1(config)#crypto map MAP 10 ipsec-isakmp //创建名为MAP,编号为10的加密图 R1(config-crypto-map)#set peer 34.1.1.4 //指明VPN对等体为路由器R4 R1(config-crypto-map)#set transform-set TRAN //指明采用前边已经定义的交换集 R1(config-crypto-map)#match address VPN //指明匹配名为VPN的ACL的定义的流量就是VPN流量 R1(config-crypto-map)#reverse-route static //指明要反向路由注入 R1(config)#int s0/0 R1(config-if)#crypto map MAP //把名为MAP的加密图应用在接口上R4(config)#crypto isakmp policy 10 R4(config-isakmp)#encryption aes R4(config-isakmp)#authentication pre-share R4(config-isakmp)#hash sha R4(config-isakmp)#group 5 R4(config)#crypto isakmp key cisco address 12.1.1.1 R4(config)#crypto ipsec transform-set TRAN esp-aes esp-sha-hmac R4(config)#ip access-list extended VPN R4(config-ext-nacl)#permit ip 172.16.4.0 0.0.0.255 172.16.1.0 0.0.0.255 R4(config)#crypto map MAP 10 ipsec-isakmp R4(config-crypto-map)#set peer 12.1.1.1 R4(config-crypto-map)#set transform-set TRAN R4(config-crypto-map)#match address VPN R4(config-crypto-map)#reverse-route static R4(config)#int s0/0 R4(config-if)#crypto map MAP说明:①创建ISAKMP(Internet Security And Key Management Protocol 因特网安全协议与密钥管理协议)策略时,可 以创建多个ISAKMP策略,但是双方路由器将采用编号最小、参数一致的策略,因此双方至少要有一个策略是一 致的,否则协商失败。②加密算法可以选择:DES、3DES和AES。③身份认证算法可以选择:预共享密码和(如果有CA服务器时也可以选择)CA(电子证书)进行身份认证。④HASH算法可以选择:SHA和MD5。⑤密钥交换算法可以选择:group 1、group 2和group 5。⑥配置预共享密码时,要确保双方配置的密码要一致,否则协商失败。⑦配置交换集时,交换集名称只在本地有效,并且要确保双方路由器有一个参数一致的交换集,否则协商失败。 1>交换集的封装方式:ESP、AH和ESP+AH; 1)ESP封装提供的功能:机密性、完整性和身份认证; 2)AH封装提供的功能:完整性和身份认证,实际上AH使用的较少。 2>交换集的加密算法:DES、3DES和AES; 3>交换集的HASH算法:SHA和MD5。⑧创建加密图时,名称和编号都只在本地有效,如果有多个编号,路由器将从小到大逐一匹配。⑨反向路由注入就是在VPN设备上会根据“match address VPN”命令生成静态路由,静态路由的条数和ACL条数 相对应,“static”参数指明即使VPN会话没有建立起来返向路由也要创建。实验调试:R1#show ip routeR1#ping 172.16.4.1 source lo0 以上输出表明路由器R1有172.16.4.0/24条路由了,下一跳为对方公网地址,并且能与对端局域网正常通信。R1#show crypto engine connections active //查看活动的VPN会话的基本情况 以上输出表明加密和解密是独立的会话,可以看到加密和解密了个5个数据包。R1#show crypto isakmp policy //显示系统中所有的ISAKMP策略情况 R1#show crypto ipsec transform-set //显示系统中所有的IPSec交换机情况 R1#show crypto map //显示系统中的加密图情况 R1#show crypto ipsec sa //显示IPSec会话的情况 NAT配置:由于现在远程办公室和企业内部都无法与Internet通信,还需要配置NAT。R1(config)#access-list 100 deny ip 172.16.1.0 0.0.0.255 172.16.4.0 0.0.0.255 //特别注意,要把远程办公室去往企业总部的IP数据包排除在进行NAT之外 R1(config)#access-list 100 permit ip 172.16.1.0 0.0.0.255 any R1(config)#ip nat inside source list 100 int s0/0 overload R1(config)#int lo0 R1(config-if)#ip nat inside R1(config)#int s0/0 R1(config-if)#ip nat outsideR4(config)#access-list 100 deny ip 172.16.4.0 0.0.0.255 172.16.1.0 0.0.0.255 R4(config)#access-list 100 permit ip 172.16.4.0 0.0.0.255 any R4(config)#ip nat inside source list 100 int s0/0 overload R4(config)#int lo0 R4(config-if)#ip nat inside R4(config)#int s0/0 R4(config-if)#ip nat outside实验调试:R1#ping 34.1.1.3 source lo0 //测试远程办公室和Internet的通信 R1#ping 172.16.4.1 source lo0 //再次测试远程办公室和公司总部的通信,一切正常
  • 【干货分享】华为云怎么配置DNAT映射--权威指导
    本帖最后由 Mercy 于 2017-11-27 10:33 编辑初始状态 Nat Server绑定了EIP,Nat Client只有私有IP,如果要访问Nat Client的服务端口就需要做一个DNAT服务 NAT Server 私有IP: 10.208.200.241 EIP: 114.115.215.250 属于安全组A Nat Client 私有IP: 10.208.200.243:26891(26891是服务端口) 属于安全组B 配置过程 1、在NAT Server操作系统中起个DNAT服务 登录Nat Server操作系统: iptables -t nat -A PREROUTING -d 10.208.200.241 -p tcp -m tcp --dport 26891 -j DNAT --to-destination 10.208.200.243:26891 iptables -t nat -A POSTROUTING -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward 允许转发 2、Nat Server所在的安全组A放通端口访问,比如26891端口 登录华为云网络控制台,进入安全组A,添加端口访问规则,允许26891端口被访问 3、允许安全组A访问安全组B 登录华为云网络控制台,进入安全组B,添加组间规则,允许安全组A访问
  • 【干货分享】华为云怎么配置SNAT服务--最权威的指导
    本帖最后由 Mercy 于 2017-11-30 09:53 编辑细节见下面这个帖子: http://forum.huaweicloud.com/forum.php?mod=viewthread&tid=1518 主要思路是这样的: 1、登录Nat Server(已经绑定弹性IP)操作系统,用iptables命令起SNAT服务,并配置ipv4内核参数允许报文转发 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 起个SNAT服务 echo 1 > /proc/sys/net/ipv4/ip_forward # ipv4报文允许转发2、登录华为云服务器控制台,进入云服务器详情页面,在“网卡”页签放开Nat Server网卡IPMAC绑定(为了网络安全,默认是校验IP、MAC是否匹配) 3、登录华为云网络控制台,配置虚拟私有云的路由表,让此VPC内的虚拟机下一跳为Nat Server节点的私有IP 4、如果Nat Server与Nat Client不在同一安全组,那么还需要放开client与server端的安全组规则
  • [云解析] BGP+IP Anycast在DNS领域的应用实践
    IP Anycast+BGP方式是DNS领域常用的多点部署架构和技术方案,采用这种方式不需要额外采购如F5等负载均衡设备,部署灵活可扩展。本文就简单介绍一下IPAnycast+BGP技术在DNS领域的最佳实践。 Anycast技术原理Anycast即IP地址任播技术。根据RFC1546定义,它建议从IP地址空间分配出一块独立的地址空间作为任播地址,一般为一个C段地址。从IP网络上来看,任播技术通过一个Anycast地址标识一组提供特定服务的集群,如DNS解析服务。同时,服务访问方并不关心提供服务的具体是哪一台主机,访问该地址的请求报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务。 Anycast技术优势全局负载均衡。不同客户端将访问不同目的主机,此过程对客户端透明,从而实现了目的主机的负载均衡。提升解析效率。Anycast利用路由度量到“最近”的目的主机,提高了客户端响应速度。服务冗余高可用。当任意目的主机接入的网络出现故障时,导致该目的主机路由不可达,客户端请求可以在无人为干预的情况下自动被路由到其他可达的最近目的主机,在一定程度上确保了服务的高可用。 Anycast最佳应用实践Anycast实质上是一种网络技术,它借助于网络中动态路由协议实现服务的负载均衡和冗余。实际应用时,IPAnycast+BGP的部署必须使用能够运行BGP的设备与其他自治域进行路由交换,通常使用的设备是路由器或三层交换机。然后将目标主机直接接入路由器或通过负载均衡设备将多台主机接入路由器,路由器向上联自治域广播目标主机共享的单播地址。路由器可以从上联自治域接收全路由表,也可以将默认路由的下一跳指向上联自治域的路由器接口。目前,IPAnycast+BGP在DNS系统部署中得到了广泛应用,如华为云公网DNS、谷歌Public DNS等。此外,由于实际各公司拥有的IP地址段数量有多有少,在采用IPanycast任播时有的会使用专门的C段地址,而有的只能使用\32地址。
  • 【技术分享】如果使用ELB实现DNAT功能
    使用ELB实现DNAT效果的操作指导:1,创建一个外网ELB实例,会同时购买好EIP和带宽2,创建一个listener,把端口填好,即前端端口和后端ECS的端口,这个端口就是DNAT的转换规则了。目前默认每个ELB实例最大只允许创建5个listener。但是可以通过工单的方式,把这个配额调到最大255个。这意味着一个ELB实例最大只能配置(“模拟”)出255个DNAT规则。2.1 在添加监听器的界面,负载均衡七协议/端口是前端EIP的端口,云服务器协议/端口设置后端端ECS端口3,在listener后面添加一台ECS主机,如下图二所示。最终就形成了”EIP:前端端口” -> “ECS IP:后端端口”的转换。
  • 【技术分享】创建snat代理服务器
    一些弹性云服务器不仅需要使用系统提供的服务,还需要访问外网以获取信息或下载软件。允许用户将弹性IP绑定到弹性云服务器的虚拟网卡(端口),从而使弹性云服务器能够与外网通信。但是,给弹性云服务器分配公网IP需要消耗稀缺资源(如IPv4地址),增加额外的成本,并有可能增加虚拟环境遭受攻击的几率。因此,多个弹性云服务器共享同一公网IP是一种可行的方法,具体实施方法为源地址转换(SNAT)。公有云支持SNAT实例模型。为一个弹性云服务器配置公网IP,该弹性云服务器作为来自同一子网或VPC的若干弹性云服务器的SNAT路由器/网关。SNAT实例配置参见配置SNAT服务器。
  • snat实例的配置教程在哪里?版主回复啊。
    如题
  • 华为云NAT网关什么时候上啊?
    如题,现在没有的话,有没有什么替代方案。
  • [技术干货] 【Agent原理系列】Agent日志管理
    本帖最后由 梅子 于 2017-11-2 11:54 编辑Agent日志管理是指Agent记录网关与设备、平台交互时,相关业务命令下发及数据上报时的相应信息。 网关与设备以及平台交互的日志保存在网关中。当SP Portal下发收集日志命令时,网关收到命令,收集日志,上传日志到平台上。然后用户再从平台上下载日志。 当网关或者设备出现问题时,用户可以根据日志快速定位问题。
  • [技术干货] 【智慧家庭解决方案系列】一张图让你看明白绑定网关和添加设备流程
    本帖最后由 白熊 于 2017-11-2 18:45 编辑给大家讲解智慧家庭解决方案中的绑定网关和添加设备流程,请大家搬好板凳。
  • 【使用指导】不同租户VPC间建立对等连接打通小网
    1.准备好租户信息,并规划好网段(不要重复)比如192.168.255.0/24192.168.0.0/202.以租户1登录,记录下VPC ID信息VPC ID: 记住3.以租户2登录,申请对等VPC左边导航 对等连接,申请对等连接:4. 以租户1登录,接受对等VPC申请,并配置本端路由进入对等VPC,配置路由把对端网段添加到本端路由。5.以租户2登录,对等VPC下配置本端路由6.VPC对等连接建立,两个网络可以通信了。注意主机ping命令需要在安全组里放开ICMP报文访问。