OpenVPNクライアントがアクティブな場合、ポート転送は機能しません

OpenVPNクライアントがアクティブな場合、ポート転送は機能しません

ddwrt を実行しているルーターで OpenVPN クライアントを正常に構成し、起動時に OpenVPN を有効にするように設定しました。

ホームネットワーク => OpenVPN クライアントを備えた ddwrt ルーター => Web

OpenVPNクライアントがあれば、ルーターのWebインターフェースを表示し、自宅のUNIXボックスにSSH接続することができます。ではありません実行中です。OpenVPNクライアントで同じことをするにはどうすればいいか知りたいですランニング。

私は今、Wi-Fi 経由でルーターに接続された Macbook でこれを入力しており、もう 1 台の Macbook は iPhone のパーソナル ホットスポット経由でネットに接続されているため、自宅のネット接続がアクティブであることは確かです。2 台目の Macbook でテストを行っています。

重要な情報:

ルーターのファイアウォールはオフになっています。

IPルーティング情報

root@myrouter:~# ip route list
0.0.0.0/1 via 10.208.185.5 dev tun1 
default via my-wan-gateway-ip-here dev ppp0 
my-wan-gateway-ip-here dev ppp0  proto kernel  scope link  src my-real-ip-here
10.208.0.1 via 10.208.185.5 dev tun1 
10.208.185.5 dev tun1  proto kernel  scope link  src 10.208.185.6 
127.0.0.0/8 dev lo  scope link 
128.0.0.0/1 via 10.208.185.5 dev tun1 
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1 
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1 
my-vpn-ip via my-wan-gateway-ip-here dev ppp0

私のOpenVPN設定は、dd-wrtによって作成されたデフォルトのrouter-up.shを実行します。自動的に。 私しなかったこのスクリプトに変更を加えます。

root@myrouter:/tmp# cat /tmp/openvpncl/route-up.sh 
#!/bin/sh
iptables -D POSTROUTING -t nat -o tun1 -j MASQUERADE
iptables -I POSTROUTING -t nat -o tun1 -j MASQUERADE
iptables -D INPUT -i tun1 -j ACCEPT
iptables -I INPUT -i tun1 -j ACCEPT

私の DNS サーバー (Comodo と OpenDNS を使用)

root@myrouter:/tmp# cat resolv.dnsmasq
nameserver 8.26.56.26
nameserver 8.20.247.20
nameserver 208.67.222.222

また、ネットで見つけたスクリプトも使用して、特定の IP が VPN をバイパスできるようにしました。このスクリプトは、スタートアップ スクリプト (rc_startup) の一部です。この特定のゲームをタブレットでプレイするには、これが必要です。

#!/bin/sh
sleep 30
NO_VPN_LST="192.168.1.11 192.168.1.2"
[ -z "$NO_VPN_LST" ] && exit 0
WAN_GWAY="0.0.0.0"
while [ $WAN_GWAY == "0.0.0.0" ]; do
sleep 3
WAN_GWAY=`nvram get wan_gateway`
done
ip route add default via $WAN_GWAY table 10
for ipa in $NO_VPN_LST; do
ip rule add from $ipa table 10
done
ip route flush cache
exit 0

答え1

あなたが直面している問題は、おそらくデフォルト/ソース ルーティングのいずれかです。

VPN がオンになっていないときは、デフォルト ゲートウェイがインターネット接続の外にあるため正常に動作しますが、VPN を開始すると、いくつかの新しいルート「0.0.0.0/1 via 10.208.185.5 dev tun1 および 128.0.0.0/1 via 10.208.185.5 dev tun1」が追加されます。これにより、デフォルト ゲートウェイが通常の接続ではなく VPN エンドポイントになるという実質的な効果があります。

したがって、何をする必要があるかに応じて2つの解決策があります。

もっと簡単な解決策は、デフォルト ゲートウェイを作成する 2 行を削除し、VPN 経由でアクセスする VPN 接続上の特定のルートをプログラムする (またはプロバイダーにプログラムしてもらう) ことです。これは、VPN を特定の目的 (たとえば、会社のネットワークに接続する) で使用している場合にのみ選択できるオプションですが、インターネット全体で自分の身元を隠そうとしている場合はうまく機能しません。

より難しい解決策は、「ソース ベース ルーティング」を行うことです。これは、2 つのルーティング テーブルを設定することを意味します。現在のテーブルはデフォルトのテーブルで、2 つ目のテーブルは、通常の接続で直接入ってくるものに応答するためのテーブルで、別のデフォルト ルートを使用します。これは簡単なことではありませんが、その方法については、次のようなリンクが多数あります。ここそしてここ (グーグルのキーワードは「ソースルーティング」または「ポリシールーティング」です。ただし、この分野で本当に専門家になりたいのであれば、LART- 第4章ではポリシールーティングについて説明します)

関連情報