PageSourceSearch

https://tailscale.com/_next/static/chunks/2297.1eef05a18209b3b5.js

js tailscale.com collected 2026-09-24 08:08:06 UTC 3,229 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2297,29042],{29042:function(e,n){n.default={src:"/_next/static/media/edit-machine-ip.bc612c35.png",height:450,width:533,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAMAAAACh/xsAAAAG1BMVEX8/f3t7vD07OL4+fn09fX59vDv49fL0emzvuRXmVfXAAAACXBIWXMAAAsTAAALEwEAmpwYAAAALklEQVR4nCXKwRHAIBDDQCn2kfRfMQPZlx5CbZKgbQLMcw2z1h/KEdpAlPPV790QfACEuI3eAAAAAABJRU5ErkJggg==",blurWidth:8,blurHeight:7}},2297:function(e,n,s){s.d(n,{default:function(){return l}});var r=s(85893),a=s(10741),i=s(29042),t=s(20302);function o(e){let n={a:"a",code:"code",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components},{Figure:s,Note:o,ReleaseNote:l}=n;return s||d("Figure",!0),o||d("Note",!0),l||d("ReleaseNote",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l,{releaseStage:"beta",feature:"IP pool"}),"\n",(0,r.jsxs)(n.p,{children:["By default, Tailscale assigns IPv4 addresses to nodes in your tailnet\nfrom the 100.64.0.0/10 ",(0,r.jsx)(n.a,{href:"/docs/concepts/tailscale-ip-addresses",children:"CGNAT range"}),".\nThis is a private IP range not used on the public internet."]}),"\n",(0,r.jsxs)(o,{children:[(0,r.jsxs)(n.p,{children:["The following IP ranges are ",(0,r.jsx)(n.a,{href:"/docs/reference/reserved-ip-addresses",children:"reserved by Tailscale"}),", and cannot be used in IP pools:"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"100.100.0.0/24"}),"\n",(0,r.jsx)(n.li,{children:"100.100.100.0/24"}),"\n",(0,r.jsx)(n.li,{children:"100.115.92.0/23"}),"\n"]})]}),"\n",(0,r.jsx)(n.p,{children:"For corporate networks that use parts of the same range for other\npurposes, you can configure Tailscale to use a specific smaller\nsubset of the CGNAT range."}),"\n",(0,r.jsxs)(n.p,{children:['To do this, you can configure an "IP pool" in your tailnet policy file.\nThis is done using a node attribute that specifies an ',(0,r.jsx)(n.code,{children:"ipPool"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n  "grants": ["..."],\n  "nodeAttrs": [\n    {\n      "target": ["autogroup:admin"],\n      "ipPool": ["100.81.0.0/16"],\n    },\n    {\n      "target": ["group:dev"],\n      "ipPool": ["100.85.0.0/16"],\n    },\n  ],\n}\n'})}),"\n",(0,r.jsx)(t.Z,{}),"\n",(0,r.jsxs)(n.p,{children:["With this ",(0,r.jsx)(n.a,{href:"/docs/reference/syntax/policy-file#nodeattrs",children:"node attribute"})," set, all new nodes managed by admins in your tailnet will be assigned an IP\nfrom the range: ",(0,r.jsx)(n.code,{children:"100.81.0.0/16"}),", whereas nodes managed by members of ",(0,r.jsx)(n.code,{children:"group:dev"})," will be assigned an IP from a subset\nfrom the range: ",(0,r.jsx)(n.code,{children:"100.85.0.0/16"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"You can also change the IPv4 address of a node at any time by an admin in your tailnet."}),"\n",(0,r.jsx)(s,{src:i.default,size:"450",alt:"IPv4 Edit Dialog"})]})}function l(e={}){let{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}function d(e,n){throw Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.