ワイヤガードルーティング

ワイヤガードルーティング

Wireguard接続を確立しましたが、ルーティングにいくつかの問題があります。 VPN が設定された Wireguard コンピュータは、インターネットプロバイダのルータの背後にあります。私はある場所または別の場所にいるかもしれません。つまり、VPNを設定するには、他のサイトにリモートでアクセスする必要があります。 VPNが正常に設定されていますが、接続が失われました。遠隔地からログインできないため、リセットできません。別の場所に行くのを待たなければなりませんでした。以下の問題により、リモートの場所にログインできません。

ルータにNATと入力してインターネット経由でアクセスできるように、このコンピュータへのリモートSSHアクセスを設定しました。ルーターのアドレスでログインしましたが、ルーターがSSHを内部アドレスに転送し、SSH接続がうまくいきましたが、問題がありました。

wg0インターフェイスを開いてVPNを設定しようとすると、SSHアクセスは機能しなくなります。トラフィックを分析すると、次のようなことが起こりました。 SSHを起動すると、ルータはそれを転送し、Wireguardコンピュータはインターフェイスからパケットを受信しますSYNeth0ただし、有効にすると、パケットは経由SYN, ACKで再送信されず、代わりにeth0インターフェイスwg0を介して再送信されます。 SSHはインターフェースwg0なしでwg0うまく機能します。192.168.1.0/24インターフェイスに関係なく、SSHはローカルネットワーク内でも機能しますwg0

SSH接続を維持しながらWireguard VPN接続を使用する方法は?そのコンピュータに異なるインターフェイスがありますが、lan0まだ接続されていません。lan0イントラネットにも接続してSSHに使用する必要がありますか?私はwireguardの問題がlan0.netと同じネットワークに接続しているので、まだインターフェイスにあると思いますeth0

接続、パスなどに関する追加情報は次のとおりです。

wg0 インターフェイスがありません。

wg-quick down wg0出力:

[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] nft -f /dev/fd/63

IP -4アドレス:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 8e:b7:6b:c9:08:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.250/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 84256sec preferred_lft 84256sec
3: lan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 8e:b7:6b:c9:08:9d brd ff:ff:ff:ff:ff:ff

IPルーティング:

default via 192.168.1.1 dev eth0 
default via 192.168.1.1 dev eth0 proto dhcp metric 100 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.250 metric 100

IPルール:

0:  from all lookup local
32766:  from all lookup main
32767:  from all lookup default

wg0インターフェイスを使用してください:

wg-quick up wg0出力:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63

IP -4アドレス:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 8e:b7:6b:c9:08:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.250/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 84320sec preferred_lft 84320sec
3: lan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group 
default qlen 1000
    link/ether 8e:b7:6b:c9:08:9d brd ff:ff:ff:ff:ff:ff
14: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.2/24 scope global wg0
       valid_lft forever preferred_lft forever

IPルーティング:

default via 192.168.1.1 dev eth0 
default via 192.168.1.1 dev eth0 proto dhcp metric 100 
10.0.0.0/24 dev wg0 proto kernel scope link src 10.0.0.2 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.250 metric 100 

IPルール:

0:  from all lookup local
32764:  from all lookup main suppress_prefixlength 0
32765:  not from all fwmark 0xca6c lookup 51820
32766:  from all lookup main
32767:  from all lookup default

修正する: さらにテストを行った後、wg-quickがいくつかのIPルーティングとルールを設定することがわかりました。私はこれがSSH接続を妨げると思います。次のコマンドを試しても、SSHは機能し続けます。

ip link add dev wg0 type wireguard
ip address add dev wg0 10.0.0.2/24
wg set wg0 private-key /root/wgprivate.key
wg set wg0 listen-port 37723
ip link set wg0 up
wg set wg0 peer <key> allowed-ips 0.0.0.0/0 persistent-keepalive 25 endpoint <remote hostname>:<remote port>

週末までにリモートサイトにアクセスできないため、wg-quickのどのコマンドが異常な動作を引き起こすかを調べようとします。リモートサイトにアクセスできるようになったら、wg-quickなしでVPNをリセットします。以前これを行ったことがありますが、wg-quickを使用して自動化したいと思いました。

答え1

いくつかの調査の終わりに接続が確立された後、wg-quickが実行するルーティングを望まないことがわかりました。したがって、解決策は非常に簡単です。線を引く

Table = off

いくつか[Interface]。これにより、wg-quickにIPルールとルートを作成しないように指示します。

答え2

見るここしかし、あなたの質問で要約すると、次のようになります。

iptablesを使用してパケットを宛先ポート22としてマークできます。

iptables -t mangle -A PREROUTING -i eth0 -p tcp -m tcp --dport 22 -j MARK --set-mark 22

したがって、eth0を介してこれらのパケットをルーティングする優先順位の高いルールを挿入できます。

ip rule add priority 32000 fwmark 22 table 22
ip route flush table 22
ip route add table 22 default dev eth0

まだテストされていません。 VPNを介してポート22に接続できなくなる副作用がある可能性があります。

関連情報