
編集:私の設定の詳細については説明を参照してください。私のシステムは、enp1s0、インターフェイス1、インターフェイス2の3つのネットワークカードで構成されています。
enp1s0は、インターネットに接続されているマザーボードの統合ネットワークカードです。
インターフェイス 1 とインターフェイス 2 は、2 番目の LAN 専用ネットワークに接続する 2 つの追加 NIC(2 つのポートがありますが、各ポートのうち最初のもののみを使用)です。これらはすべて同じスイッチ、同じVLAN、同じサブネットに接続されています。
ip -d link show の結果は次のとおりです。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0 addrgenmode eui64
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 2c:27:d7:19:dd:97 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode none
3: interface1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 00:20:fc:32:31:36 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64
4: interface1-2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 00:20:fc:32:31:38 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64
5: interface2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 00:20:fc:32:60:12 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64
6: interface2-2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 00:20:fc:32:60:14 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64
ABのコメントを見ています。この問題私の問題に対する解決策として。質問全体を読む必要がないように要約すると、両方のカードが接続されていても、IGMPクエリを処理し、各カードに独立して報告するために、2つの別々のネットワーク名前空間に両方のNIC(インターフェイス1とインターフェイス2)を設定してみました。同じネットワーク。
私の問題は名前空間の設定に関連しています。これが私がする方法です:
# Add a new namespace named interface1Namespace
sudo ip netns add interface1Namespace
# Add a new namespace named interface2Namespace
sudo ip netns add interface2Namespace
# Check that both namespaces exist
ip netns list
# Set interface1 to be in the interface1Namespace namespace
sudo ip link set interface1 netns interface1Namespace
# Set interface2 to be in the interface2Namespace namespace
sudo ip link set interface2 netns interface2Namespace
# Give interface1 an IP address.
sudo ip -n interface1Namespace addr add 25.25.40.116/24 dev interface1
# Give interface2 an IP address.
sudo ip -n interface2Namespace addr add 25.25.40.134/24 dev interface2
# Bring up loopback inside the interface1Namespace namespace
sudo ip netns exec interface1Namespace ip link set dev lo up
# Bring up loopback inside the interface2Namespace namespace
sudo ip netns exec interface2Namespace ip link set dev lo up
# Bring up interface1 inside the interface1Namespace namespace
sudo ip netns exec interface1Namespace ip link set dev interface1 up
# Bring up interface2 inside the interface2Namespace namespace
sudo ip netns exec interface2Namespace ip link set dev interface2 up
# Check that the interface1 interface is working in the interface1Namespace namespace
sudo ip netns exec interface1 ifconfig
# Check that the interface2 interface is working in the interface2Namespace namespace
sudo ip netns exec interface2 ifconfig
# Add default gateway for the interface1Namespace namespace
sudo ip netns exec interface1Namespace ip route add default via 25.25.40.1 dev interface1
# Add default gateway for the interface2Namespace namespace
sudo ip netns exec interface2Namespace ip route add default via 25.25.40.1 dev interface2
# Check that the interface1Namespace route table has the default gateway
sudo ip netns exec interface1Namespace ip route show
# Check that the interface2Namespace route table has the default gateway
sudo ip netns exec interface2Namespace ip route show
出力は次のとおりです。
interface1Namespace
interface2Namespace
interface1 Link encap:Ethernet HWaddr 00:20:fc:32:31:36
inet addr:25.25.40.116 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:47434 errors:0 dropped:5 overruns:0 frame:0
TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4374863 (4.3 MB) TX bytes:8324 (8.3 KB)
interface2 Link encap:Ethernet HWaddr 00:20:fc:32:60:12
inet addr:25.25.40.134 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:44231 errors:0 dropped:7 overruns:0 frame:0
TX packets:172 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4067463 (4.0 MB) TX bytes:25394 (25.3 KB)
default via 25.25.40.1 dev interface1 linkdown
25.25.40.0/24 dev interface1 proto kernel scope link src 25.25.40.116 linkdown
default via 25.25.40.1 dev interface2 linkdown
25.25.40.0/24 dev interface2 proto kernel scope link src 25.25.40.134
私が実行した場合:
sudo ip netns exec interface1Namespace ip -d link show interface1
次のように出力されます。
3: interface1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether 00:20:fc:32:31:36 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64
私が実行した場合:
sudo ip netns exec interface2Namespace ip -d link show interface2
次のように出力されます。
5: interface2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether 00:20:fc:32:60:12 brd ff:ff:ff:ff:ff:ff promiscuity 0 addrgenmode eui64
どの名前空間でも25.25.40.1にpingを試みると、応答はありません。私は何を見逃していますか?
インターフェイス2のルーティングテーブルが25.25.40/24へのリンクダウンを報告しないのは奇妙だと思います。
答え1
ここで説明してください: https://access.redhat.com/solutions/53031
ここではあまり明確ではありません。 https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
2つのネットワークインターフェース(インターフェースAとインターフェースB)を持つコンピューターを考えてみましょう。 Linux がインターフェイス B を使用して IP アドレス X にパケットを送信することを決定したとします。インターフェイスAのIPアドレスXから受信したパケットを考えてみましょう。 Linux はパケットをドロップします。
端末で実行するか、
sysctl net.ipv4.conf.all.rp_filter=2
その行を/etc/sysctl.conf
。
そのIPアドレスにパケットを送信するために使用されるインターフェイスとは異なるインターフェイスのIPアドレスからパケットを受信できます。