OpenWRTルータへのSSH接続
MAP-E対応にするためには、SSH接続でのリモート操作が必須です。以下SSH接続後に必要となるコマンドとMAP-Eに対応するために編集が必要なファイルを列挙します。
ルータへの接続
$ ssh [email protected]
ファイヤーウォールルールのリロード(システムデーモン)
# /etc/init.d/firewall reload
# service firewall reload
ファイヤーウォール設定ファイル
/etc/config/firewall
ネットワーク設定ファイルのリロード(システムデーモン)
#/etc/init.d/network/reload
# service network reload
ネットワーク設定ファイル
/etc/config/network
パッケージアップデート、アップグレード、インストール
# opkg update
# opkg upgrade <package_name>
# opkg install <package_name>
ファイヤーウォールコマンド:nft, fw4
OpenWRTのファイヤーウォール fw4
の実体は、nftables
のテーブル "table inet fw4”
を作成・編集し、nftablesを起動・停止、設定ファイルの再読込などを行うスクリプトです。(/sbin/fw4)
ファイヤーウォール : fw4
設定例
ファイヤーウォールのルール追加は、uci
コマンドか nft
コマンドで行います。
全テーブルルール確認
# nft list ruleset
全ルールの削除
# nft flush ruleset
fw4
が実行するルールセット
# fw4 print
table inet fw4
flush table inet fw4
table inet fw4 {
#
# Defines
#
....................
....................
#
# User includes
#
include "/etc/nftables.d/*.nft"
.....................
....................
ルール追加は、デフォルトで読み込まれる設定ファイル
/etc/nftables.d/*.nft
を作成することでも可能です(ただしテーブル inet fw4
限定です)。
MAP-Eを導入する場合、割当てられたパブリックIPv4のポート郡に効率的に通信パケットを割振るため(+ pingを実行可)、ロードバランスルールをICMP,TCP,UDPの各プロトコルに適用したテーブルを追加します。
table inet mape {
chain srcnat {
type nat hook postrouting priority filter; policy accept;
ip protocol icmp oifname "map-wan6mape" snat ip to 10.20.30.40:numgen inc mod 240 map { 0 : xxxx, 1 : xxxx, ......., 239 : xxxx }
ip protocol tcp oifname "map-wan6mape" snat ip to 10.20.30.40:numgen inc mod 240 map { 0 : xxxx, 1 : xxxx, ......., 239 : xxxx }
ip protocol udp oifname "map-wan6mape" snat ip to 10.20.30.40:numgen inc mod 240 map { 0 : xxxx, 1 : xxxx, ......., 239 : xxxx }
}
}
このテーブルを追加する以下のスクリプトを /lib/netifd/proto/map.sh と入替えます。
# cd /lib/netifd/proto
# cp map.sh map.sh.old (バックアップ)
# vi map.sh (内容を削除してコピー&ペースト)
# nft flush ruleset (全ルールセット削除)
# service network restart (ネットワーク再起動)
注)OpenWRTのファイヤーウォール fw4
は、ルールセットテーブル inet fw4
のみ管理するため、上記スクリプトでは再起動する度にテーブル inet mape
にルールが追加されてしまいます。
修正)下記箇所にテーブルを削除する条件文スクリプト if ~ nft delete table inet mape ~fi
追加
/lib/netifd/proto/map.sh
#------------------------------------
#MODIFICATION 2: Create mape table
#------------------------------------
if nft list tables | grep -q "table inet mape"; then
nft delete table inet mape
fi
nft add table inet mape
nft add chain inet mape srcnat {type nat hook postrouting priority 0\; policy accept\; }
#------------------------------------
#END MODIFICATION 2
#------------------------------------