追記

野良犬日記 2.1

RDF/RSS
この日記の検索

最近のツッコミ:


2021-07-25 (Sun) [長年日記]

_ [srv]OpenWRTで直接公開する

古い PC とか使うと熱暴走が怖いし、いろいろ面倒になってきたので、OpenWRT 自体を公開しちゃう方法も調べてみた。(そのまま公開するかどうかは保留中)

WAN が一つなら問題ないけど、普段 IPv6 / DS-Lite を出口にしつつ、PPPoE への要求にだけ (DS-Lite 側じゃなくて) PPPoE 側で答えるようにするのは結構難しかった。

iptables で mark 付けたりして、うまくできるのかもしれないけど、よく分からなかった。

mwan3

けっきょく mwan3 を使った。

DS-Lite と PPPoE に metric を振っておいて、policy と rule を作っていく。

ぜんぶ書きかえるのは面倒だったので、PPPoE は wanb_only という policy、DS-Lite 優先は wan_wanb という policy を流用した。

ルールは順番が大事なので、

config rule 'httpd'
       option dest_ip '0.0.0.0/0'
       option family 'ipv4'
       option proto 'tcp'
       option src_ip '192.168.1.1'
       option src_port '8080,8443'
       option sticky '0'
       option use_policy 'wanb_only'

config rule 'default_rule_v4'
       option dest_ip '0.0.0.0/0'
       option family 'ipv4'
       option proto 'all'
       option sticky '0'
       option use_policy 'wan_wanb'

みたいな感じで、特例を先に書くみたい。

firewall

あとは普通に firewall で

config rule
       option name 'Allow-HTTP'
       option src 'pppoe'
       option family 'ipv4'
       option proto 'tcp'
       option dest_port '80 443'
       option target 'ACCEPT'

config redirect
       option name 'http'
       option src 'pppoe'
       list proto 'tcp'
       option src_dport '80'
       option dest_port '8080'
       option dest 'lan'
       option target 'DNAT'
       option dest_ip '192.168.1.1'

みたいな感じでいいんじゃないかな。

lan から pppoe を通って出られるようになっていれば、 pppoe の zone の既定では input も forward も ACCEPT する必要がない。 いまどき input 開けてて問題なのかどうかは知らない。

uhttpd

LuCI を公開することはないだろうから、uhttpd は listen_http='0.0.0.0:80' になっているのを '192.168.1.1:80' とかに絞っておくほうが分かりやすそう。 私なら、そうしておいても絶対どっちがどっちか分からなくなる気がするけど。

ddns と acme

LuCI で ddns の設定をしたりステータス確認ができたりするのは、やっぱり楽。

Let's encrypt の acme も LuCI から設定できるみたいだけど、こちらはディスクが一杯になりそうだから試していない。acme っていうパッケージを入れて設定ファイルから手作業でやって /etc/init.d/acme start して数分後に logread するのも、そんなに手間ではない。


2021-02-28 (Sun) [長年日記]

_ [srv]OpenWRTでDMZ専用PPPoE接続を併設

Atermには無線だけ担当してもらって、 細かいことはOpenWRTにやってもらおうと思う。

transixまでは情報も多く、すんなりできた。

IPv6でDNSサーバ指定とかを広告している仕組みがわからず 曖昧に済ませている部分もあるが、とにかく通信はできてる。

悩んだけど、wanと同じ場所(eth0.2だったかな)に pppoeインタフェースも作れて、ddnsも動いた。

メトリックが同じだと普通にそっちを使われてしまいかねないので、 PPPoEのメトリックは少し大きい数字にしておいた。

で、物理ポートの一つをbr-lanから除外しvlanを分けて、 固定アドレスを与えるようにしてから そこにポートフォワード等を設定したんだけど、 LAN内しか通信できなかった。

たしかに、これだけだと出口がないから仕方ないか。 とはいえ、面倒な設定が必要なのはイヤだなとか、 mwan3というのが必要になるのかとか考えつつ調査した。

結果、どうも(L)uCiでは対応していないが、 mwan3など別パケジは不要らしかった。

ip routeでdevを指定するということで、 https://blog.misosi.ru/2019/12/02/openwrt-mape の最後の方にあるようなスクリプトを作って、やっと通じた。


2021-01-24 (Sun) [長年日記]

