特定の宛先IPに対して特定のインターフェイスをどのように使用できますか?

特定の宛先IPに対して特定のインターフェイスをどのように使用できますか?

2つのインターフェースがあり、そのうちの1つは、Android携帯の共有インターネットUSB接続です。

  • enp0s31f6:イーサネットインターネット接続(デフォルト)
  • enp0s20f0u1:接続共有Android

enp0s20f0u1インターフェイスを使用してSSH経由で1つのIPにのみアクセスしたいです。つまり、(外部/インターネットIP)に接続されているすべてのものがA.B.C.Dこのインターフェイスを経由する必要があることを意味します。他の人はいません。

セントース7を使用しています。

  • A.B.C.D宛先IPを持つすべてのパケットを消費インターフェイスにどのようにルーティングしますかenp0s20f0u1

  • 必ず使用する必要がありますかip route、それともiptables十分ですか?なぜ?

私は「ipルーティング」を初めて使用します。答えを説明してください。

詳細:

enp0s20f0u1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.42.174  netmask 255.255.255.0  broadcast 192.168.42.255

enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.128.1.21  netmask 255.255.254.0  broadcast 10.128.1.255

私がしたこと:

$ip ルーティング:

default via 10.128.0.1 dev enp0s31f6  proto static  metric 100 
default via 192.168.42.129 dev enp0s20f0u1  proto static  metric 101 
10.128.0.0/23 dev enp0s31f6  proto kernel  scope link  src 10.128.1.21  metric 100 
10.136.80.66 via 10.128.0.1 dev enp0s31f6  proto dhcp  metric 100 
192.168.42.0/24 dev enp0s20f0u1  proto kernel  scope link  src 192.168.42.174  metric 100 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

私のインターフェースのIPは192.168.42.174で、このインターフェースのゲートウェイはです192.168.42.129

2行目を削除しましたdirktdefault via 192.168.42.129 dev enp0s20f0u1 proto static metric 101

$ip ルーティング

default via 10.128.0.1 dev enp0s31f6  proto static  metric 100 
10.128.0.0/23 dev enp0s31f6  proto kernel  scope link  src 10.128.1.21  metric 100 
10.136.80.66 via 10.128.0.1 dev enp0s31f6  proto dhcp  metric 100 
A.B.C.D via 192.168.42.129 dev enp0s20f0u1 
192.168.42.0/24 dev enp0s20f0u1  proto kernel  scope link  src 192.168.42.174  metric 100 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

私はこのインターフェースをABCD以外の目的で使用したくありません。削除する必要がありますか?

192.168.42.0/24 dev enp0s20f0u1  proto kernel  scope link  src 192.168.42.174  metric 100

また?私のインターフェースのLANネットワークのようです。

via間違えて、ゲートウェイの代わりにインターフェイスのIPを使用しました。

今、すべてがうまくいっています。より明確です。

追加の質問理解するには、今はポート22だけをリダイレクトし、他のすべてのポートはブロックしたいと思います。ターゲットIPがABCDであるすべてを拒否し、ポート22のみを許可するにはiptables / firewallDが必要だと思います。

ベストアンサー1

ルーティングは、最も具体的な宛先を選択することによって機能します。これはあなたが必要であることを意味します

  • 各インターフェイスの後には、ネットワークセグメントへのパスが1つあります。
  • 1つのデフォルトパス(複数のパスではなく)
  • ABCD宛先への特別なパスですssh

したがって、出力はip route次のようになります。

default via 10.128.0.1 dev enp0s31f6  proto static  metric 100 
10.128.0.0/23 dev enp0s31f6  proto kernel  scope link  src 10.128.1.21  metric 100 
192.168.42.0/24 dev enp0s20f0u1  proto kernel  scope link  src 192.168.42.65  metric 100 
A.B.C.D/32 dev enp0s20f0u1  ...

最後のものを追加するには:

ip route add A.B.C.D/32 dev enp0s20f0u1 via 192.168.42.129

現在のゲートウェイはどこに192.168.42.129あります(定数である必要はありません)。

使用

ip route del default via 192.168.42.129 dev enp0s20f0u1

ABCDおよびリンクローカルパケット以外のパケットがこのインターフェイスを通過しないようにするには、2番目のデフォルトパスを手動で削除します。現在設定されている方法では、最初のインターフェイスが何らかの理由でダウンした場合、すべてのトラフィックはそのインターフェイスを使用します。

出力には10.136.80.66DHCPを介して1つが追加されました。なぜ追加されたのかわかりませんが、インフラストラクチャに何らかの理由で必要になる可能性があります。

システムの構成方法(ネットワーク管理者?/etc/network/interfaces)に応じて、この設定を自動化するさまざまな方法があります。

コメントに提案されているように、タグ付きパケットを使用するのはiptables愚かな考えです。ルーティングはタグを設定せずに直接動作します。これがまさにルーティングの目的です。

forの/24代わりに1つの回答で提案されたネットマスクを使用すると、複数の宛先アドレス(実際には256)にルーティングされるため、そうしないでください。/32A.B.C.D

おすすめ記事