2022年10月21日 星期五

BGP redistribute IGP (RIP , OSPF ) redistribute BGP

 


這個架構不難,就iBGP轉進RIP。重點是中間的R2同時要跑iBGP和RIP。
這其實是客戶的架構,在排除問題時想說順便驗證一下。
結果一開始怎麼測試,R2就是不把從iBGP收到的網段轉到RIP。
原先以為是
iBGP裡面要設定:
  address-family ipv4
   bgp redistribute-internal

但想想不對 ,明明R2都有學到R1跟R3的網段了,應該是RIP那邊的問題比較合理。

後來試出來,是要這樣處理,就這一個指令花掉我幾個小時的時間。

router rip

 redistribute bgp 5566 metric transparent


順便測試一下OSPF的部份,重點是在 match external 2 (因為我放的是OSPF external type 2)

router bgp 4780

 address-family ipv4

  bgp redistribute-internal

  redistribute ospf 99 metric 1 match internal external 2


eigrp的部份是最特別的。由於interface ip跟要放的network overlap。所以在R1的部份需要設定其eigrp router-id才能把想放的網段放出去。

例如interface是22.141.187.1要放的是22.141.184.0這樣是放不出去的。要指定router-id才行。

router eigrp 110

 eigrp router-id 1.1.1.1



2022年7月15日 星期五

cacti手動撰寫script建立template

最近在重寫cacti的template,做一個簡單的筆記,不然過幾年我又忘了。

我們針對的是script_server的部份

 1、通常是把scripts找一個適合的出來改。

cp ss_cisco_temperature.php test.php

vi test.php

function ss_cisco_temperature 上面都刪除。

但要載入必要的library,通常我會再加一點料,這樣要測試的時候比較好測試。

 error_reporting(0);

 include_once(dirname(__FILE__) . '/../include/global.php');

 include_once(dirname(__FILE__) . '/../lib/snmp.php');

 $cmd = "get";

 $arg1 = "rbnEntityTempCurrent";

 $arg2 = "104.1";

 $hostname = "1.2.3.4";

 $host_id = "30";

 $result = ssr_temperature($hostname, $host_id, "2:161:5000:1:10:iiiseed:::::: ", $cmd, $arg1 , $arg2 );

 print_r($result);

$cmd有兩種:index, num_indexes, 

$arg1有兩種:query (walk全部) get (get一個值)

如果$arg1是get的話,$arg2要填入你要查的oid。

之後要測試的時候很簡單,

把查詢的查參數改掉就好。

$result = ssr_temperature("139.175.240.150", "52", "2:161:5000:1:10:public:::::: ", $cmd, $arg1 = '', $arg2 = '');

php test.php

就可以驗證測試結果,把index,num_indexes, query arg2,get arg2

都各測一輪就差不多了。稍微看一下輸出的格式是否跟其它檔案或者與你預期的是否相符。

index就要列出所有的index

num_indexes要計算有幾個index 

query arg1(descr) ,通常是列出所有index及其對應的descr

query arg1(value) ,通常是列出所有index及其對應的value

