最近、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デバイスにも適しています 。