2023年1月20日 星期五

Ubiquiti EdgeRouter X (ERX) 路由器 IPv6 配置指南 (適用於 PPPoE 環境)

如何在 Ubiquiti EdgeRouter X (ERX) 上配置 IPv6,主要針對 PPPoE 連接類型。內容涵蓋了 MSS Clamping 的調整、DHCPv6-PD 配置以及一些常見問題的解決方案。

重要提示:

  • 在進行任何配置更改之前,建議您備份當前的路由器配置。
  • 操作前請確保您對 EdgeOS 的基本操作有一定了解。

1. MSS Clamping 配置 (firewall/options/mss-clamp6)

MSS (Maximum Segment Size) Clamping 對於 IPv6 流量的穩定性至關重要,尤其在 PPPoE 環境下。不正確的 MSS 值可能導致部分網站或服務無法正常訪問。

  • 路徑: Config Tree -> firewall -> options -> mss-clamp6
  • 建議值: 1432
    • 計算方式: 標準 PPPoE 環境的 IPv6 MSS 值通常為 1500 (MTU) - 8 (PPPoE Header) - 40 (IPv6 Header) - 20 (TCP Header) = 1432
  • 故障排除: 如果設置為 1432 後仍出現問題 (例如部分網頁無法加載),您可以嘗試將 MSS 值進一步調小,例如 1382。這是因為某些服務提供商或網路環境可能存在更嚴格的限制。

2. DHCPv6-PD (Prefix Delegation) 配置 (內網 IPv6 分配)

DHCPv6-PD 允許路由器從 ISP 獲取一個 IPv6 前綴,並將其分配給內網設備。這對於在多個內網段分配 IPv6 地址特別有用。

  • 路徑: interfaces -> ethernet -> eth0 (或您的 PPPoE 介面) -> pppoe -> 0 (或您的 PPPoE 連接號) -> dhcpv6-pd -> pd -> 0 (第一個前綴委派)
  • 配置詳細:
    • interface (內網介面): 點擊進入此項,為您希望啟用 IPv6 的內網介面進行配置。
      • host-address:
        • 單個內網段: 如果您只有一個內網 IPv6 段 (例如 192.168.1.x),設定為 ::1。這表示該介面將獲得從委派前綴派生出的第一個可用地址。
        • 多個內網段: (如您所提到的 192.168.1.x192.168.2.x) 您需要為每個內網介面配置不同的 prefix-id
      • prefix-id:
        • 如果您只有一個內網段,設定為 :1
        • 如果您有兩個內網段,例如一個 192.168.1.x 對應 eth1,另一個 192.168.2.x 對應 eth2 (或其他 VLAN 介面),您可以將 eth1prefix-id 設為 :1,將 eth2prefix-id 設為 :2。這樣,每個內網段都會獲得一個獨立的 /64 IPv6 前綴。
      • service: 選擇 slaac (Stateless Address Autoconfiguration)。這允許內網設備通過路由通告自動配置 IPv6 地址,而無需 DHCPv6 伺服器。
    • 委派前綴大小調整:
      • 路徑: 在點開 pd/0 後,您可能會看到 /64
      • 修改: 將其修改為 /60。這將請求 ISP 提供一個更大的前綴 (包含 16 個 /64 子網),以便您可以為多個內網介面分配獨立的 /64 地址段而不會報錯。

3. 外網 IPv6 地址配置 (interfaces/ethernet/eth0/pppoe/0/ipv6)

這部分配置確保路由器的 PPPoE 介面能夠獲取到其自身的 IPv6 地址。

  • 路徑: interfaces -> ethernet -> eth0 (或您的 PPPoE 介面) -> pppoe -> 0 (或您的 PPPoE 連接號) -> ipv6
  • 配置:
    • address: 點擊 + 添加。這會讓路由器從 ISP 自動獲取 IPv6 地址。
    • enable: 點擊 + 啟用 IPv6 功能。

4. 完成設置與應用

  • 預覽並應用: 完成上述所有設置後,點擊頁面底部的 Preview (預覽) 查看所有待應用的更改,然後點擊 Apply (應用) 使配置生效。

