MAC access 是 RouterOS 的私有協定,它可以用 MAC address 連線,即使用設備端沒有設定 IP
抓封包就可以得知,它的原理是使用 UDP 廣播的方式運作,連線端及設備端都是使用 UDP 廣播來溝通,
這也是它可以不用 IP 也能連線的原因,前提是需位於同一個 L2 層
MAC-Telnet 這個是比較舊的版本了,這個版本已經無法連線 >=6.43 版的 RouterOS
版本 >=6.43 的 RouterOS 都是使用 hash 過的 password
6.43 changelog:
*) user - all passwords are now hashed and encrypted, plaintext passwords are kept for downgrade
(will be removed in later upgrades);
裡面有:
Server mactelnetd
Client mactelnet
MikroTik Neighbor Discovery protocol mndp
protocol.h 可看到使用兩個 Port,一個 5678 用來 discovery, 20561 用來溝通
#define MT_MACTELNET_PORT 20561
#define MT_MNDP_PORT 5678
mactelnetd 需配合一個帳號密碼檔 /usr/local/etc/mactelnetd.users,
格式是純文字 username:password
系統帳號也需要有一樣的帳號才能正常登入
Recently in Linux Category
yum -y install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install git224-all
ref. IUS repo
列出可用的 locale 清單
locale -a 或 localectl list-locales
在 CentOS 8 若安裝時沒有選中文,會看不到 zh_TW.utf8
它把語言包拆分了,要另外安裝
yum -y install glibc-langpack-zh langpacks-zh_TW
設定
localectl set-locale zh_TW.utf8
CentOS 7 需使用 localectl set-locale LANG=zh_TW.utf8
不然會出現錯誤訊息 Failed to issue method call: Invalid Locale data.
因為 RHEL 的 $releasever 的變數和 CentOS 不同,無法直接使用 CentOS repo,需將 repo 檔中的變數寫死後使用
以上是 7 版的 repo 檔,若是 8 版,把檔案裡面的 7 改成 8 即可
curl https://gist.githubusercontent.com/pankpan/1649b48550949ed022086172b990a2d7/raw/1afd6968c702346009f48ba1047a1af2a14be4ba/CentOS-Base.repo > /etc/yum.repos.d/CentOS-Base.repo
curl http://mirror01.idc.hinet.net/CentOS/RPM-GPG-KEY-CentOS-7 > /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum -y update
Installation source
http://mirror01.idc.hinet.net/CentOS/7/os/x86_64/
curl 要測試自訂的域名及綁定 IP 通常是在 hosts 設定
curl 在 7.21.3 之後, 加了一個 --resolve 參數, 可以在本身綁定而不需修改 hosts
例:
curl --resolve domain.com:80:192.168.1.1 http://domain.com
curl --resolve domain.com:443:192.168.1.1 https://domain.com
它就會直接去連 192.168.1.1 而不會參考域名的解析
PHP 在 5.5.0 之後 curl_setopt 也加入 CURLOPT_RESOLVE 參數
$ch = curl_init("https://domain.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_RESOLVE, array("domain.com:443:192.168.1.1"));
echo curl_exec($ch);
CentOS 6 的 curl 版本是 7.19.7, 不支援, 需升級 libcurl 及 curl
rpm -ivh http://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-2-1.rhel6.noarch.rpm
yum-config-manager --enable city-fan.org
yum -y update curl
CentOS 7 的 curl 版本是 7.29.0, 已有支援 --resolve, 但若想裝最新版的 curl, 還是可以裝 city-fan.org repo
rpm -ivh http://www.city-fan.org/ftp/contrib/yum-repo/rhel7/x86_64/city-fan.org-release-2-1.rhel7.noarch.rpm
yum-config-manager --enable city-fan.org
yum -y update curl
Caddy Web Server 目的是簡化 SSL 憑證的設定, 它可以做到自動化,
甚至可以幫你自動 Renew, 設定也很簡單, 很適合用在小型網站或測試、開發環境
在網站上選擇好 Plugins 後, 會產生一行安裝指令(如下面這行), 執行後會執行檔會在 /usr/local/bin/caddy,
它是 Go 寫的, 這個執行檔不需要其他相依的 Library
curl https://getcaddy.com | bash -s personal hook.service,http.authz,http.cache,http.expires,http.ipfilter,http.locale,http.login
其中 hook.service 是用來建立服務用的 (-service參數)
建立 Caddy config 及 log 目錄
mkdir /etc/caddy /var/log/caddy
Caddy config 範例檔 /etc/caddy/Caddyfile
有兩個域名, 都有 PHP (需跑 php-fpm 服務)
domain1.com 使用自動憑證, 有開 https 及 http, http 有加 rewrite rule
domain2.com 使用現有憑證, 只開 https
建立服務、啟用、啟動
caddy -service install -agree=true -http2 -quic -log /var/log/caddy/caddy.log -conf=/etc/caddy/Caddyfile
systemctl enable caddy
systemctl start caddy
Systemd 為了安全性因素, 預設 PrivateTmp=true
即每個 Service 都有自己的 /tmp,
真實位置是存在於像這樣的路徑 /tmp/systemd-private-291a89c46ea14fa282e95374a841ec4e-httpd.service-eYQNRI/tmp
例: 將 Apache 停用 PrivateTmp
sed -i s/PrivateTmp=true/PrivateTmp=false/ /lib/systemd/system/httpd.service
systemctl daemon-reload
systemctl restart httpd
Windows 10 的 Linux 子系統 (Windows subsystem for Linux, WSL) 因為不是走一般的開機流程,
所以服務都不會啟動, 也包含了 /etc/rc.local
若要在開啟 WSL 視窗時執行 rc.local, 做法如下(Ubuntu環境)
# 設定 sudo 免密碼
echo "yourusername ALL=(root) NOPASSWD: ALL" >> /etc/sudoers
# 在 bash.bashrc 最後觸發啟動 rc.local
echo "sudo /etc/rc.local &" >> /etc/bash.bashrc
建立 ssh host key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
建立 /etc/rc.local, 下面內容是啟動 sshd 及 Apache 的範例, 每開一次視窗, 就會被觸發執行.
加在這裡的 script, 需考慮到多開視窗, 就會啟動多次的情況, 所以用 pidof 判斷服務是否已經在跑了, 沒有才啟動服務.
範例:
#!/bin/bash
mkdir -p /run/sshd
pidof -s sshd > /dev/null || /usr/sbin/sshd
pidof -s apache2 > /dev/null || service apache2 start 2>/dev/null
若 Linux df 有 hang 住的狀況, 用這 script 可找出造成 hang 住的目錄
for i in `awk '{print $2}' /proc/mounts`
do
echo $i
ls $i
done
常見的狀況是有掛載 NFS 之類的遠端目錄, 但遠端沒有回應(網路不通或機器掛掉之類), 若是這種狀況, 可以用 umount -l
另一種情況是 /proc/sys/fs 下面出現異常
有遇過幾次 /proc/sys/fs/binfmt_misc 卡住
可以重啟服務解決
systemctl restart proc-sys-fs-binfmt_misc.mount
Recent Comments