各ユーザーのWi-Fiパス

各ユーザーのWi-Fiパス

VPNを使用していますが、ユーザーがVPNを介さずに実際のIPアドレスを使用してネットワークにアクセスできるようにしたいです。

問題は、このようなクイックGoogleで見つけたすべてのソリューションです。http://blog.sebastien.raveau.name/2009/04/per-process-routing.html 手動でルーティングを設定し、iptablesを使用してトラフィックを表示してからルーティングする必要があります。

しかし、Wi-Fiを使用するときにプロセス/ユーザーごとにどのようにルーティングしますか?どこかに行き、別のWi-Fiネットワークに接続するために別のゲートウェイを使用できるため、事前設定されたルートを持つことはできません。 GUIを使用して他のネットワークに接続するたびに端末を台無しにしたくありません。ネットワーク管理者が追加したパスを解析し、パスを再構成するスクリプトを作成することも正しいアプローチではないようです。

もしそうなら、インターフェースに依存しないルーティングゲートウェイ設定が指定されたインターフェース(wlan0)を通過し、他のすべてのユーザーに別のインターフェース(VPNの場合はトン)に移動させる最善の方法は何ですか?

答え1

反対の概念を使用してこれを行います。 「直接」ユーザーを除くすべてのユーザーをVPNにルーティングする代わりに、ユーザーをWLANインターフェイスに接続します。 VPNネットワークIPが固定されているため

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $f; done
echo 1 > /proc/sys/net/ipv4/route/flush

iptables -t mangle -A OUTPUT -m owner ! --uid-owner direct2net -j MARK --set-mark 42
iptables -t mangle -A OUTPUT -d (vpn ip) -j MARK --set-mark 0

iptables -t nat -A POSTROUTING -m mark --mark 42 -j SNAT --to-source (local ip in vpn's network)

ip rule add fwmark 42 table 42
ip route add default via (vpn network gateway) dev tun0 table 42

関連情報