Автор Тема: Dns+mail server  (Прочетена 2794 пъти)

Archer

  • Напреднали
  • *****
  • Публикации: 56
    • Профил
Dns+mail server
« -: Oct 11, 2006, 16:37 »
Здравейте, реших да си направя личен майл сървър, но имам следния проблем при конфигурирането му: На една машина  която е с реалено IP съм пуснал рутер и DNS, който е authority за моя домейн. Зад този компютър съм пуснал един майл сървър, който обаче е с частно IP. Предварително искам да кажа, че съм направил пренасочванията на майл портовете към вътрешната машина и пренасочването работи. проблема е, че когато направя обръщение към майл сървъра ми се казва, че не може да бъде намерен същия. От тук си правя заключението, че явно нещо с пренасочването в SOA записа не е наред. За по-голяма яснота прилагам записа от "hosting provider" и SOA record.


При hosting provider:

Адрес                  Тип на запис             Стойност
****************************************
domain.net                 А                       реалното IP
domain.net                MX                      10 mail.domain.net.
*.domain.net              A                       реалното IP
*.domain.net             MX                      10 mail.domain.net.


SOA record на моя DNS server

; zone file for domain.net
$TTL 2d ; zone TTL default = 2 days or 17280 seconds
domain.net.     IN   SOA   ns.domain.net.   root.ns.domain.net(
                                   2006101101   ; serial number
                                   43200           ; refresh = 12 hours
                                  7200            ; update retry = 2 hour
                                   604800         ; expiry = 1 week
                                   86400           ; minimum = 1 day
                                   )
                                   IN       NS      ns.domain.net.
                                   IN       MX    10 mail.domain.net.

                 ns               IN       A       реалното IP
             domain.net.       IN       A        реалното IP
 localhost.domain.net.      IN       A       127.0.0.1
                mail              IN        A       реалното IP



В допълнение искам да кажа, че съм разрешил DNS server  да бъде достъпен отвън за всеки(това го направих по препоръка на един познат, който ми каза, че така трябвало да бъде).
Ами общо взето това е. Ако някой смята, че може да помогне, но все пак се нуждае от реалния домайн или пък от някоя друга конфигурация може да ми изпрати ЛС.


Благодаря предварително
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 2909
    • Профил
Dns+mail server
« Отговор #1 -: Oct 12, 2006, 09:27 »
Виж тук как можеш да го тестваш с помощта на telnet. Направи тестове отвътре по IP (като ползваш частното IP) и с mail.domain.net, но според мен е по-добре да имаш две различни зони за запитвания към DNS отвътре и за отвън. После направи тестове и отвън като ползваш публичното IP, а след това и mail.domain.net. Препращам те да четеш за sendmail, но този начин за тестване е универсален. По-напред в описанието има обяснения и за настройката на DNS. Казваш "пренасочването работи". Предполагам, че имаш предвид пренасочването чрез iptables и че проблемът ти може да се окаже там.



Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Dns+mail server
« Отговор #2 -: Oct 12, 2006, 12:19 »
Записите в хостинг доставчика ми подсказват, че DNS сървъра, който е на твоята машина, не е authoritative за зоната. За да бъде такъв трябва да ти бъде делегирана зоната, а това става чрез NS записи, примерно:

domain.net  IN  NS  your.dns.server.hostname

Ако your.dns.server.hostname е от същия домейн (domain.net) се прави glue запис:

your.dns.server.hostname.domain.net IN A <your.pubic.ip.address>

Това трябва да присъства в DNS-а на хостинг компанията (регистратора май се водеше).

Не знам за какво пренасочване на SOA записи говориш, не съм чувал за такова нещо.

Я поясни малко какво имаш предвид под "правя обръщение към мейл сървъра"? Не успяваш да пращаш поща, да получаваш поща, или и двете? Дай си правилата от iptables, ако не те притеснява. Кажи какъв пощенски сървър си инсталирал.



Активен

Archer

  • Напреднали
  • *****
  • Публикации: 56
    • Профил
