LinuxでVPNを介して特定のユーザーのトラフィックをルーティングする方法

LinuxでVPNを介して特定のユーザーのトラフィックをルーティングする方法

私のユーザーアカウントの1つのすべてのトラフィックがVPN接続を介してルーティングできるように設定を調整したいと思います。これまで私はこれを達成できませんでした。

オペレーティングシステム:Fedora27

Network Manager GUIを介してVPNに接続している場合(すべてのトラフィックがVPNを通過し、VPNが機能している場合)、$ ipルーティング:

default via 10.5.0.1 dev tun0 proto static metric 50 
default via 192.168.0.1 dev enp0s3 proto static metric 100 
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.15 metric 100 
10.5.0.0/16 dev tun0 proto kernel scope link src 10.5.1.112 metric 50 
$VPNIP via 192.168.0.1 dev enp0s3 proto static metric 100

私が取ったステップ(この記事ではVPN IPを$ VPNIPに置き換えます):

  1. 2番目のユーザーアカウント$ user2(UID 1001)を作成する

  2. 2番目のルーティングテーブルを作成します。

    echo 100 vpn >> /etc/iproute2/rt_tables

  3. VPNを介してすべてのトラフィックを転送しないように、デフォルトのルートテーブルを設定します。

    nmcli connection modify VPN ipv4.never-default true

  4. $ user2のパケットを表示するようにiptablesを設定します。

    *nat
    : ルーティング前の承認 [0:0]
    : 入力承認 [0:0]
    : 出力承認 [3:180]
    : POSTROUTING 承認 [3:180]
    -A POSTROUTING -m mark --mark 0xb -j MASQUERADE
    COMMIT

    *mangle
    : ルーティング前承認 [903:366886]
    : 入力承認 [903:366886]
    : 転送承認 [0:0]
    : 出力承認 [872:617897]
    : ルーティング後承認 [872:617897]
    -A 出力 - m all by --uid-owner1001 -j mark --set-xmark 0xb/0xffffffff
    コミット

    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT DROP [0:0]
    # lo
    -A INPUT -i lo -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    # 生成を許可
    - A INPUT -m state --state ESTABLISHED -j ACCEPT
    # VPNを許可
    -A OUTPUT -mowner --uid-owner 0 -d $VPNIP -p tcp --dport 443 -j ACCEPT
    # VPNを許可
    -A OUTPUT - o tun0 - m オーナー --uid-owner 0 -d 10.5.0.1 -p udp --dport 53 -j 受け入れ
    -A 出力 -o tun0 -m オーナー --uid-owner 1001 10.5.0.1 -p udp -- dport 53 -j受け入れ
    #VPN http 許可
    -A 出力 -o tun0 -m 所有者 --uid-owner 1001 -p tcp --dport 80 -j 受け入れ
    -A 出力 -o tun0 -m 所有者 --uid-owner 1001 -p tcp -- dport 443 -j 受け入れ
    #ssh
    -A 入力を許可 -i enp0s3 -p
    tcp --dport 22 -j 受け入れ -A
    出力

  5. テーブル100を介してルーティングされるようにタグ付きパケットを設定するIPルールを追加します。

    ip rule add fwmark 11 table 100

  6. 動作しているデフォルトパスのすべての行をテーブル100にコピーします。

    ip route add default via 10.5.0.1 dev tun0 proto static metric 50 table 100 ip route add default via 192.168.0.1 dev enp0s3 proto static metric 100 table 100 ip route add 192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.15 metric 100 table 100 ip route add 10.5.0.0/16 dev tun0 proto kernel scope link src 10.5.1.112 metric 50 table 100 ip route add $VPNIP via 192.168.0.1 dev enp0s3 proto static metric 100 table 100

問題:うまくいかず、パスが持続しないようです。どうぞよろしくお願いします!

ベストアンサー1

おすすめ記事