20170626_jeffrey - silenceuncrio/diary GitHub Wiki
review
上禮拜五忘了估 RIP I/II
, RSTP
和 OSPF
的 schedule
RIP
抓個 15 個 工作天
OSPF
也抓 15 個 工作天
RSTP
先抓個 20 個 工作天
Job | Owner | From | To |
---|---|---|---|
VRRP | Jeffrey | 5/12 | 7/14 |
RIP I/II | Jeffrey | 7/17 | 8/4 |
OSPF | Jeffrey | 8/7 | 8/25 |
RSTP | Jeffrey | 8/28 | 9/22 |
趕緊估一下 schedule 並 mail 給 ariel
engineering notebook
上禮拜四的假卡
base on 上禮拜五的 VRRP 測試環境 topology 再加強一下
+-------------+
|DHCP Server |
|192.168.0.250|
+---+---------+
|
+----------------------+---+ WAN
| |
+---+----------------+ +---+----------------+
|M300 | |M301 |
|* WAN: DHCP Client | |* WAN: DHCP Client |
|* LAN: 192.168.1.100| |* LAN: 192.168.1.101|
+---+----------------+ +---+----------------+
| |
+----------------------+---+ LAN
|
+---+----------------+
|PC |
|* LAN: 192.168.1.1 |
|* GW: 192.168.1.100|
+--------------------+
在 M300
和 M300
的 VRRP 服務未啟動的時候
PC 要能 ping 到 WAN Subnet 的 device (ex. DHCP Server - 192.168.0.250)
須根據 PC 的 default gateway 設定
- 192.168.1.100 - 經由
M300
- 192.168.1.101 - 經由
M301
目前 M300
interface 設定如下
root@Mobile Router:~# ifconfig
...
eth1 Link encap:Ethernet HWaddr 00:03:79:03:00:01
inet addr:192.168.0.82 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::203:79ff:fe03:1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:322 errors:0 dropped:12 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34347 (33.5 KiB) TX bytes:3831 (3.7 KiB)
lan Link encap:Ethernet HWaddr 00:03:79:03:00:00
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::203:79ff:fe03:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:314 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:49704 (48.5 KiB) TX bytes:738 (738.0 B)
M301
interface 設定如下
root@Mobile Router:~# ifconfig
...
eth1 Link encap:Ethernet HWaddr 00:03:79:03:01:01
inet addr:192.168.0.83 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::203:79ff:fe03:101/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2564 errors:0 dropped:105 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:270297 (263.9 KiB) TX bytes:4462 (4.3 KiB)
lan Link encap:Ethernet HWaddr 00:03:79:03:01:00
inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::203:79ff:fe03:100/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:358 (358.0 B) TX bytes:738 (738.0 B)
目前 PC 已能 ping 通 WAN Subnet 的 DHCP Server
(192.168.0.250)
已經利用 tracepath
確認 path 符合 PC 的 default gateway 設定
基本環境已經配置完畢
再來就是讓 VRRP 上場了
加了 VRRP
這個抽象層之後
+-------------+
|DHCP Server |
|192.168.0.250|
+---+---------+
|
+----------------------+---+ WAN
| |
+---+----------------+ +---+----------------+
|M300 | |M301 |
|* WAN: DHCP Client | |* WAN: DHCP Client |
|* LAN: 192.168.1.100| |* LAN: 192.168.1.101|
+---+----------------+ +---+----------------+
| |
+---+----------------------+----------------+
|Virtual Router: 192.168.1.200 |
+---+---------------------------------------+
|
+--------------------------+ LAN
|
+---+----------------+
|PC |
|* LAN: 192.168.1.1 |
|* GW: 192.168.1.200|
+--------------------+
PC 端的 GW
設定只要填 Virtual Router 的 IP 即可
這樣一便能享受 M300
與 M301
提供的 Virtual Router 功能
那 M300
和 M301
上面的 VRRP
功能該怎麼設定呢?
參考
- VRRP (Virtual Router Redundancy Protocol) Keepalived Configuration
- VRRP On Linux Using Keepalived – The Basics
試著寫一個最簡單的 configuration
M300
- /etc/keepalived/keepalived.conf
vrrp_instance m30x {
state MASTER
interface lan
virtual_router_id 200
priority 150
advert_int 1
virtual_ipaddress {
192.168.1.200
}
}
M301
- /etc/keepalived/keepalived.conf
vrrp_instance m30x {
state BACKUP
interface lan
virtual_router_id 200
priority 160
advert_int 1
virtual_ipaddress {
192.168.1.200
}
}
試著利用 /etc/init.d/keepalived
來啟動 keepalived
root@Mobile Router:~# /etc/init.d/keepalived
Usage: /etc/init.d/keepalived {start|stop|reload|restart|condrestart|status}
先從 M300
開始
root@Mobile Router:~# /etc/init.d/keepalived start
Starting keepalived: /etc/init.d/keepalived: line 23: daemon: command not found
看一下 /etc/init.d/keepalived
的 start()
start() {
echo -n $"Starting $prog: "
daemon keepalived ${KEEPALIVED_OPTIONS}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
來看看怎麼在 M300 補上 daemon
這個 command
不確定是不是 daemontools_0.76.bb
這個 recipe
修改 meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
在 RDEPENDS_${PN}
加上 daemontools
diff --git a/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb b/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
index 234d9fe..5b3cba4 100644
--- a/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
+++ b/meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
@@ -22,7 +22,7 @@ RDEPENDS_${PN} += "GobiNet-mod"
RDEPENDS_${PN} += "8192du-mod wireless-tools rng-tools hostapd wpa-supplicant"
# Ethx tool
RDEPENDS_${PN} += "ethtool"
-RDEPENDS_${PN} += "ppp ppp-oe iptables iperf dnsmasq pptp-linux bridge-utils dhcp-server dhcp-client openvpn openssl openssl-conf iproute2 iproute2-tc procps socat strongswan cryptodev-module mtd-utils mtd-utils-ubifs imx-kobs tar bzip2 jq shadow libqmi net-snmp net-snmp-server-snmpd mosquitto keepalived"
+RDEPENDS_${PN} += "ppp ppp-oe iptables iperf dnsmasq pptp-linux bridge-utils dhcp-server dhcp-client openvpn openssl openssl-conf iproute2 iproute2-tc procps socat strongswan cryptodev-module mtd-utils mtd-utils-ubifs imx-kobs tar bzip2 jq shadow libqmi net-snmp net-snmp-server-snmpd mosquitto daemontools keepalived"
# ======================================
# Build dependence
直接 compile 看看吧
compile 過了
先從 M300
來做 firmware upgrade
firmware upgrade 完還是沒有 daemon
這個 command
還原 meta-proscend/recipes-core/prosrc/prosrc_0.1.bb
試一下 start-stop-daemon_1.16.0.2.bb
這個 recipe
直接用 bitbake
先試試
build@2f192722794e:/var/m300/build_small$ bitbake start-stop-daemon
Loading cache: 100% |##################################################################| ETA: 00:00:00
Loaded 2760 entries from dependency cache.
ERROR: Nothing PROVIDES 'start-stop-daemon'
ERROR: start-stop-daemon was skipped: Recipe is blacklisted: BROKEN: fails because of gettext, partial fix is available here http://patchwork.openembedded.org/patch/89867/
參考 5.21.1. Using systemd Exclusively
看看會怎麼影響到 keepalived
修改 meta-proscend/conf/distro/proscend-m300.conf
diff --git a/meta-proscend/conf/distro/proscend-m300.conf b/meta-proscend/conf/distro/proscend-m300.conf
index 117abd2..bca65d7 100644
--- a/meta-proscend/conf/distro/proscend-m300.conf
+++ b/meta-proscend/conf/distro/proscend-m300.conf
@@ -39,15 +39,18 @@ DISTRO_FEATURES_LIBC = " \
"
# Ariel: After take off noisy parts
-DISTRO_FEATURES_append += " usbgadget usbhost pci"
+DISTRO_FEATURES_append += " usbgadget usbhost pci systemd"
# Ariel: After take off noisy parts
IMAGE_INSTALL_append += " prosrc"
RM_OLD_IMAGE = "1"
-VIRTUAL-RUNTIME_init_manager = "sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
+
+VIRTUAL-RUNTIME_initscripts = ""
# Image level user/group configuration.
# Inherit extrausers to make the setting of EXTRA_USERS_PARAMS effective.
直接 compile
感覺很多東西都要重 build
就先等等吧
稍微 google 了一下 sysvinit
和 systemd
發現我這樣一改下去茲事體大
連目前的 rc.local
要動起來都有問題
馬上放棄...
在 M300 的 shell 可以使用 logread | grep keepalived
來打印 keepalived
的相關 Log
目前發現 keepalived 瘋狂的打印 message...
killall keepalived
後可利用 WEB UI 來清除 log
原因待查