Dns+mail server
« Отговор #3 -: Oct 12, 2006, 16:29 »
Цитат
Дай си правилата от iptables, ако не те притеснява. Кажи какъв пощенски сървър си инсталирал.


#!/bin/sh
#RULES FOR FIREWALL & NAT

ifconfig eth0 up 83.228.113.50
ifconfig eth0 netmask 255.255.252.0
ifconfig eth1 up 192.168.110.1
ifconfig eth1 netmask 255.255.255.0

#NQKOLKO PROMENLIVI ZA PO-GOLQMA QSNOTA

IPT="/usr/sbin/iptables"
IFACE_EXT=eth0
IFACE_INT=eth1
IP_EXT=83.228.113.50
IP_INT=192.168.110.1
NET_INT=192.168.110.0/24
SRV_ADR=192.168.110.2

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

#**************************************************************#

#START

echo -n "Loading FIREWALL !!!"

#ZAREJDAME MODULITE NA QDROTO

#IZHVURLQME STARITE PRAVILA, STARITE TEBLICI

$IPT --flush
$IPT --delete-chain
$IPT --flush -t nat
$IPT --delete-chain -t nat

#ZADAVAME "DROP" KATO STANDARTNO POVEDENIE NA TRITE VGRADENI VERIGI

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

#DAVAME SVOBODA NA I-FACE ZA OBRATNA VRUZKA

$IPT -I INPUT 1 -i lo -j ACCEPT
$IPT -I OUTPUT 1 -o lo -j ACCEPT

#****************************************************************************************#

#PRAVILA PROTIV PODPRAVENI IP ADDRESSI VUV "INPUT" VERIGATA

$IPT -A INPUT -s 255.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 255.0.0.0/8 -j DROP

$IPT -A INPUT -s 0.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 0.0.0.0/8 -j DROP

$IPT -A INPUT -s 127.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 127.0.0.0/8 -j DROP

$IPT -A INPUT -s 10.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 10.0.0.0/8 -j DROP

$IPT -A INPUT -s 172.16.0.0/12 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 172.16.0.0/12 -j DROP

#Paket sus IP:192.168.0.0/16 idva ot internet  na i-face eth0=83.228.113.50
$IPT -A INPUT -s 192.168.0.0/16 -i $IFACE_EXT -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s 192.168.0.0/16 -i $IFACE_EXT -j DROP
 
#Paket razlichen ot tozi na vutreshnata mreja idva na vutreshen i-face eth1=192.168.110.1
$IPT -A INPUT -s ! $NET_INT -i $IFACE_INT -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s ! $NET_INT -i $IFACE_INT -j DROP

#Paket sus IP:192.168.110.1 idva na i-face eth1=192.168.110.1
$IPT -A INPUT -s $IP_INT -i $IFACE_INT -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s $IP_INT -i $IFACE_INT -j DROP

#Paket sus IP:83.228.113.50 idva na i-face eth0=83.228.113.50
$IPT -A INPUT -s $IP_EXT -i $IFACE_EXT -j LOG --log-prefix "Spoofed source IP!"
$IPT -A INPUT -s $IP_EXT -i $IFACE_EXT -j DROP

#******************************************************************************************
*#

#PRAVILA PROTIV PODPRAVENI IP ADDRESSI VUV "FORWARD" VERIGATA

$IPT -A FORWARD -s 255.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s 255.0.0.0/8 -j DROP

$IPT -A FORWARD -s 0.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s 0.0.0.0/8 -j DROP

$IPT -A FORWARD -s 127.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s 127.0.0.0/8 -j DROP

$IPT -A FORWARD -s 10.0.0.0/8 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s 10.0.0.0/8 -j DROP

$IPT -A FORWARD -s 172.16.0.0/12 -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s 172.16.0.0/12 -j DROP

#Paket sus IP:192.168.0.0/16 idva ot internet  na i-face eth0=83.228.113.50
$IPT -A FORWARD -s 192.168.0.0/16 -i $IFACE_EXT -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s 192.168.0.0/16 -i $IFACE_EXT -j DROP
 
