2017年9月28日 星期四

MPLS VPN (MP-BGP)客戶收到routing時的優先順序


 BPG選路徑有它的演算法,https://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/13753-25.html
或者參考這一篇:
https://supportforums.cisco.com/t5/network-infrastructure-documents/understanding-bgp-best-path-selection-manipulation/ta-p/3150576

我們遇到有趣的問題,就是如果一個客戶在IMPORT不同的route target時,都有一樣的網段,那要怎麼選?試了一下,是第10個規則,routing age。

When both paths are external, prefer the path that was received first (the oldest one).
但是這邊寫說是選最舊的 (因為它最穩定),但實做起來確實是選擇最新的,也許IOS版本也有差異吧。

簡單驗證一下,在clear ip route vrf F9412016 * 之前,best path是 從F9999999 import進來的。
 

接著clear ip route vrf F9412016 *,之後best path就變成了往F9412016送。

測出來的結果竟然與思科官網相反...是最新的才是best。
我不能接受,所以又做了下面這個lab (本來的架構沒有辦法調整route age)
R1跟R2建mpbpg,然後r2與r3,r2與r5,r2與r4都跑rip。然後r2有三個vrf,收到三筆default route。
結果測試的結果還是一樣。只要我清哪一個vrf的routing,等他收斂之後,R1就會把它視為best path。

無解,先做個記錄也許過幾年再看看吧。

2017年9月26日 星期二

FreeBSD IPF 針對Remote shell (RSH) 的規則設定

這個問題研究了兩天,稍微有點心得。記錄一下。

Remote shell是很有趣的協定,在IPF的開法跟一般的協定不同。
Remote shell會有兩個流程。第一段是三向交握的階段 ,第二段才是正確的身份驗證和下達指令的部份。

 在我測試的架構中,10.100.33.15是rsh的client,而10.100.33.16是rsh的server。

其實ipf這樣開就好了:
pass in quick proto tcp from 10.100.33.15 to 10.100.33.16 port = 514 flags S keep state
pass in log quick proto tcp from 10.100.33.15 port 511 >< 1024 to 10.100.33.16 port 511 >< 1024 flags AS keep state

下面是驗證的結果:你可以看到10.100.33.15會使用512至1023的port去跟server發起連線 (目的port似乎也是512~1023 port)。但這個session並不包含在一開始發起rsh的session中,因此要另起規則放行。(視為不同的session來處理)
27/09/2017 22:02:37.002734 fxp0 @0:4 p 10.100.33.15,772 -> 10.100.33.16,997 PR tcp len 20 64 -AS K-S IN
27/09/2017 22:02:37.002756 fxp0 @0:4 p 10.100.33.16,997 -> 10.100.33.15,772 PR tcp len 20 52 -A K-S OUT
27/09/2017 22:02:37.116048 fxp0 @0:4 p 10.100.33.15,772 -> 10.100.33.16,997 PR tcp len 20 52 -A K-S IN
27/09/2017 22:02:37.116529 fxp0 @0:4 p 10.100.33.15,772 -> 10.100.33.16,997 PR tcp len 20 52 -AF K-S IN
27/09/2017 22:02:37.116538 fxp0 @0:4 p 10.100.33.16,997 -> 10.100.33.15,772 PR tcp len 20 52 -A K-S OUT

但Remote shell很有趣,因為第二個階段用的TCP flag並不是S,所以ipf如果要放行的時候,用預設的S是不會通的。要用的是AS (我用紅包強調)。或者你也可以不做TCP flag的檢查,只保留keep state就好了。

至於為何客戶的規則只開flags S還能通呢,因為他們最後有補一個flags A/A的規則
pass in quick proto tcp from 10.100.33.15 to 10.100.33.16 port = 514 flags S keep state
pass in log quick proto tcp from 10.100.33.15 port 511 >< 1024 to 10.100.33.16 port 511 >< 1024 flags S keep state
pass in log quick proto tcp from any to any flags A/A

至於其它沒有設定 pass in log quick proto tcp from any to any flags A/A
的設備是怎麼通過的呢?

