私たちはホームルーターでサイトをホストしています

私は長い間、Webサーバーを最初からセットアップしてインターネットでリリースすることにより、インターネットサービスに「触れ」たいと思っていました。この記事では、ホームルーターを狭い機能のデバイスからほぼ本格的なサーバーに変換した経験を紹介します。



それはすべて、忠実に機能していたTP-Link TL-WR1043NDルーターがホームネットワークのニーズを満たすことができなくなったという事実から始まりました。ルーターに接続されたドライブ上の5 GHz帯域とファイルへの迅速なアクセスが必要でした。専門のフォーラム(w3bsit3-dns.com、ixbt)、レビューのあるサイト、地元の店舗の範囲を確認した後、Keenetic Ultraを購入することにしました。



この特定のデバイスを支持して、所有者からの良いレビューが機能しました:



  • 過熱の問題はありません(ここでは、Asus製品を放棄する必要がありました)。
  • 仕事の信頼性(ここではTP-Linkを取り消しました)。
  • セットアップの容易さ(私は対処せずにMikroTikに取り消し線を引いた)。


私は短所に同意しなければなりませんでした:



  • WiFi6はありません。将来を見越して機器を持ちたかったのです。
  • 4 LANポート、もっと欲しかったのですが、これはもはやホームカテゴリではありません。


その結果、次の「サーバー」を取得しました。







  • 左側はRostelecomの光端末です。
  • 右側は実験用ルーターです。
  • ルータへの配線はm.2 SSD 128 GBの周囲に接続され、aliexpressのUSB3ボックスに配置されます。これで壁にきちんと固定されます。
  • フォアグラウンドには、ソケットを独立して切断できる延長コードがあり、そこからのワイヤーは安価なUPSに接続されています。
  • 背景にはツイストペアの束があります-アパートの改修の段階で、すぐにRJ45ソケットを計画しました。


だから、私たちは機器を持っているので、それを設定する必要があります:







  • ルーターの初期設定には約2分かかります。プロバイダーに接続パラメーターを指定します(私の光端末はブリッジモードに切り替えられ、PPPoE接続はルーターによって確立されます)、WiFiネットワークの名前とパスワード-基本的にすべて、ルーターが起動して機能します。






「ネットワークルール-転送」セクションで、ルーター自体のポートに外部ポートの転送を配置します。











これで、「高度な」部分に進むことができます。これは、ルーターに必要なものです。



  1. ホームネットワーク用の小型NASの機能。
  2. 複数のプライベートページのWebサーバーとして機能します。
  3. 世界中のどこからでも個人データにアクセスするためのパーソナルクラウド機能。


1つ目は組み込みツールで実装されており、ほとんど労力を必要としません。









その後、我々はルータにドライブを接続し、システムモニタ画面上で、それを観察します。







「アプリケーション」セクションの「USBディスクやプリンタ」をクリックし、「Windowsネットワーク」セクションの共有を設定:







そして、私たちは一緒に使用することができ、ネットワークリソースを持っていますWindowsのコンピューター、必要に応じてディスクとして接続:net use y:\\ 192.168.1.1 \ SSD / persistent:yes



このような即興型NASの速度は家庭での使用には十分であり、WiFiを介してすべてのギガビットを使用し、速度は約400-500です。メガビット。







ストレージを設定すると、その後、私たちが必要とする、サーバーを構成するために必要なステップの一つである:

- ドメインを購入します静的IPアドレス(これは動的DNSを使用してこれなしでも実行できますが、既に静的IPを持っているため、無料のYandexサービスを使用する方が簡単であることがわかりました- そこドメインを委任することで、DNSホスティングとメールをドメインに取得します);







- DNSサーバの設定と自分のIPを指してAレコードを追加します。それは、







私たちは同時にルータを設定している、有効にするには、ドメインとDNS委任設定のために数時間を要します。



まず、ルーターに必要なパッケージをインストールできるEntwareリポジトリをインストールする必要があります。私はこの指示に従いました、FTP経由でインストールパッケージをアップロードせず、以前に接続したネットワークドライブに直接フォルダーを作成し、通常の方法でそこにファイルをコピーしました。



SSH経由でアクセスした後、passwdコマンドでパスワードを変更し、opkg install [package names]コマンドで必要なすべてのパッケージをインストール







します。構成時に、次のパッケージがルーターにインストールされました(opkg list-installedコマンドの出力)。



パッケージリスト
bash — 5.0-3

busybox — 1.31.1-1

ca-bundle — 20190110-2

ca-certificates — 20190110-2

coreutils — 8.31-1

coreutils-mktemp — 8.31-1

cron — 4.1-3

curl — 7.69.0-1

diffutils — 3.7-2

dropbear — 2019.78-3

entware-release — 1.0-2

findutils — 4.7.0-1

glib2 — 2.58.3-5

grep — 3.4-1

ldconfig — 2.27-9

libattr — 2.4.48-2

libblkid — 2.35.1-1

libc — 2.27-9

libcurl — 7.69.0-1

libffi — 3.2.1-4

libgcc — 8.3.0-9

libiconv-full — 1.11.1-4

libintl-full — 0.19.8.1-2

