두 개의 네트워크 카드에 대해 두 개의 네트워크 네임스페이스를 생성할 때 네트워크에 연결할 수 없습니다.

두 개의 네트워크 카드에 대해 두 개의 네트워크 네임스페이스를 생성할 때 네트워크에 연결할 수 없습니다.

편집: 내 설정에 대한 자세한 내용은 설명을 참조하세요. 내 시스템은 enp1s0, 인터페이스1 및 인터페이스2의 세 가지 네트워크 카드로 구성되어 있습니다.

enp1s0은 인터넷에 연결되는 마더보드의 통합 네트워크 카드입니다.

인터페이스 1과 인터페이스 2는 두 번째 LAN 전용 네트워크에 연결되는 두 개의 추가 NIC(두 개의 포트가 있지만 각 포트 중 첫 번째만 사용)입니다. 이들은 모두 동일한 스위치, 동일한 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 쿼리를 처리하고 각 카드에 독립적으로 보고하기 위해 두 개의 별도 네트워크 네임스페이스에 두 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 주소에서 패킷을 수신할 수 있습니다!

관련 정보