#Paket razlichen ot tozi na vutreshnata mreja idva na vutreshen i-face eth1=192.168.110.1
$IPT -A FORWARD -s ! $NET_INT -i $IFACE_INT -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s ! $NET_INT -i $IFACE_INT -j DROP

#Paket sus IP:192.168.110.1 idva na i-face eth1=192.168.110.1
$IPT -A FORWARD -s $IP_INT -i $IFACE_INT -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s $IP_INT -i $IFACE_INT -j DROP

#Paket sus IP:83.228.113.50 idva na i-face eth0=83.228.113.50
$IPT -A FORWARD -s $IP_EXT -i $IFACE_EXT -j LOG --log-prefix "Spoofed source IP!"
$IPT -A FORWARD -s $IP_EXT -i $IFACE_EXT -j DROP

#******************************************************************************************
***#

#INPUT POLICY

#Priema vhodqshtite paketi, koito sa chast ot veche odobreni sesii
$IPT -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

#Vsichki sesii po TCP trqbva da zapochvat sus SYN flag
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "Stealth scan attempt!"
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

#Priema SSH sesii ot internet
$IPT -A INPUT -p tcp -j ACCEPT --dport 22 -m state --state NEW

#Priema SSH sesii ot vutreshnata mreja
$IPT -A INPUT -p tcp -s $NET_INT --dport 22 -m state --state NEW -j ACCEPT

#Priema zaqwki po DNS ot internet
$IPT -A INPUT -p udp -j ACCEPT --dport 53 -m state --state NEW,RELATED

#Priema ICMP (ping) paketi ot Internet
$IPT -A INPUT -p icmp -s 0/0 -j ACCEPT

#Priema ICMP (ping) paketi ot vutreshnata mreja
$IPT -A INPUT -p icmp -s $NET_INT -j ACCEPT

#Zapisvame vsichko ostanalo v LOG
$IPT -A INPUT -j LOG --log-prefix "DROPED BY DEFAULT (INPUT)"
$IPT -A INPUT -j DROP

#******************************************************************************************
****#

#OUTPUT POLICY

#Ako paketa e chast ot veche odobrena veriga go puskame navun. !!! Ako e nujno na mchinata koqto
#igrae rolqta na ROUTER da ima INTERNET, togava v tozi red pred: ESTABLISHED,RELATED pishem NEW
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#Puskame ICMP ping
$IPT -A OUTPUT -p icmp -j ACCEPT

#Pozvolqvame izhodqshti zaqvki po DNS, naprimer za opredelqne imenata na IP-addressi v dnevnicite
$IPT -A OUTPUT -p udp --dport 53 -j ACCEPT

#Zapisvame v LOG vsichko ostanalo
$IPT -A OUTPUT -j LOG --log-prefix "DROPED BY DEFAULT (OUTPUT)"
$IPT -A OUTPUT -j DROP

#******************************************************************************************
*****#

#FORWARD POLICY

#Ako paketa e chast ot veche odobrena veriga go puskame  navun
$IPT -I FORWARD 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

#Vsichki sesii po TCP treqbva da zapochvat sus SYN
$IPT -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "Stealth scan attempt!"
$IPT -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

#Razreshaveme dostup do WEB-SERVER  
$IPT -A FORWARD -p tcp -d $SRV_ADR --dport 80 -m state --state NEW -j ACCEPT

#Razreshavame dostup do FTP_SERVER
$IPT -A FORWARD -p tcp -s 0/0 -d $SRV_ADR --dport 21 -m state --state NEW,RELATED -j ACCEPT

#Razreshavame izhodqshti zaqvki po DNS
$IPT -A FORWARD -p udp -s $SRV_ADR -m state --state NEW,RELATED --dport 53 -j ACCEPT

#Razreshavame dostup do MAIL-SERVER po SMTP-25
$IPT -A FORWARD -p tcp -s 0/0 -d $SRV_ADR --dport 25 -m state --state NEW,RELATED -j ACCEPT

