⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme

📁 使用最广泛的radius的linux的源码
💻
字号:
1.  Virtual Servers.  FreeRADIUS 2.0 supports virtual servers.  This is probably thesingle largest change that is NOT backwards compatible with 1.x.  The virtual servers do NOT have to be set up with the"sites-available" and "sites-enabled" directories.  You can still haveone "radiusd.conf" file, and put the server configuration there:	...	server {		authorize {			...		}		authenticate {			...		}		...	}	...  The power of virtual servers lies in their ability to separatepolicies.  A policy can be placed into a virtual server, where it isguaranteed to affect only the requests that are passed through thatvirtual server.  In 1.x, the policies were global, and it sometimestook much effort to write a policy so that it only applied in certainlimited situations.2.  What do we mean by "virtual server"?  A virtual server is a (nearly complete) RADIUS server, just like aconfiguration for FreeRADIUS 1.x.  However, FreeRADIUS can now runmultiple virtual servers at the same time.  The virtual servers caneven proxy requests to each other!  The simplest way to create a virtual server is to take the all ofthe request processing sections from radius.conf, ("authorize" ,"authenticate", etc.) and wrap them in a "server {}" block, as above.  You can create another virtual server by:    1) defining a new "server foo {...}" section in radiusd.conf    2) Putting the normal "authorize", etc. sections inside of it    3) Adding a "listen" section *inside* of the "server" section.  e.g.	...	server foo {		listen {			ipaddr = 127.0.0.1			port = 2000			type = auth		}		authorize {			update control {				Cleartext-Password := "bob"			}			pap		}		authenticate {			pap		}	}	...  With that text added to "radiusd.conf", run the server in debuggingmode (radiusd -X), and in another terminal window, type:$ radtest bob bob localhost:2000 0 testing123  You should see the server return an Access-Accept.3. Capabilities and limitations  The only sub-sections that can appear in a virtual server sectionare:	listen	client	authorize	authenticate	post-auth	pre-proxy	post-proxy	preacct	accounting	session  All other configuration parameters (modules, etc.) are global.  Inside of a virtual server, the authorize, etc. sections have theirnormal meaning, and can contain anything that an authorize sectioncould contain in 1.x.  When a "listen" section is inside of a virtual server definition, itmeans that all requests sent to that IP/port will be processed throughthe virtual server.  There cannot be two "listen" sections with thesame IP address and port number.  When a "client" section is inside of a virtual server definition, itmeans that that client is known only to the "listen" sections that arealso inside of that virtual server.  Not only is this clientdefinition available only to this virtual server, but the details ofthe client configuration is also available only to this virtualserver.  i.e. Two virtual servers can listen on different IP address andports, but both can have a client with IP address 127.0.0.1.  Theshared secret for that client can be different for each virtualserver.4. More complex "listen" capabilities  The "listen" sections have a few additional configuration items thatwere not in 1.x, and were not mentioned above.  These configurationitems enable almost any mapping of IP / port to clients to virtualservers.  The configuration items are:	virtual_server = <name>		If set, all requests sent to this IP / port are processed		through the named virtual server.		This directive can be used only for "listen" sections		that are global.  i.e. It CANNOT be used if the		"listen" section is inside of a virtual server.	clients = <name>		If set, the "listen" section looks for a "clients" section:			clients <name> {				...			}		It looks inside of that named "clients" section for		"client" subsections, at least one of which must		exist.  Each client in that section is added to the		list of known clients for this IP / port.  No other		clients are known.		If it is set, it over-rides the list of clients (if		any) in the same virtual server.  Note that the		clients are NOT additive!		If it is not set, then the clients from the current		virtual server (if any) are used.  If there are no		clients in this virtual server, then the global		clients are used.		i.e. The most specific directive is used:			* configuration in this "listen" section			* clients in the same virtual server			* global clients		The directives are also *exclusive*, not *additive*.		If you have one client in a virtual server, and		another client referenced from a "listen" section,		then that "listen" section will ONLY use the second		client.  It will NOT use both clients.5. More complex "client" capabilities  The "client" sections have a few additional configuration items thatwere not in 1.x, and were not mentioned above.  These configurationitems enable almost any mapping of IP / port to clients to virtualservers.  The configuration items are:	virtual_server = <name>		If set, all requests from this client are processed		through the named virtual server.		This directive can be used only for "client" sections		that are global.  i.e. It CANNOT be used if the		"client" section is inside of a virtual server.  If the "listen" section has a "server" entry, and a matchingclient is found ALSO with a "server" entry, then the clients server isused for that request.6. Worked examples  Listening on one socket, and mapping requests from two clients totwo different servers.	listen {		...	}	client one {		...		virtual_server = server_one	}	client two {		...		virtual_server = server_two	}	server server_one {		authorize {			...		}		...	}	server server_two {		authorize {			...		}		...	}  This could also be done as:	listen {		...		virtual_server = server_one	}	client one {		...	}	client two {		...		virtual_server = server_two	}	server server_one {		authorize {			...		}		...	}	server server_two {		authorize {			...		}		...	}  In this case, the default server for the socket is "server_one", sothere is no need to set that in the client "one" configuration.  The"server_two" configuration for client "two" over-rides the defaultsetting for the socket.  Note that the following configuration will NOT work:	listen {		...		virtual_server = server_one	}	client one {		...	}	server server_one {		authorize {			...		}		...	}	server server_two {		client two {			...		}		authorize {			...		}		...	}  In this example, client "two" is hidden inside of the virtualserver, where the "listen" section cannot find it.7. Outlined examples  This section outlines a number of examples, with alternatives.  One server, multiple sockets	- multiple "listen" sections in a "server" section  one server per client	- define multiple servers	- have a global "listen" section	- have multiple global "clients", each with "virtual_server = X"  two servers, each with their own sockets	- define multiple servers	- put "client" sections into each "server"	- put a "listen" section into each "server"	Each server can list the same client IP, and the secret	can be different  two sockets, sharing a list of clients, but pointing to different servers	- define global "listen" sections	- in each, set "virtual_server = X"	- in each, set "clients = Y"	- define "clients Y" section, containing multiple clients.	This also means that you can have a third socket, which	doesn't share any of these clients.8.  How to decide what to do  If you want *completely* separate policies for a socket or a client,then create a separate virtual server.  Then, map the request to thatserver by setting configuration entries in a "listen" section or in a"client" section.  Start off with the common cases first.  If most of the clientsand/or sockets get a particular policy, make that policy the default.Configure it without paying attention to the sockets or clients youwant to add later, and without adding a second virtual server.  Onceit works, then add the second virtual server.  If you want to re-use the previously defined sockets with the secondvirtual server, then you will need one or more global "client"sections.  Those clients will contain a "virtual_server = ..." entrythat will direct requests from those clients to the appropriatevirtual server.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -