分类目录归档:Networking

在家也要玩BGP(2):可控地给部分局域网设备设置透明代理网关

现在越来越多中小企业开始抛弃传统的Access VPN方案,转而向员工提供应用层代理服务器来访问内部资源。四层代理服务器方案具有部署简单、维护成本低、对BYOD设备侵入性低等特点,在不需要过多访问控制和日志记录能力,缺乏专业IT人员的情况下是一个不错的内网访问方案。但是这种方案有一个显而易见的缺点:应用层代理服务器需要应用支持。对于不支持设置代理服务器的应用,它就无能为力。另外,有些场合,比如给设备安装系统时,你并不总能找到代理服务器设置的位置。这就给应用层代理服务器的推广带来了很大麻烦。

为了克服这个缺点,我们有一个办法:在局域网设置一个透明代理网关。透明代理网关是一种应用层单臂路由,它对局域网设备来说是一个路由器,但是其特定应用层协议的上联链路是一个代理服务器。如果代理服务器支持,使用Linux内核iptables模块中的REDIRECT或TPROXY功能可以很容易地配置这样一个透明代理网关。但是一旦我们把整个局域网的默认网关配置成透明代理网关,整个局域网的流量都会经过公司的内部网络,这不一定是我们想要的结果,也不便做访问控制。另外,如果把代理网关和用户设备放在同一个二层中,用户只需要改一下设备自己的网络配置就可以使用该代理服务器,这可能导致严重的安全问题。因此,我们需要一种方法来动态地控制某台设备的默认网关是本站点的互联网出口,还是公司的代理服务器出口。

而BGP协议,正是能实现这一功能的成本最低的方案。

继续阅读

在家也要玩BGP(1.5):我的双线分流规则

本系列文章的第一篇只讲了配置的技术要点,没有讲规则具体怎么写。本文大概讲一下我现在所使用的规则。

规则:

  • 电信自己的ASN走电信
  • 移动自己的ASN走移动
  • 其它国内流量走电信
  • 出国(默认)流量走移动

目前这样的规则会带来一万五千条左右路由。IOS XE的资源占用情况:

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的资源占用情况:

[email protected]:~# 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

继续阅读

关于Aironet 3600系列AP和AIR-RM3000AC-x-K9扩展模块的一些笔记

Autonomous AP(胖AP)模式

第三个interface是会显示出来的,但是不会工作。不用尝试了。

瘦AP模式

第三个interface会使用和机内的802.11n 5GHz interface相同的MAC地址,并且保持相同的工作状态。即你不能禁用一个的同时启用另一个。WLC上不会让你设置802.11ac interface的启用/禁用,以另一个interface的状态为准。

如果想要override第三个interface的频宽、信道或功率,需要先把802.11n 5GHz interface的相应选项设为custom,然后802.11ac interface的值才能修改。

至于设备最终会握手到哪个interface上,这就纯看人品了。一般来说802.11ac的信号强度要比802.11n差一些。

第三个interface不支持CleanAir扫描。

向ASA导入证书

准备一个私钥(.pem)和对应的证书(.crt)文件。注意证书里面只能有私钥对应的那个证书,不应该有证书链。需要证书链的话单独放一个文件里面。

先用OpenSSL把它转成PKCS#12格式。

openssl pkcs12 -export -out asa.example.com.pfx -inkey asa.example.com.pem -in asa.example.com.crt -ca-file cert-chain.crt

输入任意密码两次。如果是用ASDM导入证书的话,就可以直接选中生成的pfx文件导入了。如果要从命令行导入的话继续往下看。

然后Base64一下:

openssl base64 -in asa.example.com.pfx -out asa.example.com.pfx.base64

导入ASA:

Type help or '?' for a list of available commands.
asa> enable
Password: 
asa# configure terminal
asa(config)# crypto ca import 证书名 pkcs12 密码
Enter the base 64 encoded pkcs12.
End with the word "quit" on a line by itself:
<粘贴 base64 过的文件>
quit
INFO: Import PKCS12 operation completed successfully

换上新的证书:

asa(config)# ssl trust-point newcert inside 
asa(config)# ssl trust-point newcert outside
asa(config)# no crypto ikev2 remote-access trustpoint oldcert
asa(config)# crypto ikev2 remote-access trustpoint newcert

删掉原来的证书:

asa(config)# no crypto ca trustpoint oldcert