#Razreshavame dostup do MAIL-SERVER po POP3-110
$IPT -A FORWARD -p tcp -s 0/0 -d $SRV_ADR --dport 110 -m state --state NEW,RELATED -j ACCEPT

#Razreshaveme dostup do MAIL-SERVER po IMAP-143
$IPT -A FORWARD -p tcp -s 0/0 -d $SRV_ADR --dport 143 -m state --state NEW,RELATED -j ACCEPT

#Razreshaveme dostup ot vutreshnata mreja za kum Internet
$IPT -A FORWARD -s $NET_INT -j ACCEPT

#Zapisvame v LOG vsichko ostanalo
$IPT -A FORWARD -j LOG --log-prefix "DROPED BY DEFAULT (FORWARD)"
$IPT -A FORWARD -j DROP

#******************************************************************************************
*****#

#NAT RULES

#***********************************POSTROUTING************************************#

#Prehvurlqne na vsichko ot vutreshnata mreja kum IP_EXT:83.228.113.50
$IPT -t nat -A POSTROUTING -o $IFACE_EXT -j SNAT --to-source $IP_EXT

#************************************PREROUTING************************************#

#Prehvurlqne na vsichki zaqvki na port 21(FTP-SERVER) kum vutreshno IP:192.168.110.2
$IPT -t nat -A PREROUTING -p tcp -d $IP_EXT --dport 21 -j DNAT --to $SRV_ADR:21

#Prehvurlqne na vsichki zaqvki na port 25(SMTP-SERVER)kum vutreshno IP 192.168.110.2
$IPT -t nat -A PREROUTING -p tcp -d $IP_EXT --dport 25 -j DNAT --to $SRV_ADR:25

#Prehvurlqne na vsichki zaqvki na port 80(WEB-SERVER)kum vutreshno IP 192.168.110.2
$IPT -t nat -A PREROUTING -p tcp -d $IP_EXT --dport 80 -j DNAT --to $SRV_ADR:80

#Prehvurlqne na vsichki zaqvki na port 110(POP3-SERVER)kum vutreshno IP 192.168.110.2
$IPT -t nat -A PREROUTING -p tcp -d $IP_EXT --dport 110 -j DNAT --to $SRV_ADR:110

#Prehvurlqne na vsichki zaqvki na port 143(IMAP-SERVER) kum vutreshno IP 192.168.110.2
$IPT -t nat -A PREROUTING -p tcp -d $IP_EXT --dport 143 -j DNAT --to $SRV_ADR:143

#******************************************************************************************
*****#



Цитат
Цитат
Активен

Archer

  • Напреднали
  • *****
  • Публикации: 56
    • Профил
Dns+mail server
« Отговор #4 -: Oct 12, 2006, 16:36 »
Цитат
Правилата за iptables изглеждат наред, макар че не ги прегледах 100%, а и има малко излишни според мен, но не би трябвало там да е проблема.

Това, което ми прави впечатление веднага е, че няма A запис за mail.fakepc.net:

Примерен код  

$ dig -t mx fakepc.net # <-- това е ок

; <<>> DiG 9.3.2 <<>> -t mx fakepc.net
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8612
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;fakepc.net.                    IN      MX

;; ANSWER SECTION:
fakepc.net.             172624  IN      MX      10 mail.fakepc.net.

;; AUTHORITY SECTION:
fakepc.net.             172611  IN      NS      ns.fakepc.net.

;; ADDITIONAL SECTION:
ns.fakepc.net.          172624  IN      A       83.228.113.50

;; Query time: 1 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Oct 12 15:57:11 2006
;; MSG SIZE  rcvd: 82

$ dig mail.fakepc.net. @ns.fakepc.net # <-- това липсва

; <<>> DiG 9.3.2 <<>> mail.fakepc.net. @ns.fakepc.net
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 29593
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;mail.fakepc.net.               IN      A

;; AUTHORITY SECTION:
fakepc.net.             86400   IN      SOA     ns.fakepc.net. root.ns.fakepc.net. 2006101101 43200 7200 604800 86400

