diff --git a/bpf_progs/clatd.c b/bpf_progs/clatd.c
index a104084153a56579bf66618d8f0f1d19c8b60a70..8f0ff844aa2a2d2a9f55cc545090104764d89991 100644
--- a/bpf_progs/clatd.c
+++ b/bpf_progs/clatd.c
@@ -240,6 +240,8 @@ static inline __always_inline int nat64(struct __sk_buff* skb,
             return TC_ACT_SHOT;
     }
 
+    try_make_writable(skb, l2_header_size + sizeof(struct iphdr));
+
     // bpf_skb_change_proto() invalidates all pointers - reload them.
     data = (void*)(long)skb->data;
     data_end = (void*)(long)skb->data_end;