私は1つのプログラムだけが私が保存したwireguard設定を介して実行/etc/wireguard/config.conf
し、他のすべてのプログラムは通常のIPアドレスを介して実行したいと思います。
見つけました。Wireguardのこのページはルーティングのためのページです。、名前空間の使用を提案しますが、次の特定のコマンドを実行しようとすると
sudo ip link set wlp2s0 netns physical
RTNETLINK answers: Invalid argument
Arch Linuxではこれを実行できないことをお勧めします。 Wireguardで特定のプログラムを実行する方法を見つけた人はいますか?
別のコンピュータで上記のチュートリアルを試しましたが、Wireguard設定をロードしようとしたときに次のエラーが発生しました。
wg setconf wgvpn0 /etc/wireguard/my_vpn.conf
:フォーマットが間違っていますが、同じ設定を使用すると完全に機能します。wg-quick up
ところで、Wireguardの問題追跡システムについて知っている人はいますか?私がメーリングリストに提出した質問は公開されません。
答え1
~からOPの質問にwireguard.comリンクがあります。、特に新しい名前空間ソリューション、イーサネットとワイヤレスを例に物理インターフェイスを移動する方法について説明します。
# ip netns add physical
eth0
次に、「物理」ネームスペースを入力しますwlan0
。# ip link set eth0 netns physical # iw phy phy0 set netns name physical
(ワイヤレスデバイスは、
iw
指定された物理デバイスを使用して移動する必要がありますphy0
。)
言及したように、OPは最初のip link set ... netns
コマンドを読むように見えますが、ワイヤレスデバイスに2番目のコマンドが必要であるという事実は認識されません。
iw
マニュアルページ不足していますが、以下iw --help
が含まれます:
phy <phyname> set netns { <pid> | name <nsname> } Put this wireless device into a different network namespace: <pid> - change network namespace by process id <nsname> - change network namespace by name from /run/netns or by absolute path (man ip-netns)
一部のドライバはまだネットワーク名前空間と互換性がない可能性があります。動作するには、次の出力が必要です。
$ sudo iw phy0 info|grep netns
* set_wiphy_netns
対応するデバイスを介して処理されるため、wlp2s0
コマンドにまったく表示されない単純なワイヤレスデバイスしかないとします。これを使用する必要があります:iw
phy0
sudo iw phy phy0 set netns name physical
答え2
プログラムを実行しているプログラム/ユーザーのUIDを取得します。
Wireguardトンネルに送信するために使用されます
iptables
。
[編集] たとえば、ここではexemple_app(必要なプログラムに置き換え)トラフィックをtor(私のプロジェクトの1つからのもの)にリダイレクトしています。いくつか変更し、トラフィックをWireguardトンネルにリダイレクトします(インターネットには多くの例があります)。
#!/bin/sh
# Vars
_trans_port="9040"
_dns_port="5353"
_exemple_app_uid=`id -u exemple_app`
#_tor_uid=`id -u debian-tor`
#_resv_iana="0.0.0.0/8 100.64.0.0/10 169.254.0.0/16 192.0.0.0/24 192.0.2.0/24 192.88.99.0/24 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/4 240.0.0.0/4 255.255.255.255/32"
#_non_tor="127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"
_out_if="wlan0"
_gateway="192.168.1.1"
_local_network="192.168.1.0/24"
# Remove all the iptables rules
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Set up the policies
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
# Redirect trafic through Tor
iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner $_exemple_app_uid -m tcp -j REDIRECT --to-ports $_trans_port
# redirect DNS requests through Tor
iptables -t nat -A OUTPUT -p udp -m owner --uid-owner $_exemple_app_uid -m udp --dport 53 -j REDIRECT --to-ports $_dns_port
# Drop the rest
iptables -A OUTPUT -p tcp -m owner --uid-owner $_exemple_app_uid -j LOG --log-prefix "[exemple_app tcp drop] " --log-level 7 --log-uid
iptables -A OUTPUT -m owner --uid-owner $_exemple_app_uid -j DROP
起動時にスクリプトを実行するシステムサービスを作成します。