OpenVPN と DD-WRT

OpenVPN と DD-WRT

OpenVpn で動作するように新しい dd-wrt ​​ルーターをセットアップしようとしています。ただし、使用する必要がある OpenVpn には、自動的に生成された構成ファイルがあります。次のようになります。

# Automatically generated OpenVPN client config file
# Generated on Wed Sep 11 17:15:39 2013 by ip-10-164-12-159
# Note: this config file contains inline private keys
#       and therefore should be kept confidential!
# Note: this configuration is user-locked to the username below
# OVPN_ACCESS_SERVER_USERNAME=openvpn
# Define the profile name of this particular configuration file
# OVPN_ACCESS_SERVER_PROFILE=-redacted-
# OVPN_ACCESS_SERVER_CLI_PREF_ALLOW_WEB_IMPORT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_CONNECT=True
# OVPN_ACCESS_SERVER_CLI_PREF_ENABLE_XD_PROXY=True
# OVPN_ACCESS_SERVER_WSHOST=-redacted-
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_START
# -----BEGIN CERTIFICATE-----
# -redacted-
# -----END CERTIFICATE-----
# OVPN_ACCESS_SERVER_WEB_CA_BUNDLE_STOP
# OVPN_ACCESS_SERVER_IS_OPENVPN_WEB_CA=0
# OVPN_ACCESS_SERVER_ORGANIZATION=OpenVPN Technologies, Inc.
setenv FORWARD_COMPATIBLE 1
client
proto udp
nobind
remote -redacted-
port 443
dev tun
dev-type tun
ns-cert-type server
reneg-sec 604800
sndbuf 100000
rcvbuf 100000
auth-user-pass
# NOTE: LZO commands are pushed by the Access Server at connect time.
# NOTE: The below line doesn't disable LZO.
comp-lzo no
verb 3
setenv PUSH_PEER_INFO

<ca>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
-redacted-
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
-redacted-
-----END PRIVATE KEY-----
</key>

key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key (Server Agent)
#
-----BEGIN OpenVPN Static key V1-----
-redacted-
-----END OpenVPN Static key V1-----
</tls-auth>

ルーターに SSH で接続する場合 (つまり、sshd をオンにした場合)、この構成を使用して OpenVpn サーバーに接続できます。VPN サーバー アクセス コントロール ページを見ると、正常に接続したことが示されています。ただし、dd-wrt ​​のルーティング テーブルは、WiFi デバイスから VPN にトラフィックを送信していないと思われます。

私はルーティングについて非常に初心者で、dd-wrt ​​チュートリアルをどれも実行できませんでした (それらはすべて、別のタイプの構成を使用することを前提としていますが、私はそれを使用できません)。したがって、私の質問は 2 つの部分に分かれています。

  1. iptables (または Wi-Fi ネットワーク デバイスからトラフィックを送信するもの) をスクリプト形式で設定して、iptables スクリプトを実行し、ルーターで OpenVPN を起動できるようにするための方法を教えていただけますか。

  2. これを VAP (仮想アクセス ポイント) でのみ動作するように、または特定の IP アドレスでのみ動作するように変更するには (つまり、AP に接続された xxxx の IP を持つデバイスのみが VPN を通過するようにするには)、どうすればよいですか。

注: 通常、私はこれらのスクリプトを自分のコンピューターに保存し、近くにある dd-wrt ​​ルーターに ssh で接続して実行し、VPN 接続を開きます。

Google やこのサイトを調べても、今のところあまり役に立ちません。

答え1

私は主に、自宅の OpenVPN 設定を OpenWRT に移行する計画について語っています。現在は Fedora18 に実装されていますが、テスト マシンを他の用途に使用したいと考えています。DD-WRT も同様だと思いますが、実装の難しさから不正確な点があるかもしれません。DD-WRT の経験が豊富な方が私をサポートし、問題を解決してくれることを願っています。

