0.0.0.0アドレスではなくipv4ルートがプライマリインターフェイス
になることを望まないので、どのようにトラフィックをルーティングできますか?
デフォルトは 192.168.5.1 dev enp7s0 proto dhcp metric 100 を渡します。 169.254.0.0/16 dev enp7s0 範囲リンクインジケータ 1000 192.168.5.0/24 dev enp7s0プロトタイプカーネル範囲リンクsrc 192.168.5.84メートル法100 192.168.60.0/24 dev vpn_softether proto カーネルフルリンク src 192.168.60.50 192.168.60.1 dev vpn_softether経由 209.80.36.170 192.168.60.1 dev vpn_softether経由 216.117.82.227
vpn_softetherを私が試した基本的なインターフェースにしたいのですが...
ip r 0.0.0.0 dev vpn_softetherで0.0.0.0/1を追加 ip r 0.0.0.0 dev vpn_softetherで128.0.0.0/1を追加 192.168.5.1で0.0.0.0/1を追加 192.168.5.1で128.0.0.0/1を追加 ip r 192.168.60.1でデフォルト値を追加します。 192.168.60.1 dev vpn_softether経由でip r del 0.0.0.0/1 192.168.60.1 dev vpn_softether による IP r del 128.0.0.0/1 192.168.5.1 経由 ip r del 0.0.0.0/1 192.168.5.1 経由 ip r del 128.0.0.0/1 192.168.5.1 による ip r dev enp7s0 proto dhcp metric 100 0.0.0.0/1 追加 ip r 192.168.5.1 dev enp7s0 proto dhcp metric 100経由で128.0.0.1/1を追加 192.168.5.1 dev enp7s0 raw dhcp メトリック 100 経由の ip r del 0.0.0.0/1 ip r del のデフォルト値は 192.168.60.1 dev vpn_softether です。 ip r del 128.0.0.0/1 ~ 192.168.5.1 dev enp7s0 raw dhcp メトリック 100 192.168.60.1 dev vpn_softether proto dhcp メトリック 100 経由の ip r del 0.0.0.0/1 ip r del のデフォルト値は 192.168.5.1 dev enp7s0 です。 ip r del 128.0.0.0/1 ~ 192.168.60.1 dev vpn_softether proto dhcp メトリック 100 ip r 192.168.60.1 dev vpn_softetherで0.0.0.0/1を追加 192.168.5.1 dev enp7s0 proto dhcp metric 100 による ip r デフォルト値の追加 192.168.60.1 dev vpn_softetherで128.0.0.0/1を追加
しかし、そうではありませんでした...他の方法はありませんか?
ありがとうございます。
答え1
「すべてのトラフィック」は次にのみルーティングできます。一つインターフェイスはすべてではありません。
何らかの理由でデフォルトパスを維持するには、デフォルトパスを維持し、追加または削除しないでください。追加または削除できる場合は、デフォルトのパスを維持する必要はありません。
だから、
ip route add 0.0.0.0/1 via 192.168.60.1 dev vpn_softether
ip route add 128.0.0.0/1 via 192.168.60.1 dev vpn_softether
ゲートウェイがvpn_softether
実際にあると仮定して作業を実行する必要があります192.168.60.1
。 VPNが接続されているすべての場所に転送するルールも必要です。enp7s0
そうしないと、VPNは他のエンドポイントと通信できないため、まったく接続されません。そのように
ip route add 1.2.3.4/32 via 192.168.5.1 dev enp7s0
1.2.3.4
他のエンドポイントのIPアドレスはどこにありますか?この規則に従うdefault
(これらの状況に動機がある場合)いいえ働く
答え2
以前の回答に追加したいです。
ip route add 1.2.3.4/32 via 192.168.5.1 dev enp7s0
これは間違ったアプローチです。enp7s0
閉じると、パスは消えます。enp7s0
このパスはオンラインになると表示されません。同時に、VPNインターフェイスはオンラインになりますがアクセスできないため機能しません1.2.3.4
。
enp7s0
起動すると、netplanを使用してこのパスを動的に生成できます。ただし、パスはIPアドレス、ネットワークインターフェイス名、ゲートウェイIPで構成されています。これが意味するのは異なるネットワーク間で移植できない。実践を通して、この解決策はあまりにも痛くて推奨されていないことが証明されました。短期間でnetplanに重要なルートを追加したことを忘れていました。後でこの道はあなたにとって問題になります。大規模なネットワークでこのソリューションを使用することは完全に不可能です。
1.2.3.4
正しい回避策は、VPNトラフィックリダイレクト用に作成したデフォルトルートからそのルートを除外することです。 ~のためWireguardのソリューション例。1.2.3.4/32
から除外0.0.0.0/0
し、結果をに入れる必要がありますAllowedIPs
。オンライン電卓はこちら。 「より良い選択肢」があると読むことができますが、著者が間違っており、選択肢はありません。
たとえば、0.0.0.0/0
マイナス記号は1.2.3.4/32
次のようになります。
AllowedIPs = 0.0.0.0/8, 1.0.0.0/15, 1.2.0.0/23, 1.2.2.0/24, 1.2.3.0/30, 1.2.3.5/32, 1.2.3.6/31, 1.2.3.8/29, 1.2.3.16/28, 1.2.3.32/27, 1.2.3.64/26, 1.2.3.128/25, 1.2.4.0/22, 1.2.8.0/21, 1.2.16.0/20, 1.2.32.0/19, 1.2.64.0/18, 1.2.128.0/17, 1.3.0.0/16, 1.4.0.0/14, 1.8.0.0/13, 1.16.0.0/12, 1.32.0.0/11, 1.64.0.0/10, 1.128.0.0/9, 2.0.0.0/7, 4.0.0.0/6, 8.0.0.0/5, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/1
残念ながら、このソリューションは理想的ではありません。 VPNが複数ある可能性があるため、各VPNのデフォルトルートからすべてのエンドポイントIPを除外する必要があります。
たとえば、2つのVPNがあり、別のVPNを追加する場合は、2つの既存のVPN設定の許可IPから3番目のエンドポイントIPを除外する必要があります。 Wireguardに内部電卓やDisallowedIPs
機能がある場合は、より良いでしょう。
だから私の解決策は設定を省略し、デフォルトのパスAllowedIPs
を自分で作成することでした。私は以下を使用しています電卓を除くPythonで書かれています。以下を行う必要があります。
- すべてのWireguardクライアント設定からすべてのエンドポイントを収集します。
- すべてのエンドポイントを解決します。
0.0.0.0/0
(and)からターゲットエンドポイントを除外します::/0
。- 電卓が受信する各IPブロックのデフォルトルートを追加します。
PS 各 VPN インターフェイスに対して別々のテーブルにこれらのルートを追加することをお勧めします。なぜなら、人々のグループになるからです。
PS私と私route-up.client.sh
とroute-down.client.sh
公開ポイントはこちら。
Table = off
PostUp = /etc/wireguard/route-up.client.sh 51820 wg0 10.20.3.0/24 fd10:20:3::/64 10
PreDown = /etc/wireguard/route-down.client.sh 51820