RIPE Database User Manual: Getting Started Andrei Robachevsky Shane Kerr Vesna Manojlovic Samantha Dickinson Document ID: ripe-253 Date: 5 September 2002 See also: ripe-252 _______________________________________________________________________ Table of Contents * 1.0 Introduction * 2.0 Objectives * 2.1 The RIPE Database * 2.1.1 Database objects * 2.1.2 TEST Database 2.2 How to get information from the RIPE Database * 2.2.1 Web queries * 2.2.2. Making simple queries 2.3 How to maintain information in the RIPE Database * 2.3.1 Creating objects * 2.3.2 Registering contact information * 2.3.3 Registering authentication information * 2.3.4 Protecting your contact information * 2.3.5 Locating network assignments * 2.3.6 Recording network assignments * 2.3.7 Updating the inetnum object * 2.3.8 Deleting objects 2.4 Using the production RIPE Database 2.5 Where to learn more * 2.5.1 Whois help * 2.5.2 Database FAQ * 2.5.3 RIPE Database Reference Manual * 2.5.4 LIR Training Courses * 2.5.5 Specific questions _______________________________________________________________________ 1.0 Introduction This document is intended for users who have no previous experience with the RIPE Database. It is a hands-on tutorial that walks the reader through the basic concepts and techniques that are needed to use the RIPE Database using examples and exercises. This document is not intended to be a complete reference. Full information on the RIPE Database may be found in the RIPE Database Reference Manual at: http://www.ripe.net/ripe/docs/databaseref-manual.html 2.0 Objectives This document should give the reader a basic understanding of the following concepts: * What the RIPE Database is * How to get information from the RIPE Database * How to maintain information in the RIPE Database 2.1 The RIPE Database The RIPE Database is a public database that contains information about registered IP address space and AS numbers, routing policies, and reverse DNS delegations in the RIPE region. It is used for Internet network management. 2.1.1 Database objects Records in the RIPE Database are called "objects". Each object is a list of "attribute-value" pairs displayed in plain text. An example: person: John Smith address: Example LTD High street 12 St.Mery Mead Essex, UK phone: +44 1737 892 004 e-mail: john.smith@example.com nic-hdl: JS9-TEST mnt-by: EXAMPLE-MNT remarks: ******************************* remarks: This object is only an example! remarks: ******************************* changed: john.smith@example.com 20020827 changed: john.smith@example.com 20020828 source: TEST This is a person object for John Smith. The attributes are "person:", "address:", "phone:", and so on. An attribute name always starts on the first column, and ends with a colon. Everything after the colon is the value. Objects can store information about different resources. For example: Network management resource Object types IP address ranges inetnum, inet6num Routing policies aut-num, route, etc. Reverse DNS delegations domain Contact information person, role Authentication information mntner 2.1.2 TEST Database The RIPE NCC provides a test database where users may learn how to use the database software. The TEST Database uses the same software as the RIPE Database but changes in the TEST Database do not affect the RIPE Database. The data in the TEST database is not a copy of the data in the RIPE Database and is provided purely for learning purposes. All examples below use the TEST Database. However all procedures described are the same for the RIPE Database. In the last section, we will explain what the differences are when using the RIPE Database. Please do not use the RIPE Database for testing purposes. We would also appreciate if you delete all objects you have created in the TEST Database when you have finished performing the exercises described below. 2.2 How to get information from the RIPE Database 2.2.1 Web queries The simplest way to get information from the TEST Database is to use a web interface available at: http://www.ripe.net/perl/test-whois 2.2.2 Making simple queries To query for a particular object the user specifies its "primary key". A primary key is an attribute that uniquely identifies this type of the object. Object type Primary attribute Example inetnum inetnum 193.0.0.0 - 193.0.0.255 inet6num inet6num 2001:0610:0240::/42 person nic-hdl: JS9-TEST You will get a reply that includes the object in section 2.1.1. 2.3 How to maintain information in the RIPE Database The RIPE Database is used for storing information about Internet resources. You will need to create objects in the database to document your usage of these resources. Objects in the RIPE Database must reflect the current state of the resources they describe. Therefore, it is also important to update objects as the details of resources change, or delete objects if resources are no longer used. If IP addresses are assigned to customers, or new staff members are appointed as contacts, it is important to create new objects to reflect this in the database. Updates to the database are submitted via e-mail. Objects to be created, modified, or deleted are sent to a special address where they get processed automatically. A reply is e-mailed back to the sender with the results of the operation. If there are any errors when processing the e-mail submission, the e-mail message mailed back to the sender will include an error report. If the report does not help locate the problem, the sender should forward a copy of the original e-mail and the error report to . A RIPE NCC staff member can then help locate the problem. The following sections describe the process of creating and maintaining objects in the RIPE Database. By the end of the document, you will have learned how to create and protect an object representing a network assignment. 2.3.1 Creating objects The inetnum object contains information about registered IP address space: the range of numbers, status, and responsible contacts. Before this object can be created in the database, information that is referenced by this object must be created in the database first. This requires the creation of the following objects: 1. A person object representing a responsible administrative and technical contact for this network, referenced from the "admin-c:" and "tech-c:" attributes of the inetnum object. 2. A mntner object containing authentication information about who can modify contents of this object, referenced from the "mnt-by:", "mnt-lower:", and "mnt-routes:" attributes of the inetnum object. The mntner object protects the inetnum object. 3. After that we can create the inetnum object. 2.3.2 Registering contact information Contact information, such as a phone number and e-mail address, is stored in the person object. To create a new person object in the database: 1. Copy the person object template. The template lists the possible attributes in an object and some information about each attribute. To get the template, type the following in the query window: -t person You will get a reply that looks something like this: person: [mandatory] [single] [lookup key] address: [mandatory] [multiple] [ ] phone: [mandatory] [multiple] [ ] fax-no: [optional] [multiple] [ ] e-mail: [optional] [multiple] [lookup key] nic-hdl: [mandatory] [single] [primary/look-up key] remarks: [optional] [multiple] [ ] notify: [optional] [multiple] [inverse key] mnt-by: [optional] [multiple] [inverse key] changed: [mandatory] [multiple] [ ] source: [mandatory] [single] [ ] 2. Copy the text into a text editor (e.g. notepad or vi). Delete everything to the right of the colon and fill in attribute values. You must complete the attributes listed as "mandatory." An attribute that is "multiple" can be used more than once in an object. You may choose not to complete the optional attributes. However, if you choose not to include optional attributes, you must delete the optional attribute entirely, rather than leaving the value empty. Use "AUTO-1" for the "nic-hdl:" attribute, your e-mail address for the "changed:" attribute, and "TEST" for the "source:" attribute. person: John Smith address: Example LTD High street 12 St.Mery Mead Essex, UK phone: +44 1737 892 004 e-mail: john.smith@example.com nic-hdl: AUTO-1 remarks: ******************************* remarks: This object is only an example! remarks: ******************************* changed: john.smith@example.com source: TEST 3. Send the completed object template in plain text to . 4. Wait for the acknowledgement to come back from the TEST Database. This may take several minutes. If your update was successful you will get a reply containing something like the following: Your update was SUCCESSFUL. The following objects were processed. New OK: [person] JS9-TEST Note the text after the [person] tag. This is the NIC handle of the person, and the "AUTO-1" text is changed to this value. It is guaranteed to be unique and is the primary key of this person object. Any references to this person object will use this NIC handle. You can use the new "nic-hdl:" attribute to query for this object. If you do this, you can also see that the "changed:" attribute has had the date of the creation added. If there was an error, the acknowledgement will indicate failure of the object creation along with the errors encountered. For example, it may contain the following: Part of your update FAILED. Objects without errors have been processed. Update FAILED: Syntax error in object 2.3.3 Registering authentication information "Authentication" is when you prove that you are who you claim to be. This information is needed to prevent other users from modifying your data. In the database, the information needed for verifying authentication is stored in the mntner object (also called the maintainer object). To create a new mntner object in the database, do the following: 1. Copy the mntner object template. To get the template, along with a detailed description of the meaning and syntax of each allowed attribute, type the following in the query window: -v mntner You will get a reply that looks something like the following: mntner: [mandatory] [single] [primary/look-up key] descr: [mandatory] [multiple] [ ] admin-c: [mandatory] [multiple] [inverse key] tech-c: [optional] [multiple] [inverse key] upd-to: [mandatory] [multiple] [inverse key] mnt-nfy: [optional] [multiple] [inverse key] auth: [mandatory] [multiple] [ ] remarks: [optional] [multiple] [ ] notify: [optional] [multiple] [inverse key] mnt-by: [mandatory] [multiple] [inverse key] referral-by: [mandatory] [single] [inverse key] changed: [mandatory] [multiple] [ ] source: [mandatory] [single] [ ] The content of the attributes of the mntner class are defined below: mntner A unique identifier of the mntner object. Made up of letters, digits, the character underscore "_", and the character hyphen "-"; the first character of a name must be a letter, and the last character of a name must be a letter or a digit. 2. As with the person object, delete everything to the right of the colon and fill in attribute values. You must complete the attributes listed as mandatory and should delete optional attributes that you do not use. Use "TEST-MNT" for the "referral-by:" attribute. mntner: EXAMPLE-MNT descr: Sample maintainer for example admin-c: JS9-TEST tech-c: JS9-TEST upd-to: john.smith@example.com mnt-nfy: john.smith@example.com auth: MD5-PW $1$WKwrFYYt$.oop28gKMiamE52SVHjyn0 mnt-by: EXAMPLE-MNT referral-by: TEST-MNT changed: john.smith@example.com source: TEST 3. You must choose your own mntner value, which is EXAMPLE-MNT in the example. Follow the rules that you received from the "-v mntner" query when choosing the name. 4. For the "admin-c:" and "tech-c:" you should use the value of the "nic-hdl:" in the person object created beforehand. The database will not allow you to create a mntner object unless this person object already exists. 5. The "auth:" attribute begins with a keyword identifying the authentication method and is followed by the authentication information needed to enforce that method. In the example given, the MD5-PW method is used. For both the MD5-PW and CRYPT-PW methods, a password is used to authenticate database operations. To encrypt your password to MD5-PW, you can use the web tools here: http://www.ripe.net/cgi-bin/cgicrypt.pl.cgi 6. Send the completed object template in plain text to . 7. Wait for the acknowledgement to come back from the database. If your update was successful you will get a reply containing something like the following: Your update was SUCCESSFUL. The following objects were processed. New OK: [mntner] EXAMPLE-MNT If there was an error, the acknowledgement will indicate failure of the object creation along with the errors encountered. For example, it may contain the following: Part of your update FAILED. Objects without errors have been processed. Update FAILED: Syntax error in object 8. The e-mail address in the "mnt-nfy" attribute of the mntner will be sent an e-mail of the details of the new object. You can now query the server and see your new mntner object. Type the following in the query window, substituting your mntner name: EXAMPLE-MNT You will get back your new mntner object, as well as the person object referenced. mntner: EXAMPLE-MNT descr: Sample maintainer for example admin-c: JS9-TEST tech-c: JS9-TEST upd-to: john.smith@example.com mnt-nfy: john.smith@example.com auth: MD5-PW $1$WKwrFYYt$.oop28gKMiamE52SVHjyn0 mnt-by: EXAMPLE-MNT referral-by: TEST-MNT changed: john.smith@example.com 20020827 source: TEST person: John Smith address: Example LTD High street 12 St.Mery Mead Essex, UK phone: +44 1737 892 004 e-mail: john.smith@example.com nic-hdl: JS9-TEST remarks: ******************************* remarks: This object is only an example! remarks: ******************************* changed: john.smith@example.com 20020827 source: TEST By default, a query returns the contact information associated with an object. This is why the person object is returned. If you do not want the referral contact information, use the "disable recursion" flag on the query, "-r". You can see this by typing the same query into the query window, putting the flag in front: -r EXAMPLE-MNT Now you will get only the mntner object. Disabling recursion can result in a smaller, easier to understand reply if you do not care about contact information. This is often the case when managing your own objects. 2.3.4 Protecting your contact information Now that you have a mntner, you can protect objects in the database. An object is protected by a mntner if it references the mntner in the "mnt-by:" attribute. Only a mntner listed as "mnt-by:" is authorised to make changes to an object. Most objects types require that you protect them with your mntner. However, person objects do not. It is recommended that you protect them. To protect your person object: 1. Get a copy of your current person object. In the query window type the "nic-hdl:" of your person object: JS9-TEST You will get back your current object in the database. You can also search by typing in a name. In this case, the database will return all person objects that have that name. For common names there may be many objects returned. 2. Copy the object returned by the query. person: John Smith address: Example LTD High street 12 St.Mery Mead Essex, UK phone: +44 1737 892 004 e-mail: john.smith@example.com nic-hdl: JS9-TEST remarks: ******************************* remarks: This object is only an example! remarks: ******************************* changed: john.smith@example.com 20020827 source: TEST 3. Add your mntner as the "mnt-by:" for your person object. The database will not allow you to use a "mnt-by:" unless the mntner object already exists. 4. Add a "changed:" line to reflect the fact that you are updating the object. person: John Smith address: Example LTD High street 12 St.Mery Mead Essex, UK phone: +44 1737 892 004 e-mail: john.smith@example.com nic-hdl: JS9-TEST remarks: ******************************* remarks: This object is only an example! remarks: ******************************* mnt-by: EXAMPLE-MNT # new "mnt-by:" attribute changed: john.smith@example.com 20020827 changed: john.smith@example.com # new "changed:" attribute source: TEST 5. When you add a mntner to an object that does not have one, you must authenticate yourself as the new mntner. Since the example uses the MD5-PW method, add a password line to your e-mail. This must start on the first column but can occur anywhere within the body of the message: password: your_cleartext_password_here 6. Send the updated object template to . 7. Wait for the acknowledgement to come back from the database. It will indicate success or failure of your update. 2.3.5 Locating network assignments Network assignments are represented by inetnum objects. Before you can create a new inetnum you must find a range of IP addresses that are not currently assigned. This section describes how you can query the database for this information. You can also use the queries for any other purpose when you want to get IP address information from the database. By default, the database returns the smallest range that includes the entire range queried. This is a "less specific" query. For example, if you query the following: 10.11.12.0 - 10.11.13.255 You might get something like this: inetnum: 10.0.0.0 - 10.255.255.255 netname: IANA-ABLK-RESERVED1 descr: Class A address space for private internets descr: See http://www.ripe.net/db/rfc1918.html for details country: NL admin-c: role1-TEST tech-c: role1-TEST status: ALLOCATED UNSPECIFIED remarks: Country is really worldwide remarks: This network should never be routed outside an enterprise remarks: See RFC1918 for further information mnt-by: TEST-DBM-MNT mnt-lower: TEST-DBM-NONE-MNT mnt-routes: TEST-DBM-NONE-MNT changed: ripe-dbm@ripe.net 20020902 source: TEST This is the less specific match. The 10.11.12.0 - 10.11.13.255 inetnum fits entirely within the 10.0.0.0 - 10.255.255.255 inetnum. This is the smallest such block. If you want the server to give you only an exact match, then you can request this using the "-x" flag. An exact match is one where the IP range of the inetnum are the same as the IP range of the query. -x 10.11.12.0 - 10.11.13.255 In this case you will get only an exact match, or an error indicating that no such inetnum exists: %ERROR:101: no entries found % % No entries found in the selected source(s). Sometimes you want to see all of the less specific inetnum to a range. In this case, you can use the "-L" flag. If you do this, you will see all inetnum that include the entire range queried. For example, if you query the following: -L 10.11.12.0 - 10.11.13.255 You might get something like this: inetnum: 0.0.0.0 - 255.255.255.255 netname: IANA-BLK descr: The whole IPv4 address space country: NL admin-c: role1-TEST tech-c: role1-TEST status: ALLOCATED UNSPECIFIED remarks: Country is really worldwide remarks: This address space is assigned at various remarks: other places in the world. mnt-by: TEST-DBM-MNT mnt-lower: TEST-DBM-NONE-MNT mnt-routes: TEST-DBM-NONE-MNT changed: ripe-dbm@ripe.net 20010418 source: TEST inetnum: 10.0.0.0 - 10.255.255.255 netname: IANA-ABLK-RESERVED1 descr: Class A address space for private internets descr: See http://www.ripe.net/db/rfc1918.html for details country: NL admin-c: role1-TEST tech-c: role1-TEST status: ALLOCATED UNSPECIFIED remarks: Country is really worldwide remarks: This network should never be routed outside an enterprise remarks: See RFC1918 for further information mnt-by: TEST-DBM-MNT mnt-lower: TEST-DBM-NONE-MNT mnt-routes: TEST-DBM-NONE-MNT changed: ripe-dbm@ripe.net 20020902 source: TEST You can also look for smaller inetnum contained within a given range. This is a "more specific" query. You can use this on an allocation to look for ranges that have no other assignments. To do this, use the "-m" flag: -m 10.0.0.0 - 10.255.255.255 You will get a reply that resembles something like this: inetnum: 10.11.13.0 - 10.11.13.255 netname: Example-Network descr: This is a fictitious assignment for the end-user "Example" country: GB admin-c: JS9-TEST tech-c: JS9-TEST status: ASSIGNED PA notify: john.smith@example.com mnt-by: EXAMPLE-MNT mnt-lower: EXAMPLE-MNT mnt-routes: EXAMPLE-MNT changed: john.smith@example.com 20020827 source: TEST inetnum: 10.11.11.0 - 10.11.11.255 netname: Example-Network-2 descr: This is a fictitious assignment for the end-user "Example" country: GB admin-c: JS9-TEST tech-c: JS9-TEST status: ASSIGNED PA notify: john.smith@example.com mnt-by: EXAMPLE-MNT mnt-lower: EXAMPLE-MNT mnt-routes: EXAMPLE-MNT changed: john.smith@example.com 20020903 source: TEST This is a "one-level more specific" query. This means that the largest inetnum that are within the given range are returned. In this example the IP addresses 10.11.12.0 - 10.11.12.255 are not assigned and are available. You will need to find an available range to be able to do the next exercise. If you want to see all inetnum smaller than a given range, you can use the "-M" flag: -M 10.0.0.0 - 10.255.255.255 This will return all levels of inetnum in the range. This can return an extremely large number of objects, but can be useful for finding all of the inetnum for a portion of the Internet. 2.3.6 Recording network assignments Now that all of the objects necessary for an inetnum have been created and protected and you have located an appropriate range of IP numbers, you can create the inetnum object itself. To create a new inetnum in the database: 1. Copy the inetnum object template. To get the template, type the following in the query window: -t inetnum You will get a reply that looks something like the following: inetnum: [mandatory] [single] [primary/look-up key] netname: [mandatory] [single] [lookup key] descr: [mandatory] [multiple] [ ] country: [mandatory] [multiple] [ ] admin-c: [mandatory] [multiple] [inverse key] tech-c: [mandatory] [multiple] [inverse key] rev-srv: [optional] [multiple] [inverse key] status: [mandatory] [single] [ ] remarks: [optional] [multiple] [ ] notify: [optional] [multiple] [inverse key] mnt-by: [mandatory] [multiple] [inverse key] mnt-lower: [optional] [multiple] [inverse key] mnt-routes: [optional] [multiple] [inverse key] mnt-irt: [optional] [multiple] [inverse key] changed: [mandatory] [multiple] [ ] source: [mandatory] [single] [ ] 2. Delete everything to the right of the colon and fill in attribute values. You must complete the attributes listed as mandatory and should delete optional attributes that you do not use. Use "ASSIGNED PA" for the "status:" attribute, and your e-mail address for the "notify:" attribute. The e-mail address specified in the "notify:" attribute will get mailed when the object changes. You must choose your own "netname:", using the same rules as you did to choose a mntner name. inetnum: 10.11.12.0 - 10.11.12.255 netname: Example-Network descr: This is a fictitious assignment for the end-user "Example" country: GB admin-c: JS9-TEST tech-c: JS9-TEST status: ASSIGNED PA notify: john.smith@example.com mnt-by: EXAMPLE-MNT mnt-lower: EXAMPLE-MNT mnt-routes: EXAMPLE-MNT changed: john.smith@example.com source: TEST 3. When a new object is created that has a "mnt-by:" attribute, the mntner must authorise the creation. Add the appropriate password for the mntner in the "mnt-by:" attribute: password: your_cleartext_password_here 4. Send the completed object template in plain text to . 5. Wait for the acknowledgement to come back from the database. If your update was successful you will get a reply containing something like the following: Your update was SUCCESSFUL. The following objects were processed. New OK: [inetnum] 10.11.12.0 - 10.11.12.255 If there was an error, the acknowledgement will indicate failure of the object creation along with the errors encountered. For example, it may contain the following: Part of your update FAILED. Objects without errors have been processed. Update FAILED: Syntax error in object 6. The e-mail address in the "mnt-nfy" attribute of the mntner will be sent an e-mail of the details of the new object. 2.3.7 Updating the inetnum object Suppose you later need to update information in your inetnum object. For instance, the technical contact has changed and is now represented by the person object "JJ1-TEST". (You must create a new person object before you can follow this example.) To update an existing object, do the following: 1. Query the RIPE Database for the object. 10.11.12.0 - 10.11.12.255 2. Copy the object returned by the query. inetnum: 10.11.12.0 - 10.11.12.255 netname: Example-Network descr: This is a fictitious assignment for the end-user "Example" country: GB admin-c: JS9-TEST tech-c: JS9-TEST status: ASSIGNED PA notify: john.smith@example.com mnt-by: EXAMPLE-MNT mnt-lower: EXAMPLE-MNT mnt-routes: EXAMPLE-MNT changed: john.smith@example.com 20020828 source: TEST 3. Change the "tech-c:" attribute. Add a "notify:" attribute so the new technical contact will be notified when the inetnum is modified. inetnum: 10.11.12.0 - 10.11.12.255 netname: Example-Network descr: This is a fictitious assignment for the end-user "Example" country: GB admin-c: JS9-TEST tech-c: JJ1-TEST # changed to new nic-hdl status: ASSIGNED PA notify: john.smith@example.com notify: jan.jansen@example.com # added new notify mnt-by: EXAMPLE-MNT mnt-lower: EXAMPLE-MNT mnt-routes: EXAMPLE-MNT changed: john.smith@example.com 20020828 changed: john.smith@example.com # new changed line source: TEST Please note that you cannot change the primary attribute of the object (inetnum: 10.11.12.0 - 10.11.12.255). The database will consider this to be a creation of a new object. 4. To change an object that is protected by a "mnt-by:" attribute, you must add the appropriate authentication: password: your_cleartext_password_here 5. Send the updated object template to 6. Wait for the acknowledgement to come back from the database. It will indicate success or failure of your update. 7. The e-mail address in the "notify:" attribute of the original object will be sent a message with the details of the change. 2.3.8 Deleting objects Sometimes you no longer need objects you maintain. These should be deleted. For example, if the assignment is no longer used you should delete the inetnum object and all person objects that are only referenced from that object. To delete an existing object: 1. Query the database for your object. 2. Copy the object returned by the query. 3. Add a special "delete:" attribute to the object explaining why the object should be deleted. For example: inetnum: 10.11.12.0 - 10.11.12.255 netname: Example-Network descr: This is a fictitious assignment for the end-user "Example" country: GB admin-c: JS9-TEST tech-c: JJ1-TEST status: ASSIGNED PA notify: john.smith@example.com notify: jan.jansen@example.com mnt-by: EXAMPLE-MNT mnt-lower: EXAMPLE-MNT mnt-routes: EXAMPLE-MNT changed: john.smith@example.com 20020828 changed: john.smith@example.com 20020829 source: TEST delete: assignment returned by customer 4. To delete an object that is protected by a "mnt-by:" attribute, you must add the appropriate password: password: your_cleartext_password_here 5. Send the object to be deleted to . 6. Wait for the acknowledgement to come back from the database. It will indicate success or failure of your deletion. 7. The e-mail addresses in the "notify:" attribute of the object will be sent a message with the details of the deletion. Objects that are referenced by other objects cannot be deleted. For example, a mntner object cannot be deleted while is used as an "mnt-by:" or a "mnt-lower:". You can find the references to a mntner object by using an inverse query. Type the following in the query window, substituting your mntner object: -i mnt-by,mnt-lower,mnt-routes -r EXAMPLE-MNT This will return all of the objects that reference EXAMPLE-MNT. The "-i" flag requests the inverse query, and the "mnt-by,mnt-lower,mnt-routes" specify which attributes you want to look for. There must not be a space after the comma. The "-r" disables recursion, as seen in section 2.3.3. Since an organisation usually uses one mntner, you can use this query to locate all of the objects for an organisation. Before you can delete a mntner, you must remove all references to it. For example, if you have the following mntner and person: mntner: EXAMPLE-MNT descr: Sample maintainer for example. admin-c: JS9-TEST tech-c: JS9-TEST upd-to: john.smith@example.com mnt-nfy: john.smith@example.com auth: MD5-PW $1$WKwrFYYt$.oop28gKMiamE52SVHjyn0 mnt-by: EXAMPLE-MNT referral-by: TEST-MNT changed: john.smith@example.com 20020827 source: TEST person: John Smith address: Example LTD High street 12 St.Mery Mead Essex, UK phone: +44 1737 892 004 e-mail: john.smith@example.com nic-hdl: JS9-TEST remarks: ******************************* remarks: This object is only an example! remarks: ******************************* mnt-by: EXAMPLE-MNT changed: john.smith@example.com 20020827 changed: john.smith@example.com 20020828 source: TEST The mntner "EXAMPLE-MNT" cannot be deleted because it is referenced by the person "JS9-TEST", and the person "JS9-TEST" cannot be deleted because it is referenced by the mntner "EXAMPLE-MNT". To delete these objects, do the following: 1. Update the person object, and remove the "mnt-by:" attribute. This removes all protection, but this is not a security issue because the object will be deleted soon. 2. Delete the mntner object. 3. Delete the person object. (Please remember to delete all objects you created in the TEST Database while doing these exercises.) 2.4 Using the production RIPE Database You should now have an understanding of the basic concepts of the RIPE Database and be able to maintain your own data and perform queries. This section details the differences between the TEST Database and the RIPE Database. 1. Queries use a different search tool: http://www.ripe.net/perl/whois 2. Objects in the RIPE Database use RIPE instead of TEST for both the "source:" attribute and the suffix appended to "nic-hdl:" attributes. 3. Updates to the RIPE Database should be sent to rather than . 4. You cannot create your own mntner object in the RIPE Database. You should send your update to but it will be processed by a RIPE NCC staff member. mntner objects are only created for users who are referenced as the "admin-c:" or "tech-c:" for inetnum, inet6num, aut-num, or domain objects. 5. You should not create inetnum objects in the RIPE Database unless you have received authorisation by the LIR that holds the responsibility for that address range. 2.5 Where to learn more The following resources are available to help you as you use the RIPE Database. 2.5.1 Whois help A query for "help" will return a full list of all of the flags that you can use to query the database. help While some of these have been covered in this document, many have not. 2.5.2 Database FAQ The Database Frequently Asked Questions (FAQs) is available at: http://www.ripe.net/ripencc/faq/database/index.html This is updated with helpful information based on the needs of the users and new features offered by the software. 2.5.3 RIPE Database Reference Manual The definitive source of information for the RIPE Database is the RIPE Database Reference Manual. The latest version of this is available from the RIPE Document Store at: http://www.ripe.net/ripe/docs/databaseref-manual.html It contains detailed specifications on all of the topics covered in this guide, as well as every aspect of using the RIPE Database. 2.5.4 LIR Training Courses The RIPE NCC provides training for Local Internet Registries. More information about the RIPE NCC LIR Training Courses can be found at: http://www.ripe.net/training/ 2.5.5 Specific questions If you have a specific question that has not been answered in this guide, you may post it to the mailing list. Details about this list can be found here: http://www.ripe.net/ripe/mail-archives/db-help/index.html You can also e-mail your question to