ディレクティブdev tunは、通常、ディレクティブを使用して設定される別のサブネットを使用していることを意味しますserver(この部分は VPN 管理ページで処理されると思います)。たとえば、はserver 10.0.0.0 255.255.255.0、クライアントにこの範囲内のクライアントの仮想アダプタ上のアドレスが与えられることを意味します。

このデバイスがインターネットルーターである場合、ネットワークのデフォルトゲートウェイとして使用されています。ワイヤレスデバイスに特定のネットワークの静的ルートが設定されていない場合は、デフォルトゲートウェイに問い合わせます。入力インターフェイスに基づいて、iptablesルールがVPNサブネットからのトラフィックを探して受け入れるように設定されていないことが原因であると思われます。

iptables 構成は を使用して表示できますiptables -nvL --line-numbers。デバイスをルーターとして使用したい人は、次のような状況に遭遇するでしょう。

  1. 確立された接続を受け入れます。
  2. 設定されているポート転送ルールに応じて、インターネットからローカル アドレスへの接続を受け入れます。
  3. ローカルサブネットからのトラフィックを受け入れます。
  4. ルール チェーンを越える残りのすべての試行をドロップ/拒否します。

OpenVPN サブネットがステージ #3 に記載されていない場合は、ステージ #4 に到達してドロップします。

これらの手順は、タスクに基づいてルール チェーンにきちんと整理されています。私が計画しているのは、ローカル接続を処理するルール チェーンである「zone_lan_forward」の先頭に、OpenVPN サブネットのチェーンを定義することです。次のようになります。

iptables -N zone_lan_vpn

iptables -I zone_lan_forward -i tun+ -j zone_lan_vpn

次に行うことは、これらのクライアントにどのような制限を適用するかによって異なります。私は 3 つの異なる OpenVPN インスタンス (管理用 1 つとゲスト アクセス レベル 2 つ) を持っているため、これをさらに分割しました。

管理 VPN サブネット上のユーザーには、ほぼすべてへのアクセスが許可されているため、メニューにない特定のアドレスのみを禁止してから、その他すべてを許可する DENY->ALLOW 設定を実装しました。ゲストは特定のリソースへのアクセスのみが許可されているため、ALLOW->DENY 設定になっています。

DD-WRT に関して私がよくわからないのは、起動時にこれを自動的に実行するように設定する方法です。OpenWRT では、ファイアウォール ルールは のスクリプト (変更すべきではない) に基づいて生成されます/lib/firewall。設定ファイル には/etc/config/firewall、次の行が含まれています。

config 'include'

option 'path' '/etc/firewall.user'

上記で定義されたファイル/etc/firewall.userは、ファイアウォール ルールが再ロードされるたびに BASH スクリプトとして読み込まれ、ユーザー固有の調整が可能になります。私は DD-WRT に詳しくないので、同じファイアウォール設定方法が使用されているかどうかはわかりません。

ファイアウォール ルールが DD-WRT のデフォルトになっている場合は、iptables -nvL --line-numbersパブリック アドレスを削除した の出力を pastebin などに投稿していただけますか。DD-WRT の特定のレイアウトをよりよく理解するのに役立ちます。リモート クライアントが取得している OpenVPN サブネット上の IP アドレスを確認できますか。 の結果に示されているルーターのルーティング テーブルも投稿していただけますかroute -n。(これを行う際は、OpenVPN サーバーが実行中であることを確認してください)。これからネットワーク アドレスを編集する場合は、範囲の目的 (ローカル サブネット、VPN サブネット、パブリックなど) を明記してください。

もちろん、Web インターフェイスでこのアクセスを定義するオプションがあれば、これはすべて無意味になります。ルーターの Web コンソールに、OpenVPN サブネット上のユーザーをフィルターするオプションはありますか?

質問の 2 番目の部分がよくわかりません。特定の IP アドレスだけが OpenVPN 経由でデバイスに接続できるようにしたいのですか? 将来的にこのサービスを DD-WRT ルーター以外のサーバー上に置きたいのですか?

関連情報