原因是他們有設定另一條policy:
pass out quick proto tcp from 10.100.33.16 to any flags S keep state
這個作法就是把10.100.33.16發起的session視為獨立的另一條session
所以你去錄封包,會看到它長這樣:
29/09/2017 18:27:33.369510 fxp0 @0:1 p 10.100.33.16,967 -> 10.100.33.15,721 PR tcp len 20 64 -S K-S OUT
29/09/2017 18:27:33.369676 fxp0 @0:1 p 10.100.33.15,721 -> 10.100.33.16,967 PR tcp len 20 64 -AS K-S IN
29/09/2017 18:27:33.369695 fxp0 @0:1 p 10.100.33.16,967 -> 10.100.33.15,721 PR tcp len 20 52 -A K-S OUT
29/09/2017 18:27:33.482540 fxp0 @0:1 p 10.100.33.16,967 -> 10.100.33.15,721 PR tcp len 20 52 -AF K-S OUT
29/09/2017 18:27:33.482817 fxp0 @0:1 p 10.100.33.15,721 -> 10.100.33.16,967 PR tcp len 20 52 -A K-S IN
29/09/2017 18:27:33.483126 fxp0 @0:1 p 10.100.33.15,721 -> 10.100.33.16,967 PR tcp len 20 52 -AF K-S IN
29/09/2017 18:27:33.483133 fxp0 @0:1 p 10.100.33.16,967 -> 10.100.33.15,721 PR tcp len 20 52 -A K-S OUT

第一條符合TCP-SYN,所以後面就都過了。

這兩者好像有點衝突對吧?究竟第二條session中,是client先發起還是server先發起?為何兩種開法都會通?

我們再回頭看一下完整的封包:

第八條是client發起的A,就是一開始講的any to any flags A/A,所以它會通 (並不是一開始的那一條any to 514喔,那一條是S)
第九條是server發起的S,就是剛剛講的的10.100.33.16 to any flags S keep state,所以它也會通。
至於為何同一客戶的兩台機器有不同的開法,推想是兩台設備是不同時期或不同人維護的,所以解決問題的辦法有所不同。


2017年9月10日 星期日

xargs的取代字串功能

最近發現xargs有一個很好用的取代功能。

ls | grep firewall.backup | tail -1 | xargs -iz scp z root@firewallbk:./firewall/

這是一個簡單的程式,取出最新的檔案,然後把它用scp複製到遠端。
重點是xargs:-i指的是replace後面的字串,z是指取代後的名稱。

簡單來說,就是把前面ls取出的檔名取代為z (算是一個代號吧),後面的scp z做的其實是
scp 該檔名


2017年8月28日 星期一

VTUR Zyxel P874 從遠端無法PING到的解決方法

針對VTUR Zyxel P874 從遠端無法PING到的問題,剛好又遇到同事報修就順便再整個把流程跑一次:

1、由於P874還是有版本的差異,因此這個說明是針對20140730版的。
2、如何RESET機器:之前的機器印象中都是壓住reset 5至10秒,等power燈閃爍就可以reset,但我遇到的這一台竟然是要壓住reset再送電...不曉得是個案還是版本差異還是我記錯。

