米国の私のホームネットワークは、DD-WRTのバージョンを実行しているバッファロールーター(G300NH)の背後にあります。組み込みのPPTP VPNクライアントを使用して英国のVPNプロバイダーに接続します。特定のトラフィックをVPN経由でルーティングします(したがって、さまざまな完全に法的な理由から、英国の送信元アドレスがあります)これは、DD-WRTドキュメントの指示とVPNプロバイダー独自の指示に従うことで達成しました。ファイアウォールスクリプトに次のような2つのコマンドを配置しました。
route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0
route add -net yyy.yyy.0.0 netmask 255.255.0.0 dev ppp0
私のセットアップではiptablesルールが必要ないようであるため、iptablesルールを入れませんでした。それは魅力のように機能します。 xxx
サブネットへのトラフィックはVPNを経由し、その他はすべてISP独自のパイプを経由します。
問題はVPNがドロップしたときに発生しますが、これは時々発生します。 DD-WRTは自動的に再接続するという素晴らしい仕事をしますが、それが起こるたびにルートはゴミ箱に捨てられます。
ルートを再確立するプロセスを自動化するにはどうすればよいですか?静的ルートについて考えましたが、VPN接続のIPアドレスは動的に割り当てられます(そのため、dev ppp0
を使用しています)。
sed
コマンドは、pptpdデーモンが開始されるまでdd-wrtがip-upファイルを作成しないことを除いて、正常に機能します。そこで、起動スクリプトに遅延を追加して時間を与え、ルートを追加した後にip-upコマンドを実行しました。これはあなたのためにそれを解決するはずです。
ルーターの起動コマンドは次のとおりです。
sleep 40
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\nroute add -net yyy.yyy.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
/tmp/pptpd_client/ip-up
または、次のようにすることもできます。
sleep 40
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
sed -i '' -e 's|exit 0|route add -net xxx.xxx.0.0 netmask 255.255.0.0 dev ppp0\n&\n|' /tmp/pptpd_client/ip-up
/tmp/pptpd_client/ip-up
必要な数のルートを追加します。 &
はexit 0
を置き換えます。
Dd-wrtの実装の問題は、pptpクライアントがルートテーブルを正しく設定しているのに、サーバーが正しく設定していないことです。通常、クライアントからは接続できますが、サーバーからは接続できません。これにより、接続が確立されるたびにサーバー側のルートテーブルが修正され、再起動と再接続の間で機能します。
Pptp SERVERとして実行されているDD-WRTから、[管理]タブをクリックし、次に[コマンド]タブをクリックして、次のように入力します。
/bin/sh -c 'echo "ip route add XX.XX.XX.0/24 dev ppp0" >> /tmp/pptpd/ip-up'
次に、「スタートアップスクリプト」として保存して永続化します。もちろん、XXをCLIENTネットワークのサブネットに変更します。複数のクライアントサブネットがある場合は、クライアントネットワークごとに正しいサブネットを使用して上記の複数の行を追加するだけです。
リンクがアップしたときに呼び出されるip-upスクリプトにrouteコマンドを配置することをお勧めします。これらをdd-wrtのどこに置くべきか正確にはわかりません。 openwrtに切り替えましたが、役立つリンクがありますか?
一部のddwrtルーターでは、簡単にファイルを編集または追加できません。
私が使用している4つのddwrtルーターはすべて、pptpクライアントの実行時にこれらのファイルを生成するため、ファイルを変更または追加するだけでは不可能です。
これはほとんどのルーターで機能するように見える回避策です http://stadar.org/content/ddwrt-pptp-client-add-routes-after-connection