diff --git a/firewall/models.py b/firewall/models.py
index fc9e36e..ac5d613 100644
--- a/firewall/models.py
+++ b/firewall/models.py
@@ -120,6 +120,12 @@ class Alias(models.Model):
     created_at = models.DateTimeField(auto_now_add=True)
     modified_at = models.DateTimeField(auto_now=True)
 
+    def clean(self):
+        # FIXME later: critical race condition
+        for h in Host.objects:
+            if h.get_fqdn() == self.alias:
+                raise ValidationError(_("Host name already used."))
+
     class Meta:
         verbose_name_plural = 'aliases'
 
@@ -182,6 +188,13 @@ class Host(models.Model):
     def get_fqdn(self):
         return self.hostname + u'.' + self.vlan.domain
 
+    def clean(self):
+        # FIXME later: critical race condition
+        for a in Alias.objects:
+            if self.get_fqdn() == a.alias:
+                raise ValidationError(_("Host name already used as alias."))
+
+
 
 class Firewall(models.Model):
     name = models.CharField(max_length=20, unique=True)