選択された安全なルーティングを使用して、OpenVPN tun0 インターフェースのルートと iptables を修正する

選択された安全なルーティングを使用して、OpenVPN tun0 インターフェースのルートと iptables を修正する

最大限のセキュリティを確保するために、サードパーティの VPN を使用するようにルーターを設定しました。使用している ISP は OpenVPN プロトコルを含むすべての既知の VPN プロトコルをブロックしているため、OpenVPN が検閲を行う ISP ファイアウォールから指紋を隠すことができるように、ルーターを http プロキシを使用するように設定する必要があります。

とはいえ、私はサードパーティの商用 VPN を使用し、
接続されたデバイスで制限のないインターネットを利用できるようにするために、OpenVPN tcp 構成ファイルを使用しています。

OpenVPN クライアントはサーバーに接続するために http プロキシを必要とするため、最初にルーターに http プロキシを設定し、次に OpenVPN クライアントをインターネットに接続します。

httpプロキシとOpenVPNクライアントは両方とも同じOpenWRTルーター、いいえ別々のデバイス!

そうは言っても、多くの商用 VPN プロバイダーは、クライアントが接続を確立した後に OpenVPN サーバー側でルートとゲートウェイの設定をクライアントにプッシュするため、ルーター プロセッサを含むクライアント LAN インターフェイス全体がクライアントのリダイレクトされたインターネット トラフィックを使用するよう強制され、その結果、WAN から直接インターネットを取得するルーターで実行されているプロキシ プロセスは tun0 インターフェイス インターネットを使用するよう強制され、数秒後に失敗し、その結果、OpenVPN クライアントもすぐに失敗します。

上記の問題を防ぐために、私は追加しましたノープルコマンドにクライアント.ovpnファイル。

商用VPNを使用しているため、OpenVPNサーバーにアクセスできない! そして私のルーターはiptables(fw3)nftables(fw4)ではないので、client.ovpnファイルは次のようになります。

` クライアント dev tun0 proto tcp リモート XX.YY.ZZ.RR 443 nobind auth-user-pass cred.txt

persist-tun
......
http-proxy 192.168.55.1 1080 auto
http-proxy-retry
route-nopull

`

上記の構成により、OpenVPN サーバー (商用サーバー) に問題なく接続され、OpenWRT ルーター デバイス上に tun0 インターフェイスが作成されます。

tun0デバイス経由でウェブサイトを問題なくトレースできます。

#traceroute -i tun0 www.yahoo.com
traceroute to www.yahoo.com (87.248.119.251), 30 hops max, 46 byte packets
 1  *  10.124.148.1 (10.124.148.1)  1357.499 ms  195.523 ms
 2  vlan112.as02.stk1.se.m247.ro (146.70.16.241)  199.262 ms  190.672 ms  *

そうは言っても、OpenVPN サーバーからルートとファイアウォールの設定を取得していないため、この tun0 インターフェイスが作成されたらすぐに独自のルートと iptables ルールを作成する必要があります。

しかし、さらに説明する前に、ルーターのローカル IP アドレスが 192.168.55.1 であり、br-lan (lan ブリッジ) デバイスが DHCP プール アドレス 192.168.55.65-192.168.55.126 またはより正確には (255.255.255.192/26) の範囲から IP アドレスを取得していることを述べておく必要があります。

私の意図と目標は、ルーターを次のように設定することです。

[a] br-lan 上のすべてのデバイス (範囲 192.168.55.65-192.168.55.126)ルーター自体を除く 192.168.55.1ssh、dns、icmp、tcp、udp などのすべてのインターネット トラフィックを tun0 デバイスから取得する必要があります。

[b] セキュリティ上の理由から、tun0 インターフェースがない場合、または tun0 インターフェースからの応答がない場合、ルーターを除く br-lan デバイス (範囲 192.168.55.65-192.168.55.126) のすべてのインターネット トラフィックがインターネットからブロックされる必要があります。つまり、tun0 が起動して応答している場合にのみ、前述のすべてのデバイスがインターネットにアクセスできることになります。重み付けルートや代替パスなどの他の選択肢はありません受け入れられます。

[c] すべてのbr-lanデバイス含むルータ、プリンタ、PC、NAS などは、制限なく同じサブネット上で相互に検出、通信できる必要があります。

いくつかのルートを可能にするために、client.ovpn 構成ファイルに挿入できる OpenVPN コマンドがいくつかあることは知っています。たとえば、

プルフィルターは「リダイレクトゲートウェイ」を無視しますまたはルート 192.168.55.64 255.255.255.192 しかし、上記のコマンドにより、数回ロックされ、ルーターの Web ページにアクセスできなくなり、さらに、いずれも期待どおりに動作しませんでした。

さらに、tun0 の作成後に次のスクリプトを手動で実行しましたが、インターネット トラフィックが br-lan デバイスの tun0 を通過できませんでした。

次のファイルにovpnテーブルを作成しました

/etc/iproute2/rt_tables
#reserved values
#
128     prelocal
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1       ovpn

そして

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables -A FORWARD -i br-lan -o tun0 -s 192.168.55.64/26 -j ACCEPT
iptables -A FORWARD -i tun0 -o br-lan -j ACCEPT

iptables -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

ip route add default dev tun0 table ovpn
ip route add 192.168.55.64/26 dev br-lan table ovpn

ip rule add from 192.168.55.64/26 table ovpn

解決策を見つけるためにグーグルでいろいろ検索しましたが、tun0 を単純なセミ WAN インターフェイスとして扱う必要があることはほぼ確実です。

追加の手動ルーティングのないシンプルなルートテーブルを以下に示します。

#route -n  
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.8.1     0.0.0.0         UG    0      0        0 phy1-sta0
10.124.148.0    0.0.0.0         255.255.254.0   U     0      0        0 tun0
192.168.8.0     0.0.0.0         255.255.255.0   U     0      0        0 phy1-sta0
192.168.55.0    0.0.0.0         255.255.255.0   U     0      0        0 br-lan

もっと

#ip route show
default via 192.168.8.1 dev phy1-sta0 proto static src 192.168.8.118
10.124.148.0/23 dev tun0 proto kernel scope link src 10.124.148.113
192.168.8.0/24 dev phy1-sta0 proto kernel scope link src 192.168.8.118
192.168.55.0/24 dev br-lan proto kernel scope link src 192.168.55.1

上記の目標に関するヒントや解決策があれば教えていただければ幸いです。私はルーティングと iptables の初心者です。

ちなみに、必要な設定をどのように行うのかはわかりません。関数そしてif_tun0_down.shclient.ovpn ファイルでルートを自動的に作成およびクリアするように自動化されました。

作ることができるLANデバイスの範囲(br-lan)ルーターを除くVPN プロバイダーからインターネット トラフィックを取得します。

保護とブロックLANユーザーが制限されたアクセスを禁止する安全でないインターネット。 自動化作成と削除のタスクルートとiptablesルールオープニングそして閉鎖tun0 インターフェース。

答え1

完全な回答ではありませんが、方向性はつかめるかもしれません。client.ovpn で、次のステートメントを使用して、VPN 経由でアクセスするネットワークを指定します。例:

route 10.0.0.0 255.255.255.0 vpn_gateway

商用プロバイダーを使用している場合、tun0 デバイスはプールから IP アドレスを取得します。そのため、LAN デバイスをアクセス可能にすることはお勧めしません。ほとんどの場合、これはファイアウォールで保護された IP であり、必要なサービスに対してポートが開いていません。これはクライアント VPN です。VPN 経由で LAN にアクセスできるようにするには、独自の VPN サーバーを備えたサイト間 VPN が必要です。

関連情報