URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 48458
[ Назад ]

Исходное сообщение
"Nat на Linux(клиентская машина не видет DNS)"

Отправлено Friker , 19-Сен-04 15:56 
Сервер поднят на LinuxRH
Нат поднимается вот таким скриптом:
#!/bin/sh
INET="192.168.1.0/255.255.255.0"
ANY="0.0.0.0/0"
EXTDEV="ppp0"
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source мойIP
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A INPUT -j ACCEPT -p udp -s $ANY --sport 53 -d $ANY
/sbin/iptables -A OUTPUT -j ACCEPT -p udp -s $ANY -d $ANY --dport 53
echo "NAT!"

проблема:
клиентская машина не заходит на сервер (не видет DNS)
В настройках клиента прописан мой сервер как шлюз и DNS и 2-ым стоит DNS провайдэра.
С Сервера я DNS вижу без проблем. Если с клиента заходить на IP в инете всё работает!
Подскажите пожалусто что делать....


Содержание

Сообщения в этом обсуждении
"Nat на Linux(клиентская машина не видет DNS)"
Отправлено Dubrovsky , 19-Сен-04 20:23 
>Сервер поднят на LinuxRH
>Нат поднимается вот таким скриптом:
>#!/bin/sh
>INET="192.168.1.0/255.255.255.0"
>ANY="0.0.0.0/0"
>EXTDEV="ppp0"
>iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source мойIP
>echo 1 > /proc/sys/net/ipv4/ip_forward

следущее не имеет никакого значения (все равно все открыто)

>/sbin/iptables -A INPUT -j ACCEPT -p udp -s $ANY --sport 53 -d
>$ANY
>/sbin/iptables -A OUTPUT -j ACCEPT -p udp -s $ANY -d $ANY --dport
>53
>echo "NAT!"

по идее стоит фильтровать весь трафик, но это отдельная история

а вот маскарадинг должен быть типа этого:

iptables -t nat -A POSTROUTING --out-interface $EXTDEV -s 192.168.1.0/24 -j SNAT --to-source мойIP


"Nat на Linux(клиентская машина не видет DNS)"
Отправлено StSphinx , 20-Сен-04 10:33 
>>Сервер поднят на LinuxRH
>>Нат поднимается вот таким скриптом:
>>#!/bin/sh
>>INET="192.168.1.0/255.255.255.0"
>>ANY="0.0.0.0/0"
>>EXTDEV="ppp0"
>>iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source мойIP
>>echo 1 > /proc/sys/net/ipv4/ip_forward
>
>следущее не имеет никакого значения (все равно все открыто)

Очень даже имеет. Данный ключ, чтобы Вы знали, разрешает форвард пакетов через машину в принципе. То есть позволяет ей работать как роутер.

>
>>/sbin/iptables -A INPUT -j ACCEPT -p udp -s $ANY --sport 53 -d
>>$ANY
>>/sbin/iptables -A OUTPUT -j ACCEPT -p udp -s $ANY -d $ANY --dport
>>53

Это не имеет смысла. Посколько пакеты идут на DNS провайдера, то нужно разрешить форвардинг, а Вы разрешаете входящие/исходящие пакеты. То есть нужно:

-A FORWARD -p udp -m udp -s $ANY -i $YOUR_LAN_IFACE -d $PROV_DNS_IP --dport 53 -j ACCEPT

И еще, читайте документацию, в ней хорошо описано каким образом пакеты двигаются внутри таблиц NetFilter.

>>echo "NAT!"
>
>по идее стоит фильтровать весь трафик, но это отдельная история
>
>а вот маскарадинг должен быть типа этого:
>
>iptables -t nat -A POSTROUTING --out-interface $EXTDEV -s 192.168.1.0/24 -j SNAT --to-source
>мойIP



"Nat на Linux(клиентская машина не видет DNS)"
Отправлено Dubrovsky , 20-Сен-04 13:22 
>>>Сервер поднят на LinuxRH
>>>Нат поднимается вот таким скриптом:
>>>#!/bin/sh
>>>INET="192.168.1.0/255.255.255.0"
>>>ANY="0.0.0.0/0"
>>>EXTDEV="ppp0"
>>>iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source мойIP
>>>echo 1 > /proc/sys/net/ipv4/ip_forward
>>
>>следущее не имеет никакого значения (все равно все открыто)
>
>Очень даже имеет. Данный ключ, чтобы Вы знали, разрешает форвард пакетов через
>машину в принципе. То есть позволяет ей работать как роутер.

я говорил следущее, а не предыдущее

>>
>>>/sbin/iptables -A INPUT -j ACCEPT -p udp -s $ANY --sport 53 -d
>>>$ANY
>>>/sbin/iptables -A OUTPUT -j ACCEPT -p udp -s $ANY -d $ANY --dport
>>>53
>
>Это не имеет смысла. Посколько пакеты идут на DNS провайдера, то нужно
>разрешить форвардинг, а Вы разрешаете входящие/исходящие пакеты. То есть нужно:
>
>-A FORWARD -p udp -m udp -s $ANY -i $YOUR_LAN_IFACE -d $PROV_DNS_IP
>--dport 53 -j ACCEPT
>
>И еще, читайте документацию, в ней хорошо описано каким образом пакеты двигаются
>внутри таблиц NetFilter.
>
>>>echo "NAT!"
>>
>>по идее стоит фильтровать весь трафик, но это отдельная история
>>
>>а вот маскарадинг должен быть типа этого:
>>
>>iptables -t nat -A POSTROUTING --out-interface $EXTDEV -s 192.168.1.0/24 -j SNAT --to-source
>>мойIP



"Nat на Linux(клиентская машина не видет DNS)"
Отправлено Дмитрий Ю. Карпов , 20-Сен-04 10:35 
Подними DNS-сервер на машине, которая маскарадит (делает NAT). Ну и кажи его всем клиентам первым в списке.