Sysctlパラメータaccept_localとrp_filterがデュアルネットワークカードシステムでは機能しません。

Sysctlパラメータaccept_localとrp_filterがデュアルネットワークカードシステムでは機能しません。
root@host-3:~# uname -a
Linux host-3 4.4.35-1-pve #1 SMP Fri Dec 9 11:09:55 CET 2016 x86_64 GNU/Linux
root@host-3:~# cat /etc/debian_version
8.9
root@host-3:~# ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:192.168.1.2  Bcast:192.168.1.2.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3313 errors:0 dropped:0 overruns:0 frame:0
          TX packets:348 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:224843 (219.5 KiB)  TX bytes:29794 (29.0 KiB)

eth1      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:192.168.2.2  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3028 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:196588 (191.9 KiB)  TX bytes:1330 (1.2 KiB)

以下の設定では、ホスト3のトラフィックは回線に出ません。スタックはそれを受信アプリケーションに送り返します。

両方のインターフェイスのパケットキャプチャは、実際にはどのネットワークインターフェイスにもパケットが到着しないことを示しています。

なぜこれですか?

ホスト2、NIC/ホスト1:動作します(以下のホスト3と比較)。

---------------------          -------------------------------------------          ---------------------
| Linux Host host-1 |          |        Device Under Test (router)       |          | Linux Host host-2 |
|     192.168.1.2/24|----------|192.168.1.1/24             192.168.2.1/24|----------|192.168.2.2/24     |
---------------------          -------------------------------------------          ---------------------

2つのネットワークカードを持つ1つのホスト:機能しません。

---------------------
| Linux Host host-3 |
|     192.168.1.2/24|--------|
|               eth0|        |
|                   |        |
|                   |        |
|               eth1|        |
|     192.168.2.2/24|---|    |
---------------------   |    |
                        |    |
                        |    |
                        |    |
                        |    |         -------------------------------------------
                        |    |         |        Device Under Test (router)       |
                        |    |---------|192.168.1.1/24             192.168.2.1/24|---------|
                        |              -------------------------------------------         |
                        |                                                                  |
                        |                                                                  |
                        |                                                                  |
                        |                                                                  |
                        |------------------------------------------------------------------|

静的ルートを含むHost-3のルーティングテーブル

Destination    Gateway        Genmask            Flags Metric Ref Use Iface
192.168.1.0    0.0.0.0        255.255.255.0      U     0      0   0   eth0
192.168.1.2    192.168.2.1    255.255.255.255    UGH   0      0   0   eth1
192.168.2.0    0.0.0.0        255.255.255.0      U     0      0   0   eth1
192.168.2.2    192.168.1.1    255.255.255.255    UGH   0      0   0   eth0

Host-3の関連カーネルパラメータ

root@host-3:~# sysctl -a | grep "\.rp_filter"
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0

root@host-3:~# sysctl -a | grep "accept_local"
net.ipv4.conf.eth0.accept_local = 1
net.ipv4.conf.eth1.accept_local = 1
net.ipv4.conf.all.accept_local = 1
net.ipv4.conf.default.accept_local = 1
net.ipv4.conf.lo.accept_local = 0

アップデート#1

トラフィックの種類と仮想マシンに関連するかどうかを尋ねるコメントに応答して...

トラフィックはPingだけです。また、UDPユニキャストを使用してテストした結果、動作に違いがないことがわかりました。

はい、これらは仮想マシンです。実際、より正確に言えば、Proxmox 4.4で動作するLXC Linuxコンテナです。

そして、私が元の投稿の後に発見したもう一つの事実があります。

ping時に-Iオプションを使用してコンセント(ソースなど)を指定した場合IPアドレス、行動に変化がないと思います。ただし、pingの-Iオプションを使用してコンセントを指定すると、相互作用、すべてがうまくいくようですが、注意することがあります。 pingコマンドが応答を受信するまでの往復時間が約40ミリ秒であるために機能すると言います。これは、パケットがスタックによって短絡されず、実際に出て行く場合(この場合、往復時間はミリ秒未満)と予想されるものです。しかし、注意事項があります。

送受信インターフェイスのパケットキャプチャ表示ただエコリクエスト。キャプチャいいえエコ返信を表示します。どうすればこれが起こるのかわかりません...

ベストアンサー1

# ip rule list
0:      from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

# ip route list table local
[...]
broadcast 192.168.0.0 dev eth0  proto kernel  scope link  src 192.168.0.100
local 192.168.0.100 dev eth0  proto kernel  scope host  src 192.168.0.100
broadcast 192.168.0.255 dev eth0  proto kernel  scope link  src 192.168.0.100

このテーブルは変更できませんlocal。カーネルはそれを維持します。これは優先順位が最も高いテーブルなので、他のテーブル(たとえば)で何を定義してもかまいませんmain。これらの項目は絶対に一致しません。

おすすめ記事