5. DNS 服務與 IPv6 相關優化

如果 IPv6 DNS 服務不穩定,導致網頁載入緩慢或卡頓,您可以考慮啟用 no-dns 選項。

  • 路徑: interfaces -> ethernet -> eth0 (或您的 PPPoE 介面) -> pppoe -> 0 (或您的 PPPoE 連接號) -> ipv6
  • 選項: 啟用 no-dns 選項。
    • 作用: 這樣路由器就不會向客戶端分發 ISP 提供的 IPv6 DNS 服務器地址,而是依賴其他方式 (例如客戶端使用其自身的 IPv4 DNS 服務器,或您在路由器上配置其他可靠的公共 IPv6 DNS,如 Google DNS 2001:4860:4860::88882001:4860:4860::8844)。

6. 無 DHCPv6-PD 的情況 (IPv6 NDP 解決方案)

如果您的 ISP 沒有提供 DHCPv6-PD,而僅僅通過 IPv6 NDP (Neighbor Discovery Protocol) 分配地址,您可以考慮在 EdgeRouter X 上安裝 ndppd (Neighbor Discovery Protocol Proxy Daemon) 來實現。

  • 背景: 在 OpenWRT 環境中,這通常通過安裝 ndppd 套件來實現,它會將外網 (例如 eth0) 接收到的 NDP 請求轉發到內網 (例如 br-lan)。
  • EdgeRouter X 實現:
    • EdgeRouter X 運行的是 EdgeOS (基於 Debian 的 Vyatta 分支)。
    • 您需要 SSH 登入路由器,然後嘗試安裝 ndppd
    • 安裝命令 (可能需要先更新 apt 源並獲取 root 權限):
      Bash
      sudo apt update
      sudo apt install ndppd
      
    • 配置 ndppd 安裝完成後,您需要手動編輯 ndppd 的配置文件 (通常在 /etc/ndppd.conf),指定要代理的介面 (外網介面和內網介面),並啟動服務。這部分配置會更複雜,需要參考 ndppd 的文檔或相關教程。

注意: 這種情況相對複雜,且 ndppd 並非 EdgeOS 的預設套件。在嘗試此方法之前,請確保您已了解相關風險,並知道如何通過 SSH 恢復路由器。


通過遵循以上步驟,您應該能夠在 Ubiquiti EdgeRouter X 上成功配置 IPv6,享受更快的網路連接並為未來的網路趨勢做好準備。

2020年2月23日 星期日

$ sudo service apache2 restart Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.

手贱,想解决ssl 无法访问的问题,修改apache2配置,结果出问题了:
$ sudo service apache2 restart
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
虽然找到了许多网友的解决办法,但是没有一个全套解决办法,只好耐心一个合着试验,
最终解决了。
1、重新安装apache2
$ systemctl restart apache2
$ journal -xe 
$ sudo apt-get purge apache2
$ sudo apt autoremove apache2
$ sudo apt-get purge apache2
$ sudo apt-get purge apache2*
$ sudo apt-get install apache2
$ sudo service apache2 start
2、重点在这里:
重新安装了apache2,网站正常访问了,但是php却无法正常运行,
问题是这个
php7.3没有运行,
所以:sudo  a2enmod php7.3
但是出现如下提示:
Considering dependency mpm_prefork for php7.3:
Considering conflict mpm_event for mpm_prefork:
ERROR: Module mpm_event is enabled - cannot proceed due to conflicts. It needs to be disabled first!
Considering conflict mpm_worker for mpm_prefork:
ERROR: Could not enable dependency mpm_prefork for php7.3, aborting

所以接着:
sudo a2dismod mpm_event
Module mpm_event disabled.
To activate the new configuration, you need to run:
  systemctl restart apache2

OK,解决了

2020年1月1日 星期三

installing boost 166

issue:

 # cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find Boost: Found unsuitable version "1.65.1", but required is at
  least "1.66.0" (found /usr/include)
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:391 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:2179 (find_package_handle_standard_args)
  CMakeLists.txt:39 (find_package)


