유선 이더넷 연결(라우터에 연결됨)과 Wi-Fi 카드가 있는 가정용 PC가 있습니다. Wi-Fi는 액세스 포인트(hostapd)로 구성되고 네트워크 인터페이스는 브리지됩니다.
auto enp0s10
iface enp0s10 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports wlan0 enp0s10
netmask 255.255.255.0
iptables
다음을 통해 들어오는 선택된 트래픽에 영향을 미치는 몇 가지 규칙이 있습니다.무선랜0인터페이스만, --physdev-in
선택기를 사용합니다. 이 설정은 예상대로 작동합니다.
지금 내가 하려는 것은 장치에서 선택한 프로세스를 강제로 실행하는 메커니즘을 갖는 것입니다.다음을 통해서만 트래픽을 보냅니다. 무선랜0.
단서를 따라가다여기나는 시도했다:
> sudo ip netns add myNamespace
> sudo ip link set wlan0 netns myNamespace
RTNETLINK answers: Invalid argument
내가 아는 한, 이는 다음을 의미합니다.
- 물리적 인터페이스는 브리지되어 있기 때문에 지정할 수 없습니다.
netns
목표를 달성하기 위해 네임스페이스를 사용할 수 없습니다.
편집 : 아래 제안에 따라무상위에서 언급한 리드와 결합하여 다음을 시도했습니다.
> sudo ip netns show
> sudo ip netns add myNamespace
> sudo ip netns show
myNamespace
> sudo iw phy phy0 set name myNamespace
> sudo ip netns exec myNamespace ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
이 단계에서 다음 중 하나를 볼 것으로 예상해야 합니까?phy0또는무선랜0상장? 이 iw phy phy0 set name myNamespace
명령은 오류 메시지를 반환하지 않지만 인터페이스가 추가되지 않은 것 같습니다.myNamespace. 예상대로 인터페이스를 불러오려는 시도는 실패합니다.
> sudo ip netns exec myNamespace ifconfig wlan0 192.168.0.10/24 up
SIOCSIFADDR: No such device
wlan0: ERROR while getting interface flags: No such device
wlan0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device
> sudo ip netns exec myNamespace ifconfig phy0 192.168.0.10/24 up
SIOCSIFADDR: No such device
phy0: ERROR while getting interface flags: No such device
phy0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device<br/>
다시 말하지만, 브리지 설정으로 인해 이것이 복잡하다고 생각됩니다.
계획 B는 이 작업을 위해 특별히 사용자/그룹을 만드는 것입니다.무능한 트래픽) 그런 다음 iptables
이 사용자의 트래픽을 다음으로 리디렉션하는 데 사용합니다.무선랜0만약/언제 그럴 예정인가?enp0s10.
이것이 내가 막히는 곳입니다. 규칙은 다음과 같습니다.
iptables -t nat -A PREROUTING -m owner --gid-owner wlantraffic -m physdev ! --physdev-in wlan0 -j ???
즉, "그룹의 트래픽무능한 트래픽저것하지 않았다통해 다리에 들어갔다무선랜0경로를 다시 지정해야 합니다.무선랜0"
패킷은 늪지대 표준 인터넷 트래픽이 될 것입니다.
내 질문은 다음과 같습니다.
- 이것은
PREROUTING
규칙 인가FORWARD
? DROP
브리지 컨텍스트 내에서 패킷을 일치 시키는 경우 패킷이 다음 인터페이스로 "통과"됩니까?- 어떻게 지정하나요?무선랜0인터페이스를 대상으로 하시겠습니까?
답변1
목표를 달성하기 위해 ntns 네임스페이스를 사용할 수 없습니다.
다리가 문제일 수 있습니다. 하지만:
WLAN 인터페이스는 네트워크 네임스페이스와 관련하여 약간 이상합니다. 각 어댑터에는 phy(물리적 하드웨어를 나타냄)와 netdev(네트워크 인터페이스를 나타냄)라는 두 개의 계층이 있습니다.
(이유는 동일한 phy에 여러 개의 netdev가 있을 수 있기 때문입니다(예: 클라이언트+AP) 또는 듀얼 밴드 Wi-Fi 어댑터가 wlan0 및 wlan1이 서로 다른 네트워크에서 동시에 작동하도록 할 수 있기 때문입니다. 궁금하다면 iw phy
어떤 조합이 지원되는지 확인하세요. 어댑터의 경우.)
Linux에는 현재 다음과 같은 제한이 있습니다.전체phy 장치는 네임스페이스로 이동되어야 합니다. 개별 netdev는 이동할 수 없습니다. 이렇게 하려면 다음을 사용하세요 iw
.
iw phy phy0 set netns myNamespace
이것은 PREROUTING 또는 FORWARD 규칙입니까?
-j
일반적으로 모든 작업은 사용되는 작업(매개변수) 에 따라 다릅니다 . 일부는 FORWARD에서만 의미가 있고 다른 일부는 PREROUTING에서만 의미가 있습니다. 일부는 에서만 작동 -t nat
하고 다른 일부는 에서만 작동합니다 -t mangle
.
브리지 컨텍스트 내에서 일치하는 패킷을 삭제하면 패킷이 다음 인터페이스로 "통과"됩니까?
아니요. iptables 규칙은 IP용이며 패킷이 브리징 레이어에 도달하기 전에 처리됩니다. 패킷이 IP 계층에서 삭제되면 사라집니다.