_ 数十人規模のzoom会議だとatermルータのせいで音が切れる?

image 1~10人ぐらいのzoom会議なら何も問題ないみたいなんだけど、 30人ぐらいになってくると音が切れやすい気がする。 話し始めが消えていることが多いけど、途中で切れているときもある。 映像は動いているのに音だけ止まる、ということも多い。

よく分からないけど、aterm wg1900hp2 にしてからこういうことが多い気がする。 naptタイマーを短くしても解消されなかった。 zoomはudpがだめならtcpで接続してくれるというので、試しにudpの8801をブロックしてみたら安定した。

でも画面共有とかでは不安定なときがあるんだよなあ。 画面共有からギャラリービューに戻るときは特に、udpよりすごく遅いし。

これならスマホ4gの方が安定してるんだけど、どうしてくれようか。 処理速度がボトルネックってわけじゃないなら、古いルータにopenwrtでも入れて調整しようかな。


2020-08-29 (Sat) [長年日記]

_ [srv]Alpine Linux 導入の記録

Windows とマルチブートしようと思ったけど、うまくいかなかった。インストール自体はできているはずだけど、ブートさせる方法がわからなかった。ブートまわりに詳しくて grub メニューとかを自分で書ける人ならできるのかも。ぼくは諦めて HDD をまるごと使うことにした。

インストール後は setup-* で設定できるけど、その場限りで apk パッケージもアンインストールしてしまうことが多いみたいなので、恒久的な設定をしたければ自分で apk add していく必要がありそう。たとえば dhcp とか wifi とか再起動したら動かなくてびっくり。公式文書はまあまああるので、それに従えばいい。

awall は書きやすい json だけど、コマンドがよくわからない。とにかく translate して activate したら動いているからいいや。直接 tcp の何番ポートって指定することはできないみたいで、まず service を定義してからその名前で filter するので、見通しは良い。あとから「何だっけ……」ってならないと思う。

ほとんどの apk には標準で man が含まれないので、man を見たければ *-doc とかをインストールしなければいけない。

openrc はシンプルで良い。追加するときも init.d に自分で簡単に書けるから助かる。

sshd とか nginx とかは、ほどほどにセキュアなデフォルトが指定されているようなので、使う機能を有効にしていく程度の設定作業で使っても大丈夫ぽい。

全体的に、「こういうのでいいんだよ」っていう感じ。OpenBSD と同じくらいストレスフリー。ドキュメントがもうちょっとちゃんとしていれば花丸。

そうそう、ubuntu-server は実機に入れることが想定されていないのか、なんかよくわからないエラーでインストールすらできなかった。格好いいインストーラなんて要らないね。


2020-08-28 (Fri) [長年日記]

_ [srv]nginx に直接 IP アドレスでアクセスできないように

お試しのサーバのため、ドメイン名とサブディレクトリ名を知っている人にだけアクセスできるようにしたいと思ったので、こんな雰囲気にして様子を見てみようと思う。これで letsencrypt certbot の更新とか、できるのかな

limit_req_zone $binary_remote_addr zone=slowhttp:1m rate=30r/m;

server {
       listen 80 default_server;
       limit_req zone=slowhttp;
       server_name _;
       return 404;
}

server {
       listen 80;
       limit_req zone=slowhttp burst=3;
       server_name 本物ドメイン名;
       return 301 https://$server_name$request_uri;
}

server {
       listen 443 default_server;
       ssl_certificate でっちあげ自己署名.cert;
       ssl_certificate_key でっちあげ自己署名.key;
       limit_req zone=slowhttp;
       server_name _;
       return 404;
}

server {
       listen 443 ssl http2;
       server_name 本物ドメイン名;
       ssl_certificate /etc/letsencrypt/live/本物ドメイン名/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/本物ドメイン名/privkey.pem;
       location / {
               limit_req zone=slowhttp burst=5;
               root /var/www/localhost/htdocs;
       }
       location /隠しサブディレクトリ/ {

2002|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|10|11|12|
2011|02|04|05|06|07|08|09|10|11|12|
2012|01|03|04|05|06|09|11|12|
2013|02|03|09|10|11|
2014|02|03|04|06|09|
2015|11|
2016|01|04|09|10|
2017|04|05|07|
2018|04|08|12|
2019|07|08|10|
2020|04|05|06|07|08|
2021|01|02|07|