liblua — 5.1.5-7

libmbedtls — 2.16.5-1

libmount — 2.35.1-1

libncurses — 6.2-1

libncursesw — 6.2-1

libndm — 1.1.10-1a

libopenssl — 1.1.1d-2

libopenssl-conf — 1.1.1d-2

libpcap — 1.9.1-2

libpcre — 8.43-2

libpcre2 — 10.34-1

libpthread — 2.27-9

libreadline — 8.0-1a

librt — 2.27-9

libslang2 — 2.3.2-4

libssh2 — 1.9.0-2

libssp — 8.3.0-9

libstdcpp — 8.3.0-9

libuuid — 2.35.1-1

libxml2 — 2.9.10-1

locales — 2.27-9

mc — 4.8.23-2

ndmq — 1.0.2-5a

nginx — 1.17.8-1

openssl-util — 1.1.1d-2

opkg — 2019-06-14-dcbc142e-2

opt-ndmsv2 — 1.0-12

php7 — 7.4.3-1

php7-mod-openssl — 7.4.3-1

poorbox — 1.31.1-2

terminfo — 6.2-1

zlib — 1.2.11-3

zoneinfo-asia — 2019c-1

zoneinfo-europe — 2019c-1



おそらくここには不必要なものがあるかもしれませんが、ドライブには多くのスペースがあるので、私はそれを理解しませんでした。



パッケージをインストールした後、nginxを構成します。2つのドメインを試してみました。2番目のドメインはhttpsで構成されており、スタブはハングしています。ルータの管理パネルは通常のポートでハングするため、80および443の代わりに81および433内部ポートが使用されます。



etc / nginx / nginx.conf
user  nobody;
worker_processes  1;
#error_log  /opt/var/log/nginx/error.log;
#error_log  /opt/var/log/nginx/error.log  notice;
#error_log  /opt/var/log/nginx/error.log  info;
#pid        /opt/var/run/nginx.pid;

events {
    worker_connections  64;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  /opt/var/log/nginx/access.log main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;

server {
    listen 81;
    server_name milkov.su www.milkov.su;
    return 301 https://milkov.su$request_uri;
}

server {
        listen 433 ssl;
        server_name milkov.su;
        #SSL support
        include ssl.conf;
        location / {
            root   /opt/share/nginx/html;
            index  index.html index.htm;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
            }
        }
}




etc / nginx / ssl.conf
ssl_certificate /opt/etc/nginx/certs/milkov.su/fullchain.pem;
ssl_certificate_key /opt/etc/nginx/certs/milkov.su/privkey.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /opt/etc/nginx/dhparams.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_stapling on;






サイトがhttpsで動作するように、私はよく知られた脱水スクリプトを使用し、この指示に従ってインストールしましたこのプロセスによって問題が発生することはありませんでした。スクリプトのテキストでルーターで機能するには、 / opt / etc / ssl / openssl.cnf ファイルの行をコメントアウトする必要があるという事実だけに遭遇しました



[openssl_conf]
#engines=engines


また、ルーターでコマンド "openssl dhparam -out dhparams.pem 2048"を使用してdhparams.pemを生成すると2時間以上かかることに注意してください。進行状況インジケータがなければ、忍耐力を失って再起動したことになります。



証明書を受け取ったら、 "/ opt / etc / init.d / S80nginx restart"コマンドでnginxを再起動します。原則として、これでセットアップは完了しますが、サイトはまだ存在していません。/share/nginx/htmlディレクトリにindex.htmlファイルを配置すると、スタブが表示されます。



<!DOCTYPE html>
<html>
<head>
<title> !</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1> !</h1>
<p>    ,   .</p>
</body>
</html>




情報を美しく配置するには、私などの非専門家が既製のテンプレートを使用する方が簡単です。さまざまなディレクトリを長時間検索した後、templatemo.comを見つけました-必須の帰属を必要としない無料のテンプレートが豊富にあります(インターネットではまれですが、ライセンスのほとんどのテンプレートではリソースへのリンクを保持する必要があります)それらがどこから得られたか)。



適切なテンプレートを選択します-さまざまな場合があり、アーカイブをダウンロードして、/ share / nginx / htmlディレクトリに解凍します。これをコンピューターから実行し、テンプレートを編集できます(構造を壊さないために、HTMLに関する最小限の知識が必要です)。下の図に示すようにグラフィックスを置き換えます。







要約:ルーターは、基本的に軽量サイトをホストするのに非常に適しています。高負荷が予想されない場合は、phpインストールして、より複雑なプロジェクトを試すことができます(nextcloud / owncloudを見ると、そのようなハードウェアに正常にインストールされているようです)。パッケージをインストールする機能は、その有用性を高めます。たとえば、ローカルネットワーク上のPCのRDPポートを保護する必要があり、ルーターにノックドを配置した場合、PCへのポート転送はポートノック後にのみ開かれました。



なぜ通常のPCではなくルーターなのですか?ルーターは、多くのアパートで24時間体制で動作する数少ないコンピューターハードウェアの1つです。ホームルーターは通常、完全に無音であり、1日あたり100回未満の訪問でライトサイトに負荷をかけることはありません。



All Articles