2023年10月23日月曜日

ホームサーバーの環境移行(6)

外部からのアクセス設定

人生何があるかわからない。
素敵なことも、望まないことも、同時にやってきた。情緒どうすんのさ。

設定

  • 外部用のIPv4ルーターにて内部IP静的付与
  • メトリック設定
  • ポートフォアード設定
  • mydns.jpの更新設定
  • nextcloud側の設定

外部用のIPv4ルーターにて内部IP静的付与

特に備忘録なし

メトリック設定

https://pcvogel.sarakura.net/2021/01/15/32107

$ adeno@blackcore:~$ route -n
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
0.0.0.0         192.168.1.1     0.0.0.0         UG    102    0        0 enp1s0
0.0.0.0         192.168.2.1     0.0.0.0         UG    103    0        0 enp4s0
192.168.1.0     0.0.0.0         255.255.255.0   U     102    0        0 enp1s0
192.168.2.0     0.0.0.0         255.255.255.0   U     103    0        0 enp4s0

enp4s0が外部用
enp1s0が内部用

デフォルトゲートウェイの変更
192.168.2.0/24をデフォルトになるように変更したい。

このあたりを思い出して
https://continue-to-challenge.blogspot.com/2019/06/ipoe.html

adeno@blackcore:~$ nmcli 
enp4s0: 接続済み から 有線接続 1
        "Realtek RTL8111/8168/8411"
        ethernet (r8169), A8:A1:59:**:**:**, hw, mtu 1500
        ip4 デフォルト
        inet4 192.168.2.21/24
        route4 192.168.2.0/24 metric 101
        route4 default via 192.168.2.1 metric 101

enp1s0: 接続済み から 有線接続 2.5G
        "Realtek RTL8125 2.5GbE"
        ethernet (r8169), 88:C9:B3:**:**:**, hw, mtu 1500
        ip6 デフォルト
        inet4 192.168.1.21/24
        route4 192.168.1.0/24 metric 102
        route4 169.254.0.0/16 metric 1000
        route4 default via 192.168.1.1 metric 102

wlp5s0: 切断済み
        "Intel Wireless-AC 3168NGW"
        wifi (iwlwifi), F0:57:A6:0E:53:99, hw, mtu 1500

adeno@blackcore:~$ sudo nmcli connection modify "有線接続 1" ipv4.never-default no
adeno@blackcore:~$ sudo nmcli connection modify "有線接続 1" ipv4.ignore-auto-routes no
adeno@blackcore:~$ sudo nmcli connection modify "有線接続 2.5G" ipv4.never-default yes
adeno@blackcore:~$ sudo nmcli connection modify "有線接続 2.5G" ipv4.ignore-auto-routes yes
adeno@blackcore:~$ sudo nmcli con up 有線接続\ 1
adeno@blackcore:~$ sudo nmcli con up 有線接続\ 2.5G 

ポートフォアード設定

外部22ポートを内部のサーバーIPの22へ転送

などなど

やっぱりいろいろ忘れるね。。。

ポート制限

サービス名 ポート
certbot 80/tcp,443/tcp
nextcloud 20443/tcp
ssh 22/tcp
samba

mydns.jpの更新設定

定期的に実行するのと、グローバルIPが変わったタイミングで実行したい。

定期実行

前回覚えたsystemd.timerで定期的に実行する

$ cat mydns_update.sh 
#!/bin/bash
#****.mydns.jp
wget -O - --http-user=****** --http-password=***** https://ipv4.mydns.jp/login.html

$ sudo cat /etc/systemd/system/mydns.renew.service 
[Unit]
Description=MyDNS.jp Renew
RefuseManualStart=no
RefuseManualStop=yes

[Service]
Type=oneshot
ExecStart=/home/adeno/BlackCoreEnv/mydns_update.sh
$ sudo cat /etc/systemd/system/mydns.renew.timer 
[Unit]
Description=MyDNS.jp Renew

[Timer]
OnBootSec=5min
OnUnitActiveSec=1d

[Install]
WantedBy=timers.target

グローバルIPの変更時に実行

グローバルIPを調べるサービスglobalip.meを使わせてもらう

$ cat chk_gip.sh 
#!/bin/bash

#------------------------------------------------------
workpath=/home/adeno/BlackCoreEnv
logname=chkgip.log
mydns_update=$workpath/mydns_update.sh

#------------------------------------------------------
oldip_path=$workpath/gip_old.txt
log_path=$workpath/$logname

echo "Glocal IP 更新チェック" | tee $log_path
date | tee -a $log_path

touch $oldip_path
oldip=`cat $oldip_path`

newip=`curl -s globalip.me | sed '1!d'`


if [ "$newip" != "$oldip" ] ; then
        #echo "$newip" | tee -a $oldip_path
        echo "Global IP の変更検出:"$oldip" → "$newip | tee -a  $log_path
        echo "mydns.jpに通知" | tee -a $log_path
        $mydns_update | tee -a $log_path
        echo $newip > $oldip_path

else
        echo "Global IP に変更なし:"$newip | tee -a $log_path
fi

echo "終了" | tee -a $log_path

$ sudo cat /etc/systemd/system/globalip.renew_check.service 
[Unit]
Description=Global IP Renew Check
RefuseManualStart=no
RefuseManualStop=yes

[Service]
Type=oneshot
ExecStart=/home/adeno/BlackCoreEnv/chk_gip.sh
$ sudo cat /etc/systemd/system/globalip.renew_check.timer 
Global IP Renew Check

$ cat /etc/systemd/system/docker-nextcloud.cert.renew.timer 
[Unit]
Description=Docker NextCloud Cert Renew

[Timer]
OnBootSec=3min
OnUnitActiveSec=5m

[Install]
WantedBy=timers.target

Written with StackEdit.