;; Query time: 31 msec
;; SERVER: 83.228.113.50#53(83.228.113.50)
;; WHEN: Thu Oct 12 15:57:31 2006
;; MSG SIZE  rcvd: 77

 


Без A запис за mail.fakepc.net няма как да се разбере към кой хост трябва да се осъществи връзка по SMTP. Общо взето при тази ситуация мисля, че трябва да можеш да пращаш поща, но не и да получаваш.



След направените промени в записите при Хостинг провайдера по препоръка на Наркос:
************************************
  fakepc.net  A  83.228.113.50
    
  fakepc.net  MX  10 mail.fakepc.net.
    
  *.fakepc.net  A  83.228.113.50
    
  *.fakepc.net  MX  10 mail.fakepc.net.
    
  ns.fakepc.net.  A  83.228.113.50

************************************
SOA record на DNS server

************************************
 ; zone file for domain.net
$TTL 2d ; zone TTL default = 2 days or 17280 seconds
domain.net.     IN   SOA   ns.domain.net.   root.ns.domain.net(
                                  2006101101   ; serial number
                                  43200           ; refresh = 12 hours
                                 7200            ; update retry = 2 hour
                                  604800         ; expiry = 1 week
                                  86400           ; minimum = 1 day
                                  )
                                  IN       NS      ns.domain.net.
                                  IN       MX    10 mail.domain.net.

                ns               IN       A       реалното IP
            domain.net.       IN       A        реалното IP
localhost.domain.net.      IN       A       127.0.0.1
mail.fakepc.net.              IN        A       реалното IP

За пояснение:
DNS=OS--> Slackware 10; BIND 9
MailServer=OS-->FreeBSD 6.1; Postfix; Courier; MySQL



Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Dns+mail server
« Отговор #5 -: Oct 12, 2006, 17:20 »
Ама така като гледам, настройките които правиш при хостинг доставчика (през web интерфейс ли, през какво не знам) не важат много много. Реално authoritative за зоната ти си си ти:

$ host -t ns fakepc.net I.GTLD-SERVERS.net.
fakepc.net              NS      ns.fakepc.net
$ host ns.fakepc.net I.GTLD-SERVERS.net.
ns.fakepc.net           A       83.228.113.50

Така че промените по зоната би следвало да стават само в локалните зонови файлове на машината ти.

В момента ти е паднал интернета или ръчкаш нещо, понеже няма връзка до този IP адрес, та не мога да видя дали се е оправило положението.

Виж след като ги сложиш записите дали работи и пиши, че аз така и не разбрах дали са тръгнали нещата.
Активен

Archer

  • Напреднали
  • *****
  • Публикации: 56
    • Профил
Dns+mail server
« Отговор #6 -: Oct 12, 2006, 17:42 »
Hаркос, мисля, че открих грешката която правя. При хостинг провайдера се казва, че за да ми отговарят всичките записи, които бях публикувал трябва да сложа dns servers на hosting provider.

Заложих ги както трябва
redirns1.bgdns.net
redirns2.bgdns.net //Това е host.bg

да наистина нямам и-нет, защото ми е спрял най-вероятно тока. След 1ч. ще се прибера и ще проверя, макар, че промените ще се отразят след около 10ч най-малко.


Наркос, много ти благодаря както винаги си много отзивчив.



Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Dns+mail server
« Отговор #7 -: Oct 12, 2006, 18:01 »
Хехе, моля, няма проблеми, радвам се когато мога да помогна.

Само една забележка - това, което пише, че за да ти работят записите, които си вкарал, трябва да настроиш NS записите към host.bg е вярно. Работата е там, че те имат предвид записите, които си направил през control панела на host.bg. А всъщност няма проблем да си насочиш NS записа към твоята машина и там в зоновия файл на BIND да си правиш промените и те да влизат в сила. Ако оставиш зоната да се обслужва от DNS сървърите на host.bg можеш да спреш достъпа до твоя DNS отвън (освен ако няма и други зони, за които си authoritative разбира се).
Активен