Linux에서 IPv4 식별 필드 조작

Linux에서 IPv4 식별 필드 조작

플래그가 설정 되면 Don't FragmentIPv4 RFC는 ID 필드를 0x0000.

0x0000RFC를 중단하고 해당 ID 필드 가 있는 모든 IPv4 패킷을 차단하는 방화벽 뒤에 있는 피어가 있습니다 . 내 "최신" 4.4.0 Linux 커널은 ID가 포함된 패킷을 생성 0x0000하므로 TCP 연결을 만들 수 없습니다.

0x0000이 ID 생성을 허용하지 않거나 iptables mangle 또는 다른 방법으로 이 필드를 조작하는 방법은 무엇입니까 ?

답변1

아마 당신은RFC 6864.

4.17.x Linux에서는 수신된 연결에 응답하는 서버의 SYN+ACK 패킷에 대해서만 id = 0이 안정적으로 나타나는 것을 볼 수 있었지만 그 이후에는 나타나지 않았습니다.

업데이트: OP는 질문에서도 이것이 일반적인 경우임을 확인했습니다(4.4.x 커널 사용).

유망한 후보자최소 요구 사항: nftables v0.6 . notrack필요하지 않으면 conntrack 항목은 이 ID에 관심이 없습니다.

그만한 가치가 있는 것은 다음과 같습니다.nftables[DF]가 설정되고 id == 0인 경우 id 값을 해당 값으로 변경하는 규칙입니다 . 에서는 이 작업을 전혀 수행할 수 0xbeef없는 것 같습니다 .iptables

nft add table raw
nft 'add chain raw output {type filter hook output priority -300;}'
nft 'add rule raw output ip frag-off & 0x4000 != 0 ip id == 0 ip id set 0xbeef'    

0x4000여기서 의미하는 것은깃발DF.

관련 정보