4MB ROMを備えたルーター用のOpenWrt + VPNclient

こんにちは、Habr!



最近、OpenVPNを介してホームネットワークのすべてのユーザーにインターネットアクセスを提供する必要がありました。 当初は、Linux Centos 6を搭載した古代のIBM NetVista 6646-Q1Gがこれらの目的で使用されていました。



彼はこの仕事にうまく対処しましたが、彼らが言うように、完璧に制限はありません。 もっとコンパクトなものに置き換えたかったのです。 当初、選択はRaspberry Pi Model Bで行われましたが、現在のサーバーが実行する必要のあるタスクを正常に処理したため、50ドルの価格は恥ずかしいものでした。 私は代替案を模索し始めました。 そして、私には思えたように、理想的なソリューション-OpenVPNクライアントを含むルーター+ DD-WRTファームウェアが見つかりました。 次は、ルーターを選択する番です。 TP-Link WR841Nに決めましたデータベース検索は、DD-WRTがそれをサポートすることを示しました。



文字通り同じ日に、デバイスを購入してステッチしました。 しかし、ここで私は失望しました-[VPN]タブのWebインターフェイスには、OpenVPNクライアントを構成するオプションがありませんでした。 Googleはこの不正の理由をすぐに発見しました:「 OpenVPNは少なくとも8MBのフラッシュを備えたユニットでのみ利用可能です(Broadcom VPNビルドを除く) 」。

賢明なこととして、 契約書を注意深く読んでください。



さて、それはさらに興味深いものです。 代替ファームウェアをすばやく検索した結果、 OpenWRTが見つかりました 。 DD-WRTとの違いは、優れたリポジトリを備えたopkgパッケージマネージャーと、ニーズに合わせてシステムを柔軟に構成できることです。 実際、これは非常に重いライトバージョンのLinuxです。



OpenWRTでは、OpenVPNの設定はそのままでは機能しませんでした-問題はDD-WRTと同じです。 しかし、このファームウェアのアーキテクチャのおかげで、すべてがうまくいくという希望がありました。 tmpfsにかなりの空き領域が見つかりました。



root@OpenWrt:~# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 1088 352 736 32% / /dev/root 2048 2048 0 100% /rom tmpfs 14608 3256 11352 22% /tmp tmpfs 512 0 512 0% /dev /dev/mtdblock3 1088 352 736 32% /overlay overlayfs:/overlay 1088 352 736 32% /
      
      





名前が示すように、/ tmpにルーターのRAMがマウントされます。 数分間のグーグル検索で、この問題の解決策が記載されたページに移動しました。

残念ながら、ルートファイルシステムにkmod-tun、liblzo、libopensslの各パッケージをインストールした後、スペースがほとんど残っていないため、私には向いていませんでした。 そのため、このマニュアルを少し現代化することが決定されました。 それは私が得たものです。



1. sshを介してルーターに接続し、コマンドを実行します。



 opkg update opkg install kmod-tun zlib liblzo mkdir /etc/openvpn touch /etc/init.d/openvpn chmod +x /etc/init.d/openvpn
      
      





2. initスクリプトを編集します。



 vi /etc/init.d/openvpn
      
      





 #!/bin/sh /etc/rc.common START=99 start() { local TMPPATH=/tmp/openvpn [ ! -d ${TMPPATH} ] && mkdir ${TMPPATH} cd ${TMPPATH} opkg update || exit 1 tar xzf $(opkg download libopenssl | grep Downloaded | cut -d\ -f4 | sed '$s/.$//') tar xzf data.tar.gz tar xzf $(opkg download openvpn | grep Downloaded | cut -d\ -f4 | sed '$s/.$//') tar xzf data.tar.gz rm -f pkg.tar.gz data.tar.gz control.tar.gz debian-binary getopenvpn.sh for i in $(ls ${TMPPATH}/usr/lib) do [ ! -f /usr/lib/$i ] && ln -s /tmp/openvpn/usr/lib/$i /usr/lib/$i done ${TMPPATH}/usr/sbin/openvpn --writepid /tmp/ovpn_ciberterminal.pid --daemon --cd /etc/openvpn --config my.conf } stop() { PIDOF=$(ps | egrep openvpn | egrep -v grep | awk '{print $1}') kill ${PIDOF} }
      
      





3.構成ファイル(この場合はmy.conf)、証明書、およびキーを/ etc / openvpnフォルダーにコピーします。



4. openvpnを実行します。



 /etc/init.d/openvpn start
      
      





すべてがうまくいった場合、ifconfigコマンドを実行すると、新しいtunまたはtapインターフェースが表示されます。 例:



 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.54 PtP:10.8.0.53 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:100558 errors:0 dropped:0 overruns:0 frame:0 TX packets:78362 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:85115045 (81.1 MiB) TX bytes:16184384 (15.4 MiB
      
      





接続が確立されていない場合は、次のコマンドを使用してエラーの検出を試みることができます。



 logread -f
      
      





次に、VPNを介したクライアントトラフィックを許可するために、ネットワークインターフェイスを追加し、ファイアウォールを構成する必要があります。 これは、Webインターフェイスを使用して実行できます。 以下のスクリーンショットの例:



画像



画像



このソリューションは正常にテストされており、TP-Link WR841Nルーターで動作します。また、4メガバイトROMを搭載した他のサポートされているOpenWRTデバイスにも適しています



All Articles