web-dev-qa-db-ja.com

OpenwrtのVPNトンネルを介してすべてのLANトラフィックをルーティングするようにopenvpnクライアントを構成します

Raspberry Pi 2上でOPENWRTカオスカーマーを実行しています。OPENVPNクライアントを正常に構成し、クライアントはVPNトンネルを介してトラフィックをルーティングします。しかし、pi LANインターフェースを再起動すると、WANインターフェースに短時間接続し、VPNトンネルの外にトラフィックをルーティングします。これはごく短時間しか発生しません。(VPNクライアントが必要な時間しかし、これを停止する必要があります。ほとんどすべてのトラフィックをVPNクライアント経由で常にルーティングする必要があり、VPNに接続されていないユーザーがインターネットにアクセスできない場合は、この設定でTINYPROXYというプロキシクライアントを構成しました。問題が発生する可能性がありますが、これを停止する方法がわかりません。

これらは私の設定です

/ etc/config/network

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config interface 'lan'
    option ifname 'eth0'
    option proto 'static'
    option netmask '255.255.255.0'
    option ipaddr '192.168.2.1'
    option dns '8.8.8.8 8.8.4.4'

config interface 'wan'
    option ifname 'eth1'
    option proto 'dhcp'
    option peerdns '0'
    option dns '8.8.8.8 8.8.4.4'

config globals 'globals'
    option ula_prefix 'fd14:b495:5965::/48'

config interface 'vpn0'
    option ifname 'tun0'
    option proto 'none'
    option auto '1'
    option delegate '0'

/ etc/config /ファイアウォール

config defaults
    option syn_flood '1'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'ACCEPT'

config zone
    option name 'lan'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'ACCEPT'
    option network 'lan'

config zone
    option name 'wan'
    option output 'ACCEPT'
    option masq '1'
    option mtu_fix '1'
    option input 'ACCEPT'
    option forward 'ACCEPT'
    option network 'wan wan6 vpn0'

config rule
    option name 'Allow-DHCP-Renew'
    option src 'wan'
    option proto 'udp'
    option dest_port '68'
    option target 'ACCEPT'
    option family 'ipv4'

config rule
    option name 'Allow-Ping'
    option src 'wan'
    option proto 'icmp'
    option icmp_type 'echo-request'
    option family 'ipv4'
    option target 'ACCEPT'

config rule
    option name 'Allow-IGMP'
    option src 'wan'
    option proto 'igmp'
    option family 'ipv4'
    option target 'ACCEPT'

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

config redirect
#   option target 'DNAT'
#   option dest 'vpn'
    option name 'Transparent Proxy Redirect'
    option src 'lan'
    option proto 'tcp'
    option dest_port '8888'
    option src_dport '80'
    option src_dip '!192.168.2.1'
    option dest_ip '192.168.2.1'

config zone
    option name 'vpn'
    option masq '1'
    option input 'ACCEPT'
    option forward 'ACCEPT'
    option output 'ACCEPT'
    option network 'vpn0'

config forwarding
    option src 'vpn'
    option dest 'lan'

/ etc/config/tinyproxy

config tinyproxy
    option enabled '1'
    option User 'nobody'
    option Group 'nogroup'
    option Port '8888'
    option Timeout '600'
    option DefaultErrorFile '/usr/share/tinyproxy/default.html'
    option StatFile '/usr/share/tinyproxy/stats.html'
    option LogFile '/var/log/tinyproxy.log'
    option LogLevel 'Info'
    option MaxClients '100'
    option MinSpareServers '5'
    option MaxSpareServers '20'
    option StartServers '10'
    option MaxRequestsPerChild '0'
    option ViaProxyName 'tinyproxy'
    list Allow '127.0.0.1'
    list Allow '192.168.2.1/24'
    list ConnectPort '443'
    list ConnectPort '563'
    list ConnectPort '80'
    option Filter '/www/textui/tinyproxy/blocked.txt'

これを正確に達成したい

ユーザー-> LAN-> TINYPROXY-> VPN-> WAN

私のTINYPROXYは完全に正常に動作しています。他のすべての構成は正常に機能しています。この問題は、PIの再起動時に短時間しか発生しません

誰かがこれで私を助けることができますか?

1
gripenfighter

これは(私にとって!)難しい質問です。部分的な解決策と、完全な解決策をテストするためのアイデアを提供できます。

[〜#〜] if [〜#〜]これは通常のLinuxであり、たとえばDebianのように、ファイルに挿入できます/etc/network/interfaces、外部インターフェースのスタンザ(wanと呼びましょう)の次の行:

  pre-up iptables -A OUTPUT -s 192.168.0.0/24 -o wan -j DROP

ここで、LANは192.168.0.0/24であると想定しました。 pre-upを使用しているという事実により、wanインターフェースが起動したときにファイアウォールルールが有効であることが確実になります。ルールと一緒に:

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

openVPNがサーバーへの接続を確立するのを待つために一部がドロップされたとしても、LANからのパケットはtun0を通過するだけであると確信できます。

しかし、OpenWRTのWebページで、上記のpre-up条件の代わりを見つけることができませんでした。したがって、上記の2つのルールを使用してファイアウォールを設定すると、LANからのパケットがルーターをOpenVPNの外部に出さないことが確実になりますしかしネットワークの前にiptablesファイアウォールが起動するかどうかわからない。

このOpenWRT Wikiページ では、さまざまなサービスの実行順序が説明されています。

rcSは、オプション「start」を使用して、/ etc/rc.d/S ## xxxxxxにある実際の起動スクリプトへのシンボリックリンクを実行します。

...。

S40networkはネットワークサブシステムを開始します(/ sbin/netifdを実行し、インターフェースとWi-Fiを起動します

S45firewallは、/ etc/config/firewallからファイアウォールルールを作成して実装します

2つのサービスが次々に開始され、パケットが通過する時間がほとんどないことがわかります。これは、OpenVPNが起動するのを待つよりも確かに優れています。 Thisは私の部分的な解決策です:LANパケットが通過できる時間を短縮したため、部分的ですが、not今回は.=0

2つのサービスを逆にして、つまり名前を変更してみてください。

      S40firewall
      S45network    

これが機能するかどうかを確認します。 iptables/netfilterが何をするのか、保護しようとするインターフェースが存在しない場合はわかりません。私のDebianではこれは問題なく動作しましたが、これを試すためのOpenWRTがないため、これがあなたにも機能することを確信できません。これは完全な解決策に対する私の提案です。乾杯。

0
MariusMatutiae

問題は、パケットがlanから送信されているのではなく、プロキシを実行しているルーターから送信されていることです。ファイアウォールには、VPNを介して発信トラフィックを強制するルールはありませんルーター上

私はこれを試していませんが...

wanインターフェースでoption output REJECTを設定し、特定のルールを追加して、ルーターが必要とするサーバーとポート(dhcp、OpenVPN)へのwanインターフェースでの発信トラフィックを許可します。 VPNが登場します。これらのルールでは、option output ALLOWoption dest wanがありますが、srcは設定しないでください。

または、ゾーンでの発信トラフィックを引き続き許可し、WANへのHTTPトラフィックをブロックするルールを作成します。繰り返しますが、srcを設定しないでください。

0