무선 USB 어댑터가 있고 내 도커 컨테이너가 컴퓨터 자체 무선 어댑터 대신 인터넷에 연결하는 데만 이를 사용하도록 하려고 합니다. 네트워크 네임스페이스에서 어댑터에 액세스하는 방법을 안다면 이 작업을 수행할 수 있을 것이라고 생각합니다. 왜냐하면 Docker 컨테이너에 대한 네임스페이스를 생성하면 해당 어댑터에서도 액세스할 수 있기 때문입니다.
내 네트워킹 지식은 매우 기초적이므로 이 작업을 수행하는 방법을 알아내기 위해 많은 책을 읽으려고 노력했지만 완전히 제 수준을 벗어났습니다.
지금까지 다음을 시도했지만 성공하지 못했습니다(enx582c80139263은 USB 무선 어댑터입니다).
1) 네트워크 네임스페이스를 생성하고 무선 어댑터를 해당 네임스페이스로 이동합니다(다음을 수행).이것):
sudo ip netns add ns1
sudo ip link set enx582c80139263 netns ns1
sudo ip netns exec ns1 ip address add 10.0.0.1/24 dev enx582c80139263
sudo ip netns exec ns1 ip link set dev enx582c80139263 up
모든 IP에 대해 직접 기본 경로를 만들고 게이트웨이를 10.0.0.1로 설정하려고 시도했지만 둘 다 작동하지 않았습니다.
sudo ip netns exec ns1 route add default enx582c80139263
sudo ip netns exec ns1 route add default gw 10.0.0.1 enx582c80139263
작동하려면 IP 라우팅이나 iptables에 대해 뭔가를 해야 할 것 같지만 무엇인지 잘 모르겠습니다.
2) 컨테이너에 대한 네트워크 네임스페이스를 생성한 다음 veth 쌍을 생성합니다. 여기서 veth 중 하나는 컨테이너 네임스페이스에 있고 다른 하나는 전역 네임스페이스에 있습니다. 그런 다음 IP 주소를 제공하고 브리지(brctl)를 사용하여 무선 어댑터 인터페이스를 전역 네임스페이스 veth에 연결했습니다.
sudo ip netns add ns1
sudo ovs-vsctl add-br br0
sudo ip link add veth0 type veth peer name veth1
sudo ip link set veth0 netns ns1
sudo ovs-vsctl add-port br0 veth1
sudo ovs-vsctl add-port br0 enx582c80139263
sudo ip link set dev veth1 up
sudo ip netns exec ns1 ip link set dev veth0 up
sudo ip netns exec ns1 ip address add 192.168.1.99/24 dev veth0
브릿지를 제거하면 한 베스에서 다른 베스로 핑을 보낼 수 있지만 브릿지가 존재할 때는 그렇지 않습니다. 이유를 잘 모르겠습니다. iptables나 IP 라우팅을 변경해야 할 수도 있습니다.
나는 이 문제에 대해 완전히 잘못된 방향으로 가고 있을 수도 있습니다. 지난 며칠 동안 네트워킹과 도커에 대해 정말 배웠습니다. 이 문제를 다르게 처리해야 하는지 알려주세요.