FreeIPA and NFSv4
From Linux NFS
(Finished the DNS section) |
|||
| Line 19: | Line 19: | ||
I'm using VMs on a private NAT'd network, so I just turned off the firewall on the server! You probably shouldn't do that! You'll need to allow traffic on: | I'm using VMs on a private NAT'd network, so I just turned off the firewall on the server! You probably shouldn't do that! You'll need to allow traffic on: | ||
| + | * port 53 for named(1) | ||
* port 88 for kerberos | * port 88 for kerberos | ||
* port 389 for ldap | * port 389 for ldap | ||
* XXX MORE!! | * XXX MORE!! | ||
| - | = Set up DNS | + | = Set up DNS realm = |
| - | == Install | + | == Create the DNS realm on the server == |
| + | |||
| + | === Install named(1) on the server === | ||
<pre> | <pre> | ||
| Line 31: | Line 34: | ||
</pre> | </pre> | ||
| - | == Configure the | + | === Configure the DNS zone === |
Create the file "/var/named/example.fake.zone": | Create the file "/var/named/example.fake.zone": | ||
| Line 61: | Line 64: | ||
</pre> | </pre> | ||
| - | == Configure the reverse mapping == | + | === Configure the reverse mapping === |
Create the file "/var/named/192-168-56.zone": | Create the file "/var/named/192-168-56.zone": | ||
| Line 81: | Line 84: | ||
| - | == Modify named(1) config to use new zone files == | + | === Modify named(1) config to use new zone files === |
Add the sections to file "/etc/named.conf": | Add the sections to file "/etc/named.conf": | ||
| Line 97: | Line 100: | ||
</pre> | </pre> | ||
| - | == Other named(1) config == | + | === Other named(1) config === |
There are a few other things that I needed to configure in my test setup. You probably don't want to turn off dnssec in real world setups! | There are a few other things that I needed to configure in my test setup. You probably don't want to turn off dnssec in real world setups! | ||
| Line 108: | Line 111: | ||
* change "dnssec-validation" option to "no" | * change "dnssec-validation" option to "no" | ||
| - | == | + | === Restart named(1) === |
| + | <pre> | ||
| + | [root@server ~]# service named restart | ||
| + | Restarting named (via systemctl): [ OK ] | ||
| + | </pre> | ||
| - | + | == Configure the client(s) and server to use the local DNS server == | |
| - | + | The server and all clients should use this name server (with this testing environment). With a real DNS server, clients shouldn't require this configuration. | |
| + | Edit file "/etc/sysconfig/network-scripts/ifcfg-eth0" (or whatever is appropriate) and change the DNS1 line to: | ||
| - | + | <pre> | |
| + | DNS1=192.168.56.20 | ||
| + | </pre> | ||
| - | + | Restart the network service to pick up the change. | |
| - | [root@ | + | |
| + | <pre> | ||
| + | [root@server ~]# service network restart | ||
| + | Restarting network (via systemctl): [ OK ] | ||
| + | </pre> | ||
| + | |||
| + | And verify that it worked: | ||
| + | |||
| + | <pre> | ||
| + | [root@server ~]# cat /etc/resolv.conf | ||
# Generated by NetworkManager | # Generated by NetworkManager | ||
search example.fake | search example.fake | ||
nameserver 192.168.56.20 | nameserver 192.168.56.20 | ||
| + | </pre> | ||
| - | [root@ | + | <pre> |
| + | [root@server ~]# nslookup server.example.fake | ||
Server: 192.168.56.20 | Server: 192.168.56.20 | ||
Address: 192.168.56.20#53 | Address: 192.168.56.20#53 | ||
| - | Name: | + | Name: server.example.fake |
| - | Address: 192.168.56. | + | Address: 192.168.56.20 |
| - | + | </pre> | |
| - | + | ||
| - | + | ||
| - | + | ||
Revision as of 22:12, 18 July 2011
This is a WIP by dros@netapp.com - please let me finish before changing/commenting).
This document describes using NFSv4 with FreeIPA.
Historically, setting up a secure NFSv4 export (or even a client) was challenging, requiring the setup of a Kerberos realm and possibly an LDAP server. FreeIPA provides a packaged service of both Kerberos 5 and LDAP with the purpose of making this process much less painful.
These instructions are for Fedora 15. Other distros will require similar setup - the key differences will be a package installation tool other than yum(1), and a different config file layout.
Contents |
Disclaimer about the testing environment
For this example I've used a private network (192.168.56.0/24) with a fake DNS realm (example.fake). Setup with routable IP addresses and a real DNS realm should be straightforward.
For this example I run the DNS server on the same machine as the NFSv4 export and the IPA server (server.example.fake). Of course, these could all be different machines.
I have not tried setting up freeipa without DNS, or using it's own DNS server.
I'm using VMs on a private NAT'd network, so I just turned off the firewall on the server! You probably shouldn't do that! You'll need to allow traffic on:
* port 53 for named(1) * port 88 for kerberos * port 389 for ldap * XXX MORE!!
Set up DNS realm
Create the DNS realm on the server
Install named(1) on the server
[root@server ~]# sudo yum install bind
Configure the DNS zone
Create the file "/var/named/example.fake.zone":
$TTL 3D
@ IN SOA ns1.example.fake. hostmaster.example.fake. (
201107111 ; serial#
3600 ; refresh, seconds
3600 ; retry, seconds
3600 ; expire, seconds
3600 ) ; minimum, seconds
NS ns1 ; Inet Address of nameserver
example.fake. MX 10 mail ; Primary Mail Exchanger
ns1 A 192.168.56.20
server A 192.168.56.20
client1 A 192.168.56.40
ipa CNAME build
mail CNAME build
; DNS auto discovery of services
_ldap._tcp SRV 10 10 389 server.example.fake.
_kerberos._udp SRV 10 10 88 server.example.fake.
_kerberos._tcp SRV 10 10 88 server.example.fake.
Configure the reverse mapping
Create the file "/var/named/192-168-56.zone":
$TTL 2d ; 172800 seconds
$ORIGIN 56.168.192.IN-ADDR.ARPA.
@ IN SOA ns1.example.fake. hostmaster.example.fake. (
201107111 ; serial number
8H ; refresh, seconds
2H ; retry, seconds
4W ; expire, seconds
1D ) ; minimum, seconds
IN NS ns1.example.fake.
20 IN PTR server.example.fake.
40 IN PTR client1.example.fake.
Modify named(1) config to use new zone files
Add the sections to file "/etc/named.conf":
zone "example.fake" IN {
type master;
file example.fake.zone;
};
zone "56.168.192.in-addr.arpa" IN {
type master;
file "192-168-56.zone";
};
Other named(1) config
There are a few other things that I needed to configure in my test setup. You probably don't want to turn off dnssec in real world setups!
In the "options" section:
* change the "listen-on" option to include the server's external address ""{ localhost; 192.168.56.20; }"
* change "allow-query" option to "{ localhost; 192.168.56.0/24 }"
* change "dnssec-enable" option to "no"
* change "dnssec-validation" option to "no"
Restart named(1)
[root@server ~]# service named restart Restarting named (via systemctl): [ OK ]
Configure the client(s) and server to use the local DNS server
The server and all clients should use this name server (with this testing environment). With a real DNS server, clients shouldn't require this configuration.
Edit file "/etc/sysconfig/network-scripts/ifcfg-eth0" (or whatever is appropriate) and change the DNS1 line to:
DNS1=192.168.56.20
Restart the network service to pick up the change.
[root@server ~]# service network restart Restarting network (via systemctl): [ OK ]
And verify that it worked:
[root@server ~]# cat /etc/resolv.conf # Generated by NetworkManager search example.fake nameserver 192.168.56.20
[root@server ~]# nslookup server.example.fake Server: 192.168.56.20 Address: 192.168.56.20#53 Name: server.example.fake Address: 192.168.56.20