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)) 最新