OpenWrt22.03の可変IPアドレスPPPoEでサーバーをたてる
2024-10-23 18:06:40
OpenWrt22.03の可変IPアドレスPPPoEでサーバーをたてる
ASAHIネットが提供するサービスからこういう接続にしている。
- IPv4フレッツ向け PPPoE FLETS いまではフレッツ速度計測専用。
- IPv4インターネット向けクライアント用 DS-Lite WAN (デフォルトゲートウェイ) これが一番高速だがサーバーを立てられない。
- IPv4インターネット向けサーバー用 PPPoE WANSV4 サーバーを立てられるが可変IP。DS-LiteがなければコレがWANでデフォルトゲートウェイ。
- IPv6インターネット向けクライアント用 DHCP WAN6 (デフォルトゲートウェイ) これが一番高速だがサーバーを立てられない。
ここではLANインターフェースのIPアドレスを192.168.0.254、サーバーのIPアドレスを192.168.0.3とする。www.example.com を自ドメインのWebサーバーとする。
お名前.comはIPアドレスを更新するサービスを提供しているので、これを使って動的IPでも名前解決できる。
準備
1.パッケージを入れる。
- luci-app-ddns
- ddns-scripts
- ddns-scripts-services。
2ルーティングの設定
- OpenWrt22.03でPPPoEマルチセッションにDS-Lite の「WASV4インターフェースへのルーティング準備」「WANSV4インターフェースの追加 PPPoE」
Webサーバー
- 192.168.0.3 www.example.com、httpsで立ててください。
DDNSの設定
- Services - Dynamic DNS - Information - Services - myddns_ipv4 - Editボタン
- Basic Settings - DDNS Service ProviderにでてくるメジャーDDNSをご利用の場合は、いい塩梅に設定してください。
DDNSの設定 お名前.com編
お名前.comはパッケージに入ってないが、IPアドレスをスクリプトから登録できるので、自力でなんとかできる余地がある。musashino205氏のスクリプトもあるのでお好みで好きな方を使ってください。 ここで使ったスクリプトの元ネタ: https://gist.github.com/Chirimen-Jako/
1.スクリプトを配置する。 /etc/config/update-onamae-ddns.sh
#!/bin/sh # update-onamae-ddns # https://gist.github.com/Chirimen-Jako/ # # example for www.sample.com on interface pppoe-wansv4 for onamae.com # Custom update-script: /etc/config/update-onamae-ddns.sh # # Username: $username=onamaeid # Password: $passowrd=onamepw # Domain: $domain=sample.com # Optional Parameter: $param_opt=www pppoe-wansv4 ddnsclient.onamae.com # # require: openssl userId=${username} passWord=${password} domainName=${domain} hostName=$(echo $param_opt|awk '{print $1}') ifname=$(echo $param_opt|awk '{print $2}') onamaeServer=$(echo $param_opt|awk '{print $3}') ipv4New="/tmp/DDNS_WAN_IPV4_new.txt" ipv4Now="/tmp/DDNS_WAN_IPV4_now.txt" modFile="/tmp/DDNS_modip.txt" modResult="/tmp/DDNS_mod_result.txt" modTmp1="/tmp/DDNS_mod_tmp1.txt" while [ true ]; do ifconfig ${ifname} if [ $? -eq 0 ]; then break fi echo "wait until ${ifname} is open." sleep 5 done ifconfig ${ifname} | sed 's/:/ /g' | awk '/inet addr/ {print $3}' > $ipv4New if [ ! -f ${ipv4Now} ]; then touch $ipv4Now fi cmp -s $ipv4New $ipv4Now if [ $? = 0 ]; then echo "Same IP address. (`cat $ipv4New`)" else echo "Q" | openssl s_client -connect ${onamaeServer}:65010 2>/dev/null | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der 2>/dev/null | openssl sha256 -r | awk -F' ' '{print $1}' > $pubkeyFile (echo "LOGIN USERID:$userId PASSWORD:$passWord . MODIP HOSTNAME:$hostName DOMNAME:$domainName IPV4:`cat $ipv4New` . LOGOUT . ") > $modFile cat $modFile | awk '{print $_;} /^\./ { system ("sleep 1"); }' | openssl s_client -connect ${onamaeServer}:65010 -quiet 2>/dev/null > $modResult cat $modResult | sed -e "/^000 COMMAND SUCCESSFUL$/d" -e "/^\.$/d" > $modTmp1 if [ -s $modTmp1 ]; then logger -s -t $0 "IP address update failed. See ${modResult} `cat $modResult`" rm -f $ipv4New $ipv4Now else rm $modResult logger -s -t $0 "IP address updated successfully. (`cat $ipv4Now`)->(`cat $ipv4New`)" fi rm $modTmp1 rm $modFile fi mv -f $ipv4New $ipv4Now chmod 600 $ipv4Now
2.Services - Dynamic DNS - Information - Services - myddns_ipv4 - Editボタン
- Basic Settings - Enabled: チェックあり
- Basic Settings - Lookup Hostname: www.example.com
- Basic Settings - DDNS Service provider: -- custom --
- Basic Settings - custom update-script: /etc/config/update-onamae-ddns.sh
- Basic Settings - Domain: example.com
- Basic Settings - Username: (お名前.comから提供されたユーザー名)
- Basic Settings - Password: (お名前.comから提供されたパスワード)
- Basic Settings - Optional Parameter: www pppoe-wansv4 ddnsclient.onamae.com
- ホスト名
- 可変IPアドレスのインターフェース名
- お名前.comのサーバー名
- お名前.comの更新キー
- Advanced Settings - IP address source: Network
- Advanced Settings - Network: wansv4
- Advanced Settings - DNS-Server: 01.dnsv.jp
PPPoEからサーバーへのポートフォワーディング設定
- Network - Firewall - Port Forwards - Addボタン
ここではhttpsを例にしているが、複数のプロトコルを設定してよい。
- Name: HTTPS
- Protocol: TCP UDP
- Source zone: wan
- External Port: 443
- Destination Zone: lan
- Internal IP address: 192.168.0.3
- Network - Firewall - Traffic Rules - Addボタン
- General Settings - Name: Policy-sv4-sv
- General Settings - Protocol: TCP UDP ICMP IGMP
- General Settings - Source zone: lan
- General Settings - Source address: 192.168.0.3
- General Settings - Destination zone: lan
- General Settings - Destination address: !192.168.0.0/24
- General Settings - Action: apply firewall mark
- General Settings - Set mark: 0x20