Chinaunix首页 | 论坛 | 博客
  • 博客访问: 585156
  • 博文数量: 56
  • 博客积分: 5062
  • 博客等级: 大校
  • 技术积分: 773
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-13 06:00
文章分类

全部博文(56)

文章存档

2016年(8)

2012年(1)

2010年(9)

2009年(3)

2008年(35)

分类: 系统运维

2016-11-08 17:34:14

我的网络拓扑如下,实现了PPPoE双拨双出口:



为了实现国内外网络分流,在vSRX上导入了近8000条国内路由网段的静态路由,然后缺省路由0.0.0.0/0走IPSec VPN的出口st0.0。

lab@vSRX# run show route protocol static 
inet.0: 7652 destinations, 7652 routes (7652 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0          *[Static/5] 00:06:36
                    > to 10.0.65.2 via st0.0
1.0.1.0/24         *[Static/5] 4d 05:23:01
                    > via pp0.0
1.0.2.0/23         *[Static/5] 4d 05:23:01
                    > via pp0.0
1.0.8.0/21         *[Static/5] 4d 05:23:01
                    > via pp0.0
1.0.32.0/19        *[Static/5] 4d 05:23:01
                    > via pp0.0

由于这条缺省路由只有在IPSec VPN建起来之后才会生效,所以群晖DSM的ddns数据包在这种情况下,没有路由,导致DDNS失败。
在群晖上开启ssh,用root登陆(密码和admin一样),tcpdump抓包看,应该是到服务器的路由不通。
但是此时quickconnect一切正常,这可能是因为quickconnect使用了网内网段,所以有路由出口。

解决方案是为0.0.0.0/0添加一个nexthop指向pp0.0即可:

lab@vSRX# show routing-options static route 0/0 
next-hop 10.0.65.2;
qualified-next-hop pp0.0 {
    metric 100;
}

[edit]
lab@vSRX# run show route 0/0 exact                 
inet.0: 7646 destinations, 7647 routes (7646 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0          *[Static/5] 00:03:40
                    > to 10.0.65.2 via st0.0
                    [Static/5] 00:06:06, metric 100
                    > via pp0.0

这样在IPSec不可用时,仍能走pp0.0出去。

这样改动之后,发现IPSec VPN没有拨号的情况下,DDNS一切正常;
而IPSec VPN拨号的情况下,DDNS的IP地址有时候会解析为IPSec VPN对端出口的公网IP。
这是因为IPSec VPN拨号后,0.0.0.0/0的nexthop优选st0.0,导致DDNS更新数据包有时会走st0.0出去,导致解析错误。
解决方案是,DDNS解析的时候,
在DSM上tcpdump抓包,分析目的IP地址,然后把这些与DDNS相关的目的网段都添加为静态路由,nexthop设置为pp0.0

抓包命令为:DSM-IPSec> tcpdump -i eth0 -s 0 -n src host 172.16.10.22 -w ddos01.pcap (172.16.10.22就是DSM的内网IP

经过抓包分析,群晖DSM的DDNS过程会用到下面的几个/24网段,添加相应的静态路由后,解析IP就总是pp0.0的公网IP地址了。

lab@vSRX# show | compare rollback 2    
[edit routing-options static]
     route 0.0.0.0/0 { ... }
+    route 60.251.87.0/24 next-hop pp0.0;
+    route 54.64.187.0/24 next-hop pp0.0;
+    route 54.148.98.0/24 next-hop pp0.0;
+    route 54.64.93.0/24 next-hop pp0.0;
+    route 54.69.83.0/24 next-hop pp0.0;
+    route 54.93.172.0/24 next-hop pp0.0;

lab@vSRX# run show interfaces terse pp0 
Interface               Admin Link Proto    Local                 Remote
pp0                     up    up  
pp0.0                   up    up   inet     111.194.xxx.xxx     --> 111.194.xxx.1

作者:张蒙
QQ:407960134
电子邮箱:qdzhangmeng@163.com
博客地址:zmouc.blog.chinaunix.net
建立日期:2016年11月8日
阅读(2341) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~