以下兩個如果沒有show出來 (我的範例是沒有的,要自己print_r($result);

get arg1(descr) arg2(oid),先snmpwalk所有的index如果有相符的再秀出其oid對應的descr

get arg1(value) arg2(oid),取出該oid對應的value


之後就是調校data query, data template, graph template,通常我是duplicate其它的template後再進行修改。


在cacit 1.2.x版,有一個我常常忘記的設定,在建立data query時,需要Associated Data Templates,在建立Data Source後,後方的check box記得勾選,不然不會生效。







最後要提醒一下,把test.php還原成ssr_temperature.php時,我們會把前面的檔頭加回去,print call_user_func_array('ssr_temperature', $_SERVER['argv']); 這一行記得要更新成你命名的function 名稱,不然在執行時就無法執行了。


2022年7月13日 星期三

cacti Cisco IOSXR ASR temperature and Ericsson(Redback) SmartEdge/SSR temperature

 之前在cacti 0.8.x有寫過Cisco IOSXR ASR temperature and Ericsson(Redback) temperature。自己寫的原因是在網路上找不到。

但換成cacti 1.2.x後就不能用了。找了一陣子看過了幾年有沒有人放出來,但還是找不到。

本來想要修一修舊的就好,但修的不太順,索性寫個新的版本,希望下次cacti大改版時還能用啊。

Cisco的部份主要只有在ASR 9010測試過,理論上ASR 9006應該也可以。

但我沒有寫get的部份,在realtime的部份也許不能用(等要用再來修吧)

https://github.com/tiserle/cacti_asr_temperature

ericsson的部份比較麻煩,有限制版本。在SmardEdge的部份,SEOS6是一定不能用的(snmpd沒有吐資料),SEOS12可以用,SEOS11我手邊沒有得測,所以不知道,我猜可以。

最麻煩的是SSR ,在IPOS 18可以用,但要調cacti的參數,原因是他們的snmpd被snmpwalk爬時忘了設定limit,會一路爬到timeout,此外SSR對於snmpd的priority設定的很低,常常就不回資料,要等一下才行。如果要用的話記得在設備中的snmp timeout盡量拉長。這個是用snmp index寫的,比較簡單,但變化自然就比較少。

https://github.com/tiserle/cacti_ericsson_redback_temperature

後來手癢寫了script-server的版本,但同樣的,在設備中的snmp timeout還是要拉到50000 (50秒)才行。

https://github.com/tiserle/cacti_ericsson_redback_temperature

2022年6月20日 星期一

SoftEther L2 Bridge VPN (2022修正版)

這篇文章是我寫的,2017寫的文章,跟2022年相較,有些部份需要做調整。

https://www.netadmin.com.tw/netadmin/zh-tw/technology/C3797EE717E145199F4694D0C568B0AA

由於VPN Bridge在建立local bridge時,綁定的網路卡一直為offline狀態。因此要改用VPN Server來做相關的設定。但設定方式沒有不同不用擔心。


在Branch的LAN端,我是用一台筆電介接RPI的eth0,但RPI的eth0也會抓到Headquarter的DHCP server給的IP資訊,造成RPI連外斷線。因此要將RPI的eth0設定固定IP,避免其取得DHCP時將default route指向DHCP給的gateway IP。

有很多方法都適用,我的習慣是編輯這個檔案:
/etc/network/interfaces
新增以下設定:
    auto eth0
    iface eth0 inet static
      address 192.168.0.10
      netmask 255.255.255.0
重開之後就會正常,當然你也可以systemctl restart networking
但有趣的是,它還是會自動抓到DHCP給的gateway IP,因此我們要將
default route刪除。
route delete default gw 192.168.0.254

當然,新的Pi OS有很多其它的設定方式,例如編輯
/etc/dhcpcd.conf
新增這一行:
interface eth0
static ip_address=192.168.1.10/24
記得要重啟dhcpd
systemctl restart dhcpcd.service 


2022年6月3日 星期五

windows 10 cli show intrface name and using bridgecreate (bridgedevicelist)

 


VPN Server>bridgedevice list

BridgeDeviceList 命令 - 获取可以在当地的网桥上使用的 LAN 卡一览

Microsoft (ID=1170327442)

Realtek Gaming GbE Family Controller (ID=2635375448)

Supereal network (ID=0934702716)

VMware Virtual Ethernet Adapter (ID=1905419454)

VMware Virtual Ethernet Adapter (2) (ID=0913673047)

命令成功完成。


VPN Server>bridgecreate

BridgeCreate 命令 - 创建本地的网桥连接

网桥虚拟 HUB 名称: vpn


目标网桥的设备名称: Microsoft


发生错误。(错误代码: 29)

找不到对象。

VPN Server>netsh interface show interface

"netsh": 命令未找到。

您可以使用 "HELP" 命令来查看一个可用的命令列表。

VPN Server>exit


C:\Program Files\SoftEther VPN Bridge>netsh interface show interface


管理狀態    狀態          類型             介面名稱

-------------------------------------------------------------------------

已啟用            已中斷連線          固定               乙太網路 3

已啟用            已中斷連線          固定               VPN - VPN Client

已啟用            已連線            固定               VMware Network Adapter VMnet1

已啟用            已連線            固定               VMware Network Adapter VMnet8

已啟用            已中斷連線          固定               乙太網路 4

已啟用            已連線            固定               乙太網路


C:\Program Files\SoftEther VPN Bridge>netsh interface ip show interfaces


Idx     Met         MTU          狀態                 名稱

---  ----------  ----------  ------------  ---------------------------

  1          75  4294967295  connected     Loopback Pseudo-Interface 1

 14          25        1500  connected     乙太網路

 15          35        1500  disconnected  VPN - VPN Client

 11          65        1500  disconnected  藍牙網路連線

  6          35        1500  disconnected  乙太網路 3

 21          35        1500  disconnected  乙太網路 4

 17          35        1500  connected     VMware Network Adapter VMnet1

  4          35        1500  connected     VMware Network Adapter VMnet8

  



C:\Program Files\SoftEther VPN Bridge>powershell

Windows PowerShell

Copyright (C) Microsoft Corporation. 著作權所有,並保留一切權利。


請嘗試新的跨平台 PowerShell https://aka.ms/pscore6


PS C:\Program Files\SoftEther VPN Bridge> Get-NetAdapter


Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed

----                      --------------------                    ------- ------       ----------             ---------

區域連線                  PPPoP WAN Adapter                            22 Disconnected 00-00-00-00-00-00          0 bps

乙太網路 4                RD9700 USB2.0 To Fast Ethernet Adapter       21 Disconnected 00-06-03-0F-0A-80       100 Mbps

VMware Network Adapte...1 VMware Virtual Ethernet Adapter for ...      17 Up           00-50-56-C0-00-01       100 Mbps

VPN - VPN Client          VPN Client Adapter - VPN                     15 Disconnected 5E-9E-06-F2-3E-98       100 Mbps

乙太網路                  Realtek Gaming GbE Family Controller         14 Up           B4-2E-99-EE-71-78         1 Gbps

藍牙網路連線              Bluetooth Device (Personal Area Netw...      11 Disconnected 00-1A-7D-DA-71-12         3 Mbps

乙太網路 3                Fortinet Virtual Ethernet Adapter (N...       6 Disconnected 00-09-0F-FE-00-01       100 Mbps

VMware Network Adapte...8 VMware Virtual Ethernet Adapter for ...       4 Up           00-50-56-C0-00-08       100 Mbps




PS C:\Program Files\SoftEther VPN Bridge> Get-NetIPInterface


ifIndex InterfaceAlias                  AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp     ConnectionState PolicyStore

------- --------------                  ------------- ------------ --------------- ----     --------------- -----------

4       VMware Network Adapter VMnet8   IPv6                  1500              35 Enabled  Connected       ActiveStore

17      VMware Network Adapter VMnet1   IPv6                  1500              35 Enabled  Connected       ActiveStore

21      乙太網路 4                      IPv6                  1500              35 Disabled Disconnected    ActiveStore

6       乙太網路 3                      IPv6                  1500              35 Disabled Disconnected    ActiveStore

11      藍牙網路連線                    IPv6                  1500              65 Disabled Disconnected    ActiveStore

15      VPN - VPN Client                IPv6                  1500              35 Enabled  Disconnected    ActiveStore

1       Loopback Pseudo-Interface 1     IPv6            4294967295              75 Disabled Connected       ActiveStore

4       VMware Network Adapter VMnet8   IPv4                  1500              35 Disabled Connected       ActiveStore

17      VMware Network Adapter VMnet1   IPv4                  1500              35 Disabled Connected       ActiveStore

21      乙太網路 4                      IPv4                  1500              35 Enabled  Disconnected    ActiveStore

6       乙太網路 3                      IPv4                  1500              35 Enabled  Disconnected    ActiveStore

11      藍牙網路連線                    IPv4                  1500              65 Enabled  Disconnected    ActiveStore

15      VPN - VPN Client                IPv4                  1500              35 Enabled  Disconnected    ActiveStore

14      乙太網路                        IPv4                  1500              25 Enabled  Connected       ActiveStore

1       Loopback Pseudo-Interface 1     IPv4            4294967295              75 Disabled Connected       ActiveStore


PS C:\Program Files\SoftEther VPN Bridge> Get-NetIPInterface -PolicyStore persistentstore


ifIndex InterfaceAlias                  AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp     ConnectionState PolicyStore

------- --------------                  ------------- ------------ --------------- ----     --------------- -----------

21      乙太網路 4                      IPv6                                                                Persiste...

15      VPN - VPN Client                IPv6                                                                Persiste...

6       乙太網路 3                      IPv6                                                                Persiste...

7       乙太網路 2                      IPv6                                                                Persiste...

11      藍牙網路連線                    IPv6                                                                Persiste...

4       VMware Network Adapter VMnet8   IPv6                                                                Persiste...

17      VMware Network Adapter VMnet1   IPv6                                                                Persiste...

14      乙太網路                        IPv6                                                                Persiste...

12      乙太網路 (核心偵錯工具)         IPv6                                                                Persiste...

21      乙太網路 4                      IPv4                                                                Persiste...


example:

BridgeCreate vpn /DEVICE:"乙太網路 4" /TAP:no 

VPN Server>bridgelist

BridgeList 命令 - 获得当地网桥连接列表

编号|虚拟 HUB 名称|网络适配器或 tap 设备名称                           |状态

----+-------------+----------------------------------------------------+----

1   |vpn          |Realtek Gaming GbE Family Controller (ID=2635375448)|离线

命令成功完成。


VPN Server>bridge

"bridge": 命令名称是模糊的。

指定的命令名称匹配以下多个命令:

 BridgeCreate     - 创建本地的网桥连接

 BridgeDelete     - 删除本地网桥连接

 BridgeDeviceList - 获取可以在当地的网桥上使用的 LAN 卡一览

 BridgeList       - 获得当地网桥连接列表

请更严格地重新指定命令名称。

VPN Server>bridgedelete

BridgeDelete 命令 - 删除本地网桥连接

删除虚拟网桥 HUB 的名称: vpn


删除网桥的设备名: Realtek Gaming GbE Family Controller (ID=2635375448)


命令成功完成。




 

2021年9月29日 星期三

新版Cacti 如何import舊版的template ( How new Cacti import template of old Cacti)

這一題我好像解過,但久了又忘了,做一個記錄,避免久了再忘。

簡單來說,Cacti的所有template的xml檔都有一段:hash_xxoooo的文字。以下例而言,06代表功能,0024代表版本。

hash_06002419414480d6897c8731c7dc6c5310653e

我們可以簡單查詢0024代表的是0.8.8版

cat /usr/share/cacti/include/global_arrays.php  | grep 0024

        '0.8.8'  => '0024',

        '0.8.8a' => '0024',

        '0.8.8b' => '0024',

我們要從Cacti 1.2.18 import 這些template,就要修改這些hash的內容,要從0024改成0102 (0102是從下面的指令抓出來的),

cat /usr/share/cacti/include/global_arrays.php  | grep 1.2.18

        '1.2.18'  => '0102',

以此例而言,要把hash_060024 改成 hash_060102

但一個一個改太笨,可以的話當然是sed一行搞定,可惜我功力不強,試不出來。只好寫小程式來處理,範例如下。

#!/bin/bash

from=`grep -oe 'hash_..0024' test.xml | sort | uniq`

for value in $from

do

    to=`echo $value | sed 's/0024/0102/g'`

    sed -i "s/$value/$to/g" "test.xml"

done

PHP的版本:

<?php

 $version = "0102";

 $fp = file("test.xml");

 $myfile = fopen("output.xml", "w");

 foreach($fp as $line)

 {

  if(preg_match("/hash_/",$line))

  {

   $pos = strpos($line, "hash_");

   $orig = substr($line,$pos,11);

   $new = substr($line,$pos,7);

   $newstring = $new.$version;

   $line = str_replace($orig,$newstring,$line);

  }

  fwrite($myfile, $line);

 }

 fclose($myfile);

?>

如果要從cli import template的話,可以使用下列指令:

php /usr/share/cacti/cli/import_template.php --filename output.xml


Cacti 異常的原因 ( Poller Output Table not Empty )

之前在RHEL8裝了Cacti,之後再手動升版,但一直異常。Cacti的圖常常畫不出來。

昨天終於找到原因。原因是用yum install cacti時,他在/etc/crontab裡面會新增Cacti的poller的設定。

但我之前是手動在/etc/cron.d裡面新增cacti的poller,所以我同時有兩個poller在跑。

當時常見的log如下:

2021/05/16 03:30:02 - POLLER: Poller[1] NOTE: Poller Int: '300', Cron Int: '300', Time Since Last: '0.26', Max Runtime '298', Poller Runs: '1'

然後經常有Poller Output Table not Empty的log:

2021/05/16 03:30:02 - POLLER: Poller[1] WARNING: Poller Output Table not Empty.  Issues: 39, DS[828, 828, 827, 827, 826, 826, 804, 804, 799, 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, 814], Additional Issues Remain.  Only showing first 20

試了很多方法,找了很多方法都解決不掉,後來就跑去用LibreNMS了...

在找到原因後,回頭再check當時的log,真的一看就知道問題所在。難怪當時同時會有兩個spine在執行,但當下真的不覺得奇怪。只能說,找到答案之後回頭看一切都是那麼合理。

2021/05/16 03:30:02 - POLLER: Poller[1] DEBUG: About to Spawn a Remote Process [CMD: /usr/local/spine/bin/spine, ARGS:  -C '/usr/local/spine/etc/spine.conf' --poller=1 --first=0 --last=61 --mibs]

2021/05/16 03:30:02 - POLLER: Poller[1] DEBUG: About to Spawn a Remote Process [CMD: /usr/local/spine/bin/spine, ARGS:  -C '/usr/local/spine/etc/spine.conf' --poller=1 --first=0 --last=61]