Hashicorp Vault提供了一个简单的X.509证书API,可以自动化签发证书。本文简述配置证书API、创建中级CA以及和Active Directory Certificate Services的交互过程。
前提条件:
- 基于AD CS的离线root CA
- Vault服务器
Hashicorp Vault提供了一个简单的X.509证书API,可以自动化签发证书。本文简述配置证书API、创建中级CA以及和Active Directory Certificate Services的交互过程。
前提条件:
2020-06更新:现在在不同路由表之间本地导入导出不一定需要启动MPBGP。在VRF里面设置route-replication也可以达到相同的效果。
首先要配置BGP(但是可以没有Peer)。要确保待导入的表在BGP的RIB里面;如果不在的话需要redistribute到BGP进程里。然后用route-map导入。示例:
1 2 3 4 5 6 7 8 9 10 11 12 |
! 除默认路由外 ip prefix-list NO_DEFAULT_ROUTE seq 5 deny 0.0.0.0/0 ip prefix-list NO_DEFAULT_ROUTE seq 10 permit 0.0.0.0/0 le 32 route-map GLOBAL_TO_PROXY_VRF permit 10 match ip address prefix-list NO_DEFAULT_ROUTE ip vrf PROXY rd 100:100 import ipv4 unicast 65535 map GLOBAL_TO_PROXY_VRF route-target export 100:100 route-target import 100:100 |
配置里的65535是导入数量上限,默认只有不到1000条,完全不够用。配置完成以后可能需要等几分钟才能看到效果,因为VRF之间路由泄露完全靠BGP进程来实现,BGP进程刷新还是挺慢的。
注意这样导入以后,如果路由上没有next hop interface信息,那么这条路由是无效的。所以要么手工设置一下recursive路由到interface上:
1 2 |
ip route vrf PROXY 192.0.2.100 255.255.255.255 Dialer1 10 ip route vrf PROXY 192.0.2.200 255.255.255.255 Dialer0 10 |
要么把connected路由也redistribute进VRF。(注意如果你有BGP peer尤其是隧道里面的peer的话,要记得filter掉这些路由。)
现在越来越多中小企业开始抛弃传统的Access VPN方案,转而向员工提供应用层代理服务器来访问内部资源。四层代理服务器方案具有部署简单、维护成本低、对BYOD设备侵入性低等特点,在不需要过多访问控制和日志记录能力,缺乏专业IT人员的情况下是一个不错的内网访问方案。但是这种方案有一个显而易见的缺点:应用层代理服务器需要应用支持。对于不支持设置代理服务器的应用,它就无能为力。另外,有些场合,比如给设备安装系统时,你并不总能找到代理服务器设置的位置。这就给应用层代理服务器的推广带来了很大麻烦。
为了克服这个缺点,我们有一个办法:在局域网设置一个透明代理网关。透明代理网关是一种应用层单臂路由,它对局域网设备来说是一个路由器,但是其特定应用层协议的上联链路是一个代理服务器。如果代理服务器支持,使用Linux内核iptables模块中的REDIRECT或TPROXY功能可以很容易地配置这样一个透明代理网关。但是一旦我们把整个局域网的默认网关配置成透明代理网关,整个局域网的流量都会经过公司的内部网络,这不一定是我们想要的结果,也不便做访问控制。另外,如果把代理网关和用户设备放在同一个二层中,用户只需要改一下设备自己的网络配置就可以使用该代理服务器,这可能导致严重的安全问题。因此,我们需要一种方法来动态地控制某台设备的默认网关是本站点的互联网出口,还是公司的代理服务器出口。
而BGP协议,正是能实现这一功能的成本最低的方案。
本系列文章的第一篇只讲了配置的技术要点,没有讲规则具体怎么写。本文大概讲一下我现在所使用的规则。
规则:
目前这样的规则会带来一万五千条左右路由。IOS XE的资源占用情况:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
Router#show ip route summary Route Source Networks Subnets Replicates Overhead Memory (bytes) connected 0 14 0 1424 4256 static 1 4 0 480 1520 bgp 65534 5179 15044 0 1941408 6147792 External: 0 Internal: 20223 Local: 0 Router#show ip bgp summ BGP router identifier 192.168.1.1, local AS number 65001 BGP table version is 10538219, main routing table version 10538219 13183 network entries using 3269384 bytes of memory 18727 path entries using 2546872 bytes of memory 525/281 BGP path/bestpath attribute entries using 147000 bytes of memory 2 BGP rrinfo entries using 80 bytes of memory 375 BGP AS-PATH entries using 25840 bytes of memory 2 BGP community entries using 48 bytes of memory 1 BGP extended community entries using 24 bytes of memory 517 BGP route-map cache entries using 33088 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 6022336 total bytes of memory BGP activity 804938/764611 prefixes, 13180009/13137706 paths, scan interval 60 secs Router#show platform resources **State Acronym: H - Healthy, W - Warning, C - Critical Resource Usage Max Warning Critical State ---------------------------------------------------------------------------------------------------- RP0 (ok, active) H Control Processor 28.74% 100% 80% 90% H DRAM 2687MB(78%) 3421MB 88% 93% H ESP0(ok, active) H QFP H DRAM 101005KB(51%) 196608KB 80% 90% H IRAM 414KB(20%) 2048KB 80% 90% H CPU Utilization 12.00% 100% 90% 95% H |
BGP Controller的资源占用情况:
1 2 3 4 |
root@li-bgpctrl2:~# free -wh total used free shared buffers cache available Mem: 878Mi 682Mi 61Mi 1.0Mi 10Mi 123Mi 60Mi Swap: 1.0Gi 3.0Mi 1.0Gi |
拉了两条不同运营商的宽带,想要有效利用两条线路的带宽,但是这时候单纯的负载均衡体验并不好,因为随机分配的出口并不一定速度最快。BGP全球路由表里正好有我们需要的信息——每个IP到哪个运营商距离最近(某种意义来说,速度也应当最快)。那么怎么利用它来优化网络的体验呢?