-- Configuring incomplete, errors occurred!
See also "/root/trojan/build/CMakeFiles/CMakeOutput.log".
See also "/root/trojan/build/CMakeFiles/CMakeError.log".

CMake Error 是一個非常典型的庫版本不匹配問題。錯誤訊息清楚地表明,您的系統上安裝的 Boost 庫版本是 1.65.1,但您正在嘗試編譯的項目(看起來是 Trojan)要求至少 1.66.0

您提供的解決方案是正確且詳盡的:手動下載、編譯並安裝所需版本的 Boost 庫。

我將幫您將這些步驟整理成一份更清晰、更易於遵循的指南,並補充一些常見的注意事項和命令解釋。


解決 CMake 錯誤:Boost 版本不匹配問題

當您在編譯項目時遇到 CMake Error: Could NOT find Boost: Found unsuitable version "1.65.1", but required is at least "1.66.0" 這樣的錯誤,這表示您的系統上安裝的 Boost 庫版本不符合項目要求。解決方法是手動安裝符合要求的 Boost 版本。

以下是詳細的步驟:

步驟 1:下載所需版本的 Boost 庫

  1. 訪問 Boost 官方網站: 前往 Boost 官方下載頁面:https://www.boost.org/users/download/

  2. 選擇版本: 查找並下載符合項目要求或更高版本的 Boost。例如,如果項目要求 1.66.0,您可以下載 1.66.0 或任何更新的版本(例如 1.70.01.75.0 等)。通常,選擇最新的穩定版本是個不錯的選擇,除非項目明確指定了特定版本。

    • 您會看到類似 boost_1_xx_0.tar.gzboost_1_xx_0.zip 的壓縮包。推薦下載 .tar.gz 格式。
  3. 下載到您的伺服器: 您可以使用 wget 命令直接在伺服器上下載:

    Bash
    # 示例:下載 Boost 1.76.0 (請替換為您下載的實際版本號)
    wget https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz
    

    (請將 URL 替換為您實際下載的版本鏈接)

步驟 2:解壓縮 Boost 庫

  1. 創建一個臨時目錄 (可選,但推薦):

    Bash
    mkdir ~/boost_install
    mv boost_1_xx_0.tar.gz ~/boost_install/
    cd ~/boost_install/
    

    (將 boost_1_xx_0.tar.gz 替換為您下載的實際文件名)

  2. 解壓縮文件:

    Bash
    tar -zxvf boost_1_xx_0.tar.gz
    

    這會創建一個名為 boost_1_xx_0 的目錄。

  3. 進入解壓縮後的目錄:

    Bash
    cd boost_1_xx_0
    

步驟 3:編譯和安裝 Boost 庫

Boost 的編譯過程分為兩步:bootstrapb2 install

  1. 運行 bootstrap.sh 這個腳本會生成 b2 (或 bjam) 可執行文件,它是 Boost 的構建系統。

    Bash
    ./bootstrap.sh
    
    • 提示: 您可以運行 ./bootstrap.sh --help 查看更多選項,例如指定編譯器、安裝路徑等。但對於大多數情況,直接運行即可。
  2. 運行 b2 install 這將編譯 Boost 庫並將其安裝到系統的默認位置。

    Bash
    sudo ./b2 install
    
    • 注意: 這個過程會耗費一些時間,具體取決於您的系統性能。
    • 默認安裝路徑:
      • 頭文件 (headers):/usr/local/include/boost
      • 編譯後的庫文件 (libraries):/usr/local/lib

步驟 4:重新運行 CMake 配置

在 Boost 庫安裝完成後,返回到您項目 (例如 Trojan) 的 build 目錄,然後重新運行 CMake 配置命令。

  1. 返回項目 build 目錄:

    Bash
    cd /root/trojan/build
    

    (請替換為您實際的項目 build 目錄路徑)

  2. 重新運行 CMake:

    Bash
    cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
    

    現在,CMake 應該能夠找到並使用您剛剛安裝的符合版本要求的 Boost 庫,並且配置過程應該會成功完成。