3、在WAN介面設定固定IP (請參考小弟的其它介紹 http://tiserle.blogspot.tw/2017/08/vtur-zyxel-p874-wanip.html ),如果在DNS部份若不填入則會有以下的錯誤訊息:(我猜想是因為我之前都有輸入,所以其實一直都需要輸入,只是我沒有注意到)
這個問題真的很鳥,但遇到了就是要解決,請隨意填入IP即可 (建議還是依各大ISP來輸入,但記得兩組都要輸入,不能只輸入一組喔。


4、設定Security:設定完WAN IP之後,我是建議把security的level改為low,不管你點Security或點Security General Firewall都是連到一樣的地方。




5、在BRAS上測試能否PING到VTUR的WAN IP,理論上是不行的,因此要重開機讓設定生效。重開之後確認BRAS端可以PING到WAN IP就可以重新設定LAN IP。但重開之後某公司的網管還是PING不到這一款VTUR,因此我們要再回頭找ACL (access control limit)的相關設定:
在這個版本,他被移到了Access Control裡面的IP Address,不過預設就是Disable。

6、20200323補充說明,我補上Service的ACL設定供參考,這個圖是從P880抓下來的,理論上相差不多。設定時先點選Management,再點選Access Control或者點選Access Control裡面的Service,我們需要的是開放WAN ICMP,因此我們點選Enable,再點選Save/Apply.


7、新增靜態路由:真的沒有辦法,只好手動加入靜態路由試試。在靜態路由表中新增某公司的監控網段:
這個圖是後來抓的,但在測試時我只有選擇Interface並輸入172.32.96.33的對口IP,但我並沒有打勾User Gateway IP Address這個選項,但重開機後 (我設定完LAN IP後有重開),竟然自己打勾了。不過一般來說就是要打勾的,我原先只是刻意作測試。之後遠端監控也就正常了,為了避免客戶斷太久,也不好意思再作其它的測試了

結語:老實說這台設備怪怪的,裡面的設定也一堆沒有清乾淨的。建議也可以用VTUR本身的功能將設定清除再來做其它的設定。


2017年8月7日 星期一

中華電信 VTUR Zyxel P874 WAN設定為固定IP設定方式

我們這一次要示範如何在Zyxel P874上面設定固定IP:

一、選擇Advanced Setup 再選擇 WAN,接著點選Add,新增一組設定。











二、接著要選擇Layer 2的模式,也沒有什麼可以選的,選擇Next前進下一步。


三、接著是關鍵,要選擇WAN的連線模式,請從預設的PPPoE,改為IPoE,接著點選Next。


四、接著就可以填入固定IP的相關設定了,基本上這些資訊ISP公司應該老早就提供給您了。設定完成後點選Next。


五、接著確認一下設定值,Enable NAT預設就有打勾,請維持。Firewall的部份就自行決定吧,預設是沒有打勾的。其餘就保持預設值即可,接著點選Next。

 六、最後要確定Default Gateway為何,由於我只有一個設定值,就維持即可。若有其它的設定 (例如 PPPoE),請自行更正,其名稱應與第五步驟一致,在此例為ipoe_0_0_1_3。接著點選Next。


 七、最後會把所有設定值都列出來給你看,若確定都正常就可以點選儲存。

八、最後還是要重開一下VTUR,讓新的設定生效。我們點選Save/Reboot。

2017年8月2日 星期三

rrdtool fetch max 與 繪圖不符...

root@solaris:/var/www/OM/rrd# rrdtool fetch 139.175.240.142_port_ethernet_14_2.rrd MAX -r 86400 -s -18h -e -14h
                     traffic_in         traffic_out

1501718400: 2.0671411616e+07 8.4111154469e+07

算出來大概是642Mbps,但繪圖出來卻是550Mbps...



用fetch average來讀值再排序,最大的也還是8.4111154469e+07,
root@solaris:/var/www/OM/rrd# rrdtool fetch 139.175.240.142_port_ethernet_14_2.rrd AVERAGE  -r 300 -s -25h -e -13h | awk '{print $3}' | sort | tail -n 1
8.4111154469e+07

看來真的要好好study一下了。

接著我們再同意的時間取值,取出前一天20:00~23:59的值,
rrdtool fetch 139.175.240.142_port_ethernet_14_2.rrd AVERAGE  -r 300 -s $start =e $end  | awk '{print $3}' | sort | tail -n 3
6.8785461058e+07
9.9885483539e+06

確實最大值的確是550Mbps。

我們接著再畫一張全日的圖:


發現的確瞬間有爆表,所以我們回頭查RRD檔的上限值是多少

root@solaris:/var/www/OM/rrd# rrdtool dump 139.175.240.142_port_ethernet_14_2.rrd | grep max
                1.0000000000e+10
                1.0000000000e+10

看起來還沒有爆表...,從ifspeed來看的話,其速度為1000000000 (1.00e+9)
IF-MIB::ifSpeed.1 = Gauge32: 1000000000

但我也還不能確定原因,說不定是設備吐出來的值就有問題。
先把max改為1.00e+9試試吧。

作了很多測試,我只記錄最後找到的問題點。
一開始的設計,在update  rrd檔時,用的是程式開始時的timestamp,但其實BRAS有時回應時間會很長,假設多拖了30秒才回資料,但計算時是用300秒來算,因此其實資料量已經不是300秒的資料了。等於說用300秒來算330秒的資料,這樣當然是不準確。因此我最後改為N,用update rrd檔時的時間來做為計算的依據。目前看起來正常,再觀察幾天吧。



2017年7月23日 星期日

扶老攜幼親子遊 - 日本京都篇 - 其二 - 金閤寺、天滿宮、京都御苑(所)、鴨川 (20170723)

今天的行程比較多,不過在京都旅行的好處是幾乎所有的點都能坐公車到,而且票價不貴,一張一日券才¥500。但由於我們這一次住的是民宿,民宿主表示他會每天載我們到第一個點(或者是鄰近的車站),於是我們8:30就到了金閤寺,但金閤寺是09:00才開營業的,所以我們就先在附近走一下順便拍拍照。

原先一直在考慮要不要安排這個點,感覺景不多,而且沒有特別值得一看的東西。但因為很多人說沒有來過金閤寺好像沒有來過京都,於是只好再把這個點塞回來。

其實金閤寺我覺得最有越的是他的門票,是做成御守的樣子,這樣之後還有保存的價值 (雖然我回台灣後也是就默默的把它收起來)


當然,它最出名的就是這張照片了,不過老實說,金閤寺真的不大。大概1個小時就走的完 (可能是因為我們也看不懂它的說明,就走馬看花,拍拍照當紀念) 

其實這個金閤寺角度也不錯,但比較沒有景。



其實我覺得這個陸上行舟比較有意境


逛完金閤寺,再加上休息了半個小時,竟然還不到11點。由於時間有剩,就決定順路去北野天滿宮走走,雖說我二月份才來過天滿宮賞梅,但我對天滿宮的印象還不錯。北野天滿宮最大的好處是:『免費』。另外金閤寺到天滿宮的公車很多,隨便坐就有。

正門look一定要來一張的。




 老姊跟我還特別上網查了手水的程序。


很多鳥居讓人想到伏見稻荷神社,不過這一次我們要去正牌的了,先來小的前面實習一下。


 來天滿宮一定要摸一下牛再摸一下自己的頭,希望能帶來一些智慧。


逛完天滿宮其實時間還早,本來打算帶家人去吃附近的天下一品 (上次吃的印象不錯,後來才發現每一家的差異很大)。看了一下地圖,京都御苑附近吃的滿多的,就決定先坐車去御苑附近再看要吃什麼,最後是吃すき家

老姊和我都吃鰻魚飯。
 

京都御苑應該算是京都人的後花園吧,很多人在這邊露營乘涼睡午覺玩水什麼的,在此值得一提的是,我幸運的老母竟然撿到一張ICOCA

京都御苑有很多入口,我們特別挑了有招牌的拍張照。
 

樹下好乘涼,我們在這邊也休息了一下。不過有人抽煙是美中不足的地方。


接著是參觀京都御所,這是天皇之前的老家,自然景觀不錯。不過老媽到這就不太能走了(我真是個不孝的兒子.. 逼她一直運動)。於是開始走走停停。
 


京都御所入口有休息室,還有免費Wi-Fi,我是覺得滿好的。

接著我們再往前走,搭公車前往鴨川休憩,跳跳石龜,泡泡腳,休息一下。





晚餐吃一蘭拉麵,但我們忘了點配料,因此老媽跟老姊對於一蘭的評價都不高...老婆揚言下次要雪恥(我們看下去...)
 
 


最後記錄一下本次旅行的記憶點..通常記憶點都是不愉快的經驗,這一次也是...

我原先的計劃是,從四条河原町站搭公車在高倉塩小路站下車,再轉公車回民宿。沒有想到在高倉塩小路站就是找不到我要搭的公車站牌(早知道就直接坐回京都站轉車,這個真的是想法的問題,原先想要少走幾部路再省一點時間,但沒有想到花更多時間)...於是我們一行人就在路上傻傻的找,後來決定往前走結果走著走就就走到京都站了,就在此時我又做了第二個錯誤決定,去後站坐車(我們住在東寺附近,是在後站,但前站的車比較多比較好坐)...所以我們一行人就傻傻的多走了10分鐘的路,在此由衷對我娘親、我姊、我老婆及我兒子致上最高的歉意,另外後站等車時有一些路線也改變了,讓家人又多等了半個小時,還好有熱心的路人提醒我們..真的是計劃趕不上變化(而且我計劃也做的不夠)我附上地圖來說明一下這次的經驗。我們的下車地點跟正確的上車地點實在離的真的很遠...
 大概離了快300公尺吧,而且不是在對面也不是在同一條路上。所以我真的覺得是非戰之罪,不過帶路的人功課作的不夠也是事實。據我的推測,下車地點也是修改不久,因此google map上還沒有新的資料。




這邊要強調的是,google map不一定準,很多公車站牌的位置還有路線以及時間會改來改去,所以還是以要官方網站為主。



晚上回民宿後大家都很累了(真的很對不起),所以就去附近的超市買一些東西回來熱了吃。不過八點之後真的很多食物有打折。







2017年7月22日 星期六

扶老攜幼親子遊 - 日本京都篇 - 其一 - 啟航 (20170722)

今年的計劃是要帶老媽去日本玩耍,由於老媽不想花我的錢,於是乎我拉上了姊姊出資。感謝老姊願意鼎力相助。

這一次坐的是酷航,TZ-288,大約是11:30發機。所以我們習慣會在登機前把肚子填飽(依規定酷航登機後不得用外食),至於寶弟就吃碗杯麵吧。依慣例,先去買大港飯糰當早餐還有在拉亞飯堡備妥午餐的漢堡。

今天的狀況很多,我還在眩暈中,另外也有腹洩的狀況 (我判斷是醫師開的藥讓我加速排毒),也因此多耽誤了不少時間(另外我們在出門前又忘了行李箱的密碼是多少....我臨時破密碼花了十幾分鐘)

這一次還是搭便宜又方便的高雄捷運,感覺寶弟還想睡


後來趕到機場時,老姊已經到了一段時間了,離登機剩兩個小時,已經沒有連續的座位了。還好運氣不錯,大家還是都有座位,而且都是比較大的位置,但我實在很不喜歡做這種冒險的事。下次一定要小心。座位真的很大,以老姊為例,腳可以整個伸展。

很快就到了關西機場了,大家還算都滿有精神的 (在飛機上睡飽了?)


熟門熟路的買了利木津巴士 (對於扶老攜幼團來說,坐巴士真的很方便)。接著在京都車站買了接下來幾天要用的公車一日券。最後依慣例(?),在拉麵小路吃喜多方拉麵,可惜這一次沒有送玩具。原來玩具也是有限量的。


我還是點了很多肉的拉麵,吃完麵就聯繫房東(這一次住民宿,想讓老媽體驗一下日本的住宿),請房東來接我們,在一段眾裡尋他千百度的心路歷程之後,我們順利搭上房東的車,前往民宿。民宿的客聽有暖桌,寶弟很開心的躲在下面玩。

去附近的超市買了早餐後,大家很快的就洗洗睡了。準備明天開心出遊。







2017年7月11日 星期二

www-data透過mutt寄信需注意事項

以下為Ubuntu下測試結果:
1、不管有沒有用-e來指定寄件者 (set from="mail@example.org" )你就是不能寄信。原因為權限問題。你看mail.log會有一個error 13的錯誤。
/var/www/sent: Permission denied (errno = 13)

2、你可以用mutt -d 5的功能來開debug看log。
cat ~/.muttdebug0
但在這種狀況你看不到半個log

3、有人教可以建這個目錄,/var/www/sent 然後chown www-data:www-data和chmod 755 ,但也沒有效。你會得到這個錯誤訊息:
/var/www/sent is not a mailbox.

你也許會想,啊。我讓它變成一個mailbox就好了。我是沒有試,但我想還是不行..

4、所以要回頭看mutt為何需要該目錄?原來是為了放寄件備份,那簡單,不要讓它備份就好了:
把set copy=no放在/etc/Muttrc
就可以打完收工了。

2017年7月1日 星期六

2015日本東北之旅 - 其之一 - 啟航

2015.10.24 這是全家第一次去日本旅遊,也是老婆跟寶弟第一次出國。之前結婚時邀老婆出國渡蜜月,她斷然拒絕 (原因是懶得去),沒有想到托寶弟的福,她終於願意出國了。這一次是跟著日本旅遊達人可樂兄一起出國。要從他身上學一點東西,之後才有可能自己辦自助行。 前一天就去二舅家過夜,早上二舅媽幫我們叫了計程車。我們便先行前往機場,等著可樂來集合。 先幫寶弟拍張照先: (這是20170701才補寫的遊記,當時的寶弟還很稚嫩)
這一次是坐長榮 (公司員工旅遊有補助),第一次坐飛機的寶弟很開心。
第一次吃飛機餐,好新奇啊 (話說之後去日本都是坐廉航,就只能吃杯麵了....)
看到這張照片,就知道抵達仙台機場囉。
轉搭機場線至仙台站,接著去領車 (這一次是租車自由行),話說這部車的車號有點敏感啊...
之後就是長征之旅,大概是長這樣,可樂辛苦了 XD,接近200km的距離,到會津若松市已經七點多了。
在Toyoko Inn 辦理入住,並且幫我申請會員卡 (這樣我當晚就能享受會員價,便宜500)。就去找吃的,可樂他們使用臉書調查法 (看哪一家店比較多人打卡),選擇了一家古色古香的餐廳,我對於馬肉有點興趣,因此就點來吃看看。