私は、Arch で shorewall を使用して、2 つのローカル ネットワークと 2 つの ISP 接続を持つセットアップを管理しようとしています。最終的には、ローカル ネットワーク 1 (192.168.1.0/24 インターフェース enp5s0) からのトラフィックが ISP 1 (76. ... インターフェース enp6s0) を使用し、ローカル 2 (192.168.0.0/24 インターフェース enp7s0) からのトラフィックが ISP 2 (99. ... インターフェース enp3s0) を使用するようにしたいと考えています。現在、どちらのデフォルト ルートが先に来るかによって、どちらか一方は機能しますが、両方は機能しません。
output of `ip route ls` with sensitive information redacted:
default via 76.[rd].1 dev enp6s0 src 76.[rd].78 metric 203 mtu 576
default via 99.[rd].1 dev enp3s0 src 99.[rd].190 metric 205
76.[rd].0/24 dev enp6s0 proto kernel scope link src 76.[rd].78 metric 203 mtu 576
76.[rd].78 dev enp6s0 scope link src 76.[rd].78
99.194.48.0/21 dev enp3s0 proto kernel scope link src 99.[rd].190 metric 205
99.[rd].190 dev enp3s0 scope link src 99.[rd].190
192.168.0.0/24 dev enp7s0 proto kernel scope link src 192.168.0.1 metric 204
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.1 metric 202
上記の出力では、ローカル 1 は外部に到達できますが、ローカル 2 は到達できません。最初の行がなくなった場合はその逆になります。複数の ISP がある場合でも、複数のデフォルト ルートは使用すべきではないことは確かですが、これは shorewall が実行した方法です。
これに関する例はどこにもなかったので、shorewall の 3 つのインターフェースの例を参考にしました。この投稿が異常に長くなるのを避けるため、関連する各 shorewall 構成の貼り付けへのリンクを以下に示します。
- インターフェース:http://pastebin.com/u7w3YJdx
- マングル:http://pastebin.com/1X2hrLCZ
- マスク:http://pastebin.com/bi9EEtwD
- ポリシー:http://pastebin.com/mBBZQ0wg
- ルール:http://pastebin.com/ySSLpMWd
- プロバイダー:http://pastebin.com/YjDfKZzg
- ゾーン:http://pastebin.com/XVgYz3dn
Shorewall のこの件に関するページは、彼らの例の目標が私の目標と大きく異なるため、役に立ちません。正しい方向を指し示すヒントがあれば、大変ありがたいです。
答え1
netctlファイルや他のファイルでデフォルトゲートウェイを設定していないことを確認してください。DHCPを使用してIPアドレスを取得する場合は、デフォルトゲートウェイの取得を無効にしてください(dhcpcd -G)。「ip route ls」を実行すると、デフォルトゲートウェイを表示しない「ip route show table all」のみが各 ISP テーブルのデフォルト ゲートウェイを一覧表示します。次のようになります。
default via 10.1.1.1 dev enp3s0 table ITC1 src 10.1.1.10
10.1.1.1 dev enp3s0 table ITC1 scope link src 10.1.1.10
default via 10.1.2.1 dev enp4s0 table ITC2 src 10.1.2.10
10.1.2.1 dev enp4s0 table ITC2 scope link src 10.1.2.10
default via X.X.X.X dev enp5s0 table MPLS src X.X.X.X
X.X.X.X dev enp5s0 table MPLS scope link src X.X.X.X
default table balance
nexthop via X.X.X.X dev enp5s0 weight 1
nexthop via 10.1.1.1 dev enp3s0 weight 2
nexthop via 10.1.2.1 dev enp4s0 weight 2
また、rtrulesエントリは必要なものには十分であるため、mangleファイルからエントリを削除することもできます。