故障排除 (如果 CMake 仍然找不到 Boost):

如果重新運行 CMake 後仍然遇到 Boost 找不到的問題,可能是因為 CMake 仍然優先使用了舊版本的 Boost 或沒有正確識別新安裝的路徑。您可以嘗試以下方法:

  1. 清除 CMake 緩存:build 目錄中,刪除 CMakeCache.txt 文件和 CMakeFiles 目錄,然後重新運行 CMake。

    Bash
    rm CMakeCache.txt
    rm -rf CMakeFiles/
    cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
    
  2. 手動指定 Boost 路徑 (如果需要): 如果 CMake 仍然無法找到,您可以手動指定 Boost 的根目錄和庫目錄給 CMake。

    Bash
    cmake .. \
      -DBOOST_ROOT=/usr/local \
      -DBOOST_INCLUDEDIR=/usr/local/include \
      -DBOOST_LIBRARYDIR=/usr/local/lib \
      -DENABLE_MYSQL=OFF \
      -DENABLE_SSL_KEYLOG=ON \
      -DFORCE_TCP_FASTOPEN=ON \
      -DSYSTEMD_SERVICE=AUTO
    
    • BOOST_ROOT 指向 Boost 的安裝根目錄,通常是 /usr/local
    • BOOST_INCLUDEDIR 指向 Boost 頭文件所在的目錄,通常是 /usr/local/include
    • BOOST_LIBRARYDIR 指向 Boost 庫文件所在的目錄,通常是 /usr/local/lib

通過這些詳細步驟,您應該能夠成功解決 Boost 版本不匹配的問題,並繼續編譯您的項目。

2019年5月13日 星期一

Fedora iptable firewalld selinux

Fedora Server 30 防火牆配置詳解

您在 Fedora Server 30 上遇到的遠程連接問題是許多初次接觸 firewalld 的用戶會遇到的典型障礙。以下是您解決問題的邏輯以及一些相關的說明:

1. 理解 firewalldiptables

  • firewalld (Firewall Daemon): 這是 Fedora 等 RHEL 系發行版推薦和預設的動態防火牆管理工具。它通過區域(zones)來管理網絡連接,並可以動態地添加或刪除規則,而無需重載整個防火牆。它的底層確實使用 iptablesnftables
  • iptables (IP Tables): 這是 Linux 核心自帶的網絡包過濾工具。它通過一系列的「規則鏈」來控制數據包的流向。iptables-services 是一個包,提供了管理這些規則的服務。

您遇到的問題: 默認情況下,firewalld 會啟用一些基本規則,阻止外部對大部分端口的訪問,這導致像 httpdplexmediaserver 這些服務無法從外部訪問。即使服務本身啟動了,防火牆也會攔截流量。

2. 您的解決步驟分析

您的操作思路是:禁用複雜的 firewalld,回歸到更直接、可控的傳統 iptables,並將其清空以解除所有限制。

  1. systemctl stop firewalld: 這是關鍵的第一步,它會立即停止 firewalld 服務,並移除其當前的防火牆規則。
  2. dnf install iptables-services: 安裝傳統的 iptables 服務。這個包包含了 iptables 命令工具和用於保存/載入規則的服務腳本。
  3. 重啟系統: 這一點很重要。重啟系統後,firewalld 不會再次啟動,而 iptables-services 則會接管防火牆管理。通常情況下,新安裝的 iptables-services 默認會從一個空的規則集開始。
  4. systemctl restart iptables: 確保 iptables 服務啟動並載入任何已配置的規則(此時通常是空的)。
  5. systemctl stop iptables: 這一步有點特別。它會停止 iptables 服務,但不會清除當前生效的 iptables 規則。換句話說,此時內核中的 iptables 規則仍然是您停止服務前所設定的狀態。
  6. iptables -L -n: 顯示當前內核中實際生效的 iptables 規則。您的輸出顯示所有鏈的策略都是 ACCEPT,且沒有任何自定義規則。這意味著所有流量都被允許通過

3. 您的結論與注意事項

您的結論:「這樣,就可以放心使用firewalld」

