T1mbo 12.09.2010 20:57
Есть проблема! — [Решено]Port Forwarding Debian Lenny
Всем добрый вечер! Есть проблема, над которой думаю уже не первый день. Есть шлюз на Lenny, пытаюсь настроить форвардинг на домашний сервер. Доступа к веб серверу и к почте с внешки нет. Nmap вместо open пишет filtered.25/tcp filtered smtp
80/tcp filtered http
110/tcp filtered pop3
Если кто встречался с проблемой, поделитесь решением. Спасибо.
Решение: Добавил 2 правила:
iptables --table nat --append POSTROUTING -j MASQUERADE
iptables --append FORWARD -j ACCEPT
И форвардинг заработал.
mhspace 12.09.2010 21:02 #
+ 0 -
Извиняюсь за минус, поставил случайно, сейчас зайду в конференцию, попрошу кого-нибудь поставить плюс, дабы вернуть пост на главную.
Hi all,
I've set port forwarding up on my debian box using:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.2:80
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -i eth0 -j ACCEPT
http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET
http://www.youritronics.com/forwarding-a-specific-port-in-debian/
I've set port forwarding up on my debian box using:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.2:80
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -i eth0 -j ACCEPT
http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET
http://www.youritronics.com/forwarding-a-specific-port-in-debian/
С данными правилами тоже не работает. Вот мои:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j SNAT --to-source 12.34.56.78
iptables -t nat -A PREROUTING -d 12.34.56.78 -p tcp --destination-port 21 -j DNAT --to-destination 192.168.0.3
iptables -t nat -A PREROUTING -d 12.34.56.78 -p tcp --destination-port 25 -j DNAT --to-destination 192.168.0.3
iptables -t nat -A PREROUTING -d 12.34.56.78 -p tcp --destination-port 80 -j DNAT --to-destination 192.168.0.3
Добавь к своим правилам:
iptables -A FORWARD -p tcp -d 192.168.0.3 --dport 21-i ppp0 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.3 --dport 25 -i ppp0 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.3 --dport 80 -i ppp0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.3 --dport 21-i ppp0 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.3 --dport 25 -i ppp0 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.3 --dport 80 -i ppp0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -F - очистить все цепочки правил в filter-таблице
не помогает?
не помогает?
debian:/etc# iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
sysctl net.ipv4.ip_forward=1
iptables --table nat --append POSTROUTING -j MASQUERADE
iptables --append FORWARD -j ACCEPT
iptables --table nat --append POSTROUTING -j MASQUERADE
iptables --append FORWARD -j ACCEPT
o_0. Заработало! Спасибо!
Интерессно. В чем был косяк? На другой машине с тем-же дебианом работало с конфигом, который выкладывал выше.
Интерессно. В чем был косяк? На другой машине с тем-же дебианом работало с конфигом, который выкладывал выше.
Косяк возможно в маршрутах. Если на сервере и на других машинах попрописывать грамотные маршруты, то хватит первой команды, А так пришлось поднимать маскарад (NAT)
Во-первых, большое спасибо за информацию — мне она тоже помогла.
Во-вторых, что вы имели в виду под словами «прописывать грамотные маршруты», какие именно маршруты, и зачем пришлось поднимать маскарад — что это дало, кроме того, что все заработало. :)
P.S. С основами маршрутизации и маскарадинга более-менее знаком.
Во-вторых, что вы имели в виду под словами «прописывать грамотные маршруты», какие именно маршруты, и зачем пришлось поднимать маскарад — что это дало, кроме того, что все заработало. :)
P.S. С основами маршрутизации и маскарадинга более-менее знаком.
man iptables рекомендует использовать MASQUERADE на dial-up соединениях. Может быть имеется связь с тем, что внешний интерфейс — это PPPoE? Или с тем, что адрес получается по DHCP?
На клиентских машинах в качестве маршрута для сервера должен быть прописан шлюз (это очевидно), но и у сервера должен быть маршрут к клиентским машинам через шлюз (иначе, он не знал бы, кудою пересылать пакеты обратно). В таком случае можно не прописывать маршрут на сервере, но на шлюзе нужно поднять NAT. Теперь когда клиент посылает пакет серверу, шлюз заменяет IP отправителя на свой, и сервер потом шлёт ответ уже шлюзу, а тот, пересылает его клиенту, изменив адрес назначения со своего на клиентский.
В последнем случае сервер не просто не имеет маршрутов к клиенту, он даже не догадывается о их существовании.
Спасибо! Кажется все понял. Есть только один уточняющий вопрос:
>На клиентских машинах в качестве маршрута для сервера должен быть прописан шлюз
Насколько я понимаю, это должно иметь место, если мы обращаемся с клиентских машин на сервер напрямую (например ping ip_сервера), но в данной ситуации мы с клиентских машин обращаемся не к серверу напрямую, а к шлюзу (а точнее к порту, который мы "пробросили" на сервер, например, wget ip_шлюза:порт). Обязательно ли в таком случае указание шлюза как точки маршрута к серверу? Или можно обойтись без этого, имея только маршрут до шлюза (шлюз-то знает, как добраться до сервера - пусть он сам и добирается)?
>На клиентских машинах в качестве маршрута для сервера должен быть прописан шлюз
Насколько я понимаю, это должно иметь место, если мы обращаемся с клиентских машин на сервер напрямую (например ping ip_сервера), но в данной ситуации мы с клиентских машин обращаемся не к серверу напрямую, а к шлюзу (а точнее к порту, который мы "пробросили" на сервер, например, wget ip_шлюза:порт). Обязательно ли в таком случае указание шлюза как точки маршрута к серверу? Или можно обойтись без этого, имея только маршрут до шлюза (шлюз-то знает, как добраться до сервера - пусть он сам и добирается)?
Ясно. Еще раз огромное спасибо за разъяснение. Одним подводным камнем стало меньше. =)