ユーザーを特定のネットワークインターフェイスに限定することはできますか?

ユーザーを特定のネットワークインターフェイスに限定することはできますか?

私はCentOS 8サーバーを実行しており、VPNを介してのみインターネットにアクセスできるユーザーを作成したいと思います。つまり、このユーザーが使用するすべてのアプリケーションは、VPNを介してのみインターネットにアクセスできます。残りのユーザーは「一般」ネットワークにのみアクセスできます。 VPN トンネルはインターフェイス tun0 を使用します。

編集する:

私に従うようなことをしたい人のために私がしたことは次のとおりです。VPNスプリットトンネリングでDNSを使用すると問題が発生します。セントOS 8

答え1

渡すiptables

iptables -A OUTPUT -o VPN_INTERFACE -m owner --uid-owner USERNAME -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner USERNAME -j DROP # or REJECT

メモ:

  • -I代わりに使用できますが、両方の-Aコマンドは逆の順序で実行する必要があります(-I引数を使用しないと、ルールが最初に挿入されるため)。
  • (デフォルトの出力ポリシー - 何も許可しない)を使用する場合は、iptables -P OUTPUT DROP最初のルールのみが必要です。

渡すfirewalld

豊富な規則を介してまたは/etc/firewalld/direct.xml(および基本的に同じ):


DNSを忘れないでください。ドメイン名を解決するためにVPN以外のインターフェイスを使用している場合、ユーザーはWebサイトにアクセスできません。

答え2

コメントに記載されているように、異なるネットワークカードがあるため、nicに-oと--uid-ownerを使用してiptablesを使用できます。

VPNネットワークカードのOutound承認:

iptables -A OUTPUT -o <vpn-nic> -m owner --uid-owner {<username>} -j ACCEPT

他のネットワークカードからのアウトバウンドの削除:

iptables -A INPUT  -m owner --uid-owner {<username>} -j REJECT

永久に設定:

sudo iptables-save /etc/sysconfig/iptables
sudo chkconfig iptables on

関連情報