這句話可能存在筆誤,因為您實際上是禁用了 firewalld 並使用了 iptables。在您完成這些步驟後,您的系統防火牆已經處於 完全開放 的狀態,任何端口的流量都可以進入或離開。

重要注意事項:

  • 安全性風險: 您的當前配置 (Chain INPUT (policy ACCEPT)) 意味著您的伺服器對外部是完全開放的,沒有任何防火牆保護。這對於生產環境來說是非常危險的,因為它暴露了所有服務,可能成為攻擊的目標。
  • 推薦做法:
    • 如果傾向於使用 firewalld 建議重新啟用 firewalld (systemctl start firewalld && systemctl enable firewalld),然後學習如何使用 firewall-cmd 命令來開啟您需要的特定端口和服務。例如:
      Bash
      sudo firewall-cmd --permanent --add-service=http # 允許 HTTP (80 端口)
      sudo firewall-cmd --permanent --add-port=32400/tcp # 允許 Plex (默認 32400 端口)
      sudo firewall-cmd --reload # 重新載入規則
      
    • 如果堅持使用 iptables 您應該學習如何添加必要的 iptables 規則來只開放您需要的端口,並拒絕其他所有流量。這比 firewalld 更複雜,需要手動管理規則文件。 例如,要允許 SSH 和 HTTP 流量:
      Bash
      # 允許已建立的連接
      iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
      # 允許 SSH (22 端口)
      iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      # 允許 HTTP (80 端口)
      iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      # 允許 HTTPS (443 端口)
      iptables -A INPUT -p tcp --dport 443 -j ACCEPT
      # 允許 Plex (例如 32400 端口)
      iptables -A INPUT -p tcp --dport 32400 -j ACCEPT
      # 拒絕其他所有進入的流量 (非常重要!)
      iptables -P INPUT DROP
      # 保存規則
      iptables-save > /etc/sysconfig/iptables
      # 啟用 iptables 服務以在重啟時載入這些規則
      systemctl enable iptables
      systemctl start iptables
      
      請注意,上述 iptables 規則是示例,您需要根據實際需求進行調整。

2019年4月16日 星期二

RK双模鼠标产品功能操作

1、鼠标底部电源开关从off打开到BT处,进入蓝牙模式
2、长按滚轮键+左键5秒后,滚轮处绿色蓝牙指示灯闪烁松手
3、打开电源蓝牙,添加搜索设备
4、点击配对

2019年1月19日 星期六

upgrade Aria2c to 1.34 on debian


aria2c.upgrade

Debian 9.0 官方aria2c 版本仅为1.30,无法升级最新版1.34,无奈只能手动编译最新版本,以此记录:

apt-get update
apt-get install libgnutls28-dev nettle-dev libgmp-dev libssh2-1-dev libc-ares-dev libxml2-dev zlib1g-dev libsqlite3-dev pkg-config libcppunit-dev autoconf automake autotools-dev autopoint libtool git gcc g++ libxml2-dev make quilt

git clone https://github.com/aria2/aria2.git

autoreconf -i ./configure make

找到编译后的aria2c, 位于/aria2/src/aria2c
find / -name aria2c
显示如下
/aria2/src/aria2c
/usr/bin/aria2c


拷贝覆盖位于 /usr/bin/aria2c 即可

通过客户端重新启动,已经显示为最新版1.34


2019年1月5日 星期六

Synology实现视频缩略图/转码终极方法


注意:在做改动前必须备份好原文件,这只是一个好习惯而已。

安装好ffmpeg后你只需要把 /volume1/@appstore/ffmpeg/bin/ffmpeg 这个文件覆盖其它用到转码的地方即可。

第一个是视频转码:
cp /volume1/@appstore/ffmpeg/bin/ffmpeg  /volume1/@appstore/VideoStation/bin/

第二个是拍照视频缩略图:
复制代码
cp /volume1/@appstore/ffmpeg/bin/ffmpeg /usr/bin
复制代码

大乐透号码选取器

大乐透号码选取器 (带历史记录) 大乐透号码选取器 前区号码 (5个,01-35) ...