株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

マンションなどの場合は、ポート開放できなかったりの制限があるので、一般的なルートで自宅サーバを公開することができないです。
ただ、以下のような構成にすることで間接的に自宅サーバを公開することができます

VPNサーバでWebサーバを公開し、リバースプロキシして、内部のサーバにルーティングをします。
内部のサーバVPNクライアントとして、VPNサーバに接続することで、お互いに通信できるようにします。

まず、VPNサーバを構築します。
OpenVPNをインストール

有志の方が提供してくれているOpenVPNインストールスクリプトを実行します。

wget https://raw.githubusercontent.com/Angristan/openvpn-install/master/openvpn-install.sh -O openvpn-install.sh && bash openvpn-install.sh

ipv6だけオフにしてます。

1194ポートを解放します。

firewall-cmd --add-port=1194/udp --permanent
sudo firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload

ovpnファイルが/rootにできていると思うので、それを回収します。

duplicate-cnは一つのプロファイルを複数クライアントで使いまわすことができる。厳密にいうと、秘密鍵を使いまわすことを許容するというもの。
client-to-clientは、通常はクライアントからサーバへの通信のみだけれど、その逆も許可するというもの。今回の設定では必要。
/etc/openvpn/server.conf

duplicate-cn
client-to-client

リバースプロキシとしてNginxをインストールします。

dnf -y install nginx
dnf -y install nginx-mod-stream

/etc/nginx/nginx.confに追記します。
upstreamで指定するサーバは内部サーバのIPを指定する。

stream {
    upstream naibuserver {
        server 10.8.0.2:80;
    }

    server {
       listen 0.0.0.0:8080;
       proxy_pass naibuserver;
    }
}

続いて、内部サーバを作ります。

openvpnclientをインストール

dnf -y install epel-relase
dnf -y install --enablerepo=epel openvpn

VPNサーバに接続

openvpn ./Vamdemic.ovpn

ipアドレスを確認すると、tun0というネットワークインターフェースが登場しているはず。
この状態であればVPN接続OK。

[root@compute2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:0b:b3:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.173/24 brd 192.168.50.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
    link/ether 00:15:5d:0b:b3:0f brd ff:ff:ff:ff:ff:ff
4: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 6e:60:35:cb:65:70 brd ff:ff:ff:ff:ff:ff
5: br-eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:15:5d:0b:b3:0f brd ff:ff:ff:ff:ff:ff
6: br-int: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 76:33:9b:98:cb:47 brd ff:ff:ff:ff:ff:ff
15: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none
    inet 10.8.0.2/24 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::505b:9b2f:2cf4:d0f5/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

テスト用にhttpdをインストール

dnf -y install httpd
systemctl stop firewalld

VPNサーバのIP:8080にアクセスすると、ApacheのWelcomeページが表示されるはず。

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)