동일한 원격 IP 주소를 사용하지만 동일한(기본) 네트워크 네임스페이스에서 다른 포트를 사용하여 여러 GUE 터널을 생성하는 방법은 무엇입니까?
지금까지 각 네임스페이스에 GUE 터널을 성공적으로 생성했습니다. 1 터널/네임스페이스 교착 상태에 대한 해결 방법으로 터널당 netns를 설정하고 해당 포트 번호를 기반으로 패킷을 전달했습니다.
그러나 동일한 원격 및 로컬 IP를 가진 최대 1개의 GUE 인터페이스가 있을 수 있기 때문에 기본 네임스페이스로 돌아가도록 하기 위해 네트워크 네임스페이스 간에 전달 패킷을 유지하도록 강요하고 싶지 않습니다. 단일 네임스페이스(기본 네임스페이스) 내에서 FOU는 오류 없이 다른 포트에서 수신 대기하도록 설정할 수 있습니다.
sudo ip fou show
port 1037 gue local 10.0.0.252 peer REMOTE_IP peer_port 1037 dev eth0
port 1036 gue local 10.0.0.252 peer REMOTE_IP peer_port 1036 dev eth0
그러나 첫 번째 포트 1036이 이미 동일한(기본) netns에 구성되어 있는 경우 두 번째 GUE 장치를 추가하면 오류가 반환됩니다.
sudo ip link add name guetun1 type ipip remote REMOTE_IP local 10.0.0.252 encap fou encap-sport 1037 encap-dport 1037 mode ipip dev eth0
RTNETLINK answers: File exists
이 작업은 이전 GUE 터널이 설정된 경우에만 실패하며, 그렇지 않으면 유효합니다. 이는 다른 네트워크에 설정할 때도 작동합니다. 위에서 참조한 명령이 작동하려면 기존 gue 링크를 제거하기만 하면 됩니다 sudo ip link del guetun0
.
링크 이름을 바꾸면(gue0에서 guetun0으로, tunl0에서tunnel0으로) 오류가 제거되지 않습니다.
지금까지 포트 번호를 무시하면서 로컬 및 원격 IP 주소를 기반으로 GUE 및 FOU 인터페이스를 식별하는 버그가 Linux 커널에 있다고 생각합니다. 하지만 이를 해결할 수 있는 방법이 있을까요?