4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

二重ルータでも自宅サーバがしたい!(M1 mac 対応)

Last updated at Posted at 2021-05-29

自宅サーバを構築したいけれど、マンションのネット回線だとできない...そんな悩みを抱えている人も少なくないはずです。今回はそんな環境でも自宅サーバを構築することができたのでまとめてみます。

問題

  • サーバーを公開したいのに、二重ルータのため公開できませんでした。
  • Hamachiは M1 macには対応していませんでした。(2021年5月現在)
  • クライアント側のポートが固定できませんでした。1

解決策

VPSを使ってVPNサーバを構築しました。
network (2).png

事前準備

自宅サーバのIPアドレス固定

初期設定では機器のIPアドレスが動的に変更されてしまうのでIPアドレスを固定します。
システム環境設定>ネットワーク>Wi-Fi>詳細...>TCP/IP と進み、以下のように設定します。
スクリーンショット 2021-05-20 22.53.43.png

VPN構築

VPS上でVPNサーバを構築する

コスパがとても良かったので、ConoHaのVPSを借りました。こちらの記事を参考にOpenVPNをVPSにインストールしました。CentOS8だと動かなかったためCentOS7にしました。2

ポートフォワードの設定

外部からWebサーバへのトラフィックを自宅サーバに流すように設定します。
こちらの記事のClientPCをVPSのグローバルIP、WebServerを自宅サーバに読み替えてください。

今回は4230/udpを使用したので、以下のように設定しました。

external (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: ssh
  ports: 1194/udp 4230/udp
  protocols: 
  masquerade: no
  forward-ports: port=4230:proto=udp:toport=4230:toaddr=10.8.0.2
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: tun0
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

自宅サーバ編

そのままの設定だとサーバとしては動作するものの、ブラウザやzoomなど、他のソフトウェアが一切使えなくなってしまいました。完全にサーバ専用にするつもりはなかったため、サーバーとしての通信以外はVPNを経由しないようにしました。

OpenVPNのコンフィグ設定

OpenVPNのクライアント(自宅サーバに該当)のルーティングテーブル設定は、VPN接続中のみトラフィックがVPN経由になるよう変更されます。どのような設定になっているかは、VPN接続中にnetstatコマンドで確認します。

$ netstat -rn

Routing tables

Internet:
Destination        Gateway            Flags        Netif Expire
0/1                10.8.0.1           UGSc         utun6       
default            192.168.0.1        UGSc           en1  
128.0/1            10.8.0.1           UGSc         utun6       

VPNの初期設定の場合、0/1 10.8.0.1 128.0/1 10.8.0.1とあるため、ルーティングテーブルの他の項目に当てはまらない通信はVPN(10.8.0.1)に転送されていることがわかります。

そこで、VPNサーバの設定を変更します。
/etc/openvpn/server.conf のredirect-gatewayの設定をコメントアウトしました。

# push "redirect-gateway def1 bypass-dhcp"

VPNサーバを再起動して適用します。自分が試した時はfirewallが再始動せず、VPNに接続できませんでした。その場合はfirewallも再始動させてください。

まとめ

ここまでの設定で通常のPCとしての使用をしつつ、サーバとして公開したいポートのみ公開することが出来るようになりました。

助けてくれた人たち

@YYBatt さん : 色々なアドバイス、デバッグ等、全体的に助けてもらいました。
きょー。 / Yukiho さん : ConoHaへのOpenVPN構築/Firewall設定で助けてもらいました。

  1. UDPホールパンチングができなかった

  2. https://qiita.com/jre233kei/items/51c22d17ba07ab4205df

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?