LinuxForum.Fans
Тема

Проброс портов на виртуалку + динамический ip и iptables

Автор: zenon 85 сообщений 20205 просмотров
#142470

Не могу понять где и что я забыл:
ppp0, виртуальный tap0, на виртуалке (192.168.1.2) - apache, по 192.168.1.2 - все работает.
Хост (ppp0) - стоит noip2, если на нем поставить тот же apache - через no-ip всё оk, с пробросом на виртуалку - ноль эмоций.

[console]
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -A FORWARD -i ppp0 -d 192.168.1.2 -p tcp --dport 80 -j ACCEPT
[/console]

Пробовал уже не один вариант, где-то что-то я все-таки забыл, повыкидывал пока все правила и дропы, только маскарадинг:

Показать
[console]
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o tap0 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ppp0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tap0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i tap0 -o ppp0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.2 -j MASQUERADE

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -A FORWARD -i ppp0 -d 192.168.1.2 -p tcp --dport 80 -j ACCEPT
[/console]
#142472

iptables -t nat -A PREROUTING укажи source
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 172.16.0.100:80

#142479

iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -A FORWARD -i ppp0 -d 192.168.1.2 -p tcp --dport 80 -j ACCEPT

Делал и так - нифига, главное с полгода назад каким-то способом все работало, потом закоментил за ненадобностью...
Попробовал еще раз - ноль эмоций.

#142513

Покаж весь скрипт

#142517
Kettler написал:
Покаж весь скрипт

Я ж выложил, сейчас для тестов только то что вверху только экперементы с последними двумя строчками:
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -A FORWARD -i ppp0 -d 192.168.1.2 -p tcp --dport 80 -j ACCEPT

так как у меня динамический уже пробовал вот так:
iptables -v -t nat -A PREROUTING -p tcp -d 188.233.136.186 --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -v -A FORWARD -i ppp0 -d 192.168.1.2 -p tcp --dport 80 -j ACCEPT
iptables -v -t nat -A PREROUTING -p udp -d 188.233.136.186 --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -v -A FORWARD -i ppp0 -d 192.168.1.2 -p udp --dport 80 -j ACCEPT

пока ip не сменился, все -равно ничего.

#142518

iptables -A FORWARD -p tcp -s 192.168.1.2 --sport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 192.168.1.2:80

? не забываем про обратку
Подправил

#142522

Эффект тот же только локально 192.168.1.2 apache виден.
ы. На no-ip редиректов никаких не стоит, щаз зашел - все стандартно порт 80.

#142523

А может дело в апаче?

#142525

А чё с ним может быть? Голая debian на виртуалке + apache без настроек - на 192.168.1.2 показывает свой "It works!"
Если на хост ставлю apache то на zenon.sytes.net показывает, перенаправлятся на виртуалку не хочет, всю голову уже сломал...

#142567

Kettler, начал грешить на vde2, хотя маскарадинг и пинги через него иду - значит наверное зря...
Ну да ладно поднял virt-manager, еще одну подсеть 192.168.100.0/24...
Перенастроил гостя, ну и попытался опять пробросить порты... Результат тот-же.

Попробовал на всякий поставить arno-iptables-firewall,
Проброс у него тут:
/etc/arno-iptables-firewall/firewall.conf
NAT_FORWARD_TCP="80>192.168.1.2"
NAT_FORWARD_UDP="80>192.168.1.2"
и опять обломался.

Пробовал ftp пробросить, не получилось, осталось ssh попробовать....

#142570

Честно я хз почему у тя так.
Может где apache что нибудь блокирует

Вот например с рабочей машины

iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -m limit --limit 1/min -j LOG --log-prefix "Incoming80: "
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 172.16.0.100:80

iptables -A FORWARD -p tcp -s 172.16.0.100 --sport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 172.16.0.100 --dport 80 -j ACCEPT

Попробуй ещё попробовать политику изменить.

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#142575

Короче кони не едут.
Поставил на локальную машину 192.168.0.5 apache.
Поменнял привязку с no-ip на dyndns.

Показать
[console]
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -F -t nat
iptables -F -t mangle

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -v -A INPUT -i lo -j ACCEPT
iptables -v -A INPUT -i tap0 -j ACCEPT
iptables -v -A INPUT -i eth0 -j ACCEPT
iptables -v -A INPUT -i eth1 -j ACCEPT

iptables -v -A OUTPUT -o lo -j ACCEPT
iptables -v -A OUTPUT -o tap0 -j ACCEPT
iptables -v -A OUTPUT -o eth0 -j ACCEPT
iptables -v -A OUTPUT -o eth1 -j ACCEPT

iptables -v -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -v -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -v -A FORWARD -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -v -A FORWARD -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -v -A FORWARD -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -v -A FORWARD -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -v -A FORWARD -i ppp0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -v -A FORWARD -i tap0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -v -A FORWARD -i eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -v -A FORWARD -i eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -v -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -m limit --limit 1/min -j LOG --log-prefix "Incoming80: "
iptables -v -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 192.168.0.5:80

iptables -v -A FORWARD -p tcp -s 192.168.0.5 --sport 80 -j ACCEPT
iptables -v -A FORWARD -p tcp -d 192.168.0.5 --dport 80 -j ACCEPT
[/console]
Показать
[console]
>>sh /root/masq.sh
ACCEPT all opt -- in lo out * 0.0.0.0/0 -> 0.0.0.0/0
ACCEPT all opt -- in tap0 out * 0.0.0.0/0 -> 0.0.0.0/0
ACCEPT all opt -- in eth0 out * 0.0.0.0/0 -> 0.0.0.0/0
ACCEPT all opt -- in eth1 out * 0.0.0.0/0 -> 0.0.0.0/0
ACCEPT all opt -- in * out lo 0.0.0.0/0 -> 0.0.0.0/0
ACCEPT all opt -- in * out tap0 0.0.0.0/0 -> 0.0.0.0/0
ACCEPT all opt -- in * out eth0 0.0.0.0/0 -> 0.0.0.0/0
ACCEPT all opt -- in * out eth1 0.0.0.0/0 -> 0.0.0.0/0
ACCEPT all opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0 state NEW,RELATED,ESTABLISHED
ACCEPT all opt -- in * out ppp0 0.0.0.0/0 -> 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all opt -- in * out tap0 0.0.0.0/0 -> 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all opt -- in * out eth0 0.0.0.0/0 -> 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all opt -- in * out eth1 0.0.0.0/0 -> 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all opt -- in ppp0 out * 0.0.0.0/0 -> 0.0.0.0/0 state NEW,RELATED,ESTABLISHED
ACCEPT all opt -- in tap0 out * 0.0.0.0/0 -> 0.0.0.0/0 state NEW,RELATED,ESTABLISHED
ACCEPT all opt -- in eth0 out * 0.0.0.0/0 -> 0.0.0.0/0 state NEW,RELATED,ESTABLISHED
ACCEPT all opt -- in eth1 out * 0.0.0.0/0 -> 0.0.0.0/0 state NEW,RELATED,ESTABLISHED
LOG tcp opt -- in ppp0 out * 0.0.0.0/0 -> 0.0.0.0/0 tcp dpt:80 limit: avg 1/min burst 5 LOG flags 0 level 4 prefix `Incoming80: '
DNAT tcp opt -- in ppp0 out * 0.0.0.0/0 -> 0.0.0.0/0 tcp dpt:80 to:192.168.0.5:80
ACCEPT tcp opt -- in * out * 192.168.0.5 -> 0.0.0.0/0 tcp spt:80
ACCEPT tcp opt -- in * out * 0.0.0.0/0 -> 192.168.0.5 tcp dpt:80
>>/etc/init.d/ddclient status
Status of Dynamic DNS service update utility: ddclient is running.
[/console]

И все так-же захожу 192.168.0.5 => работает apache.
Захожу по привязке к dyndns => попадаю только на шлюз (192.168.0.1).

#142583

Логи смотри не спроста же -j LOG --log-prefix "Incoming80: " wink

#142599

/var/log/syslog - ничего не оседает

Пока настраиваю логирование, чтобы писалось в /var/log/iptables.log
/etc/rsyslog.d/10-iptables.conf

text

:msg, contains, "iptables: "    -/var/log/iptables.log
& ~

есть советы?

#142609

А ведь в syslog должен.
А так лучше syslog-ng

text

# sources
source s_all {
        # message generated by Syslog-NG
        internal();
        # standard Linux log source (this is the default place for the syslog()
        # function to send logs to)
        unix-stream("/dev/log");
        # messages from the kernel
        file("/proc/kmsg" log_prefix("kernel: "));
        # use the following line if you want to receive remote UDP logging messages
        # (this is equivalent to the "-r" syslogd flag)
        # udp();
};

# destinations destination http { file("/var/log/firewall/http.log"); };

# filters filter http { match (Incoming80:); };

# log log { source(s_all); filter(http); destination(http);

#142621

Я просто сначала не понял почему ничего нет, сделал так:
iptables -v -A INPUT -j LOG --log-prefix "iptables: "
iptables -v -A OUTPUT -j LOG --log-prefix "iptables: "
iptables -v -A FORWARD -j LOG --log-prefix "iptables: "
- посыпалось...
А на 80-й ничего.

ы. Подробней про syslog-ng есть чё? Надо все -таки логи по-человечески настроить.

#142623

Зделай логи в prerouting
Тут подробнее
http://linux.die.net/man/5/syslog-ng.conf
Ещё как вариант
iptables -t nat -I PREROUTING 1 --dport 80 -j DNAT --to-destination 192.168.0.5:80

И ещё мне помниться у тебя в interfaces какие то скрипты выполнялись при поднятии интерфейсов

#142624

Это tap и switch (как хаб в 10 портов) поднимается, прост я их в pre-up запихнул:

text

auto tap0
iface tap0 inet static
  address 192.168.1.1
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255
  pre-up    vde_tunctl -t tap0
  pre-up    vde_switch -x -n 10 -s /var/run/vde2/vde_192.ctl -g vde2-net -m 770 -d -p /var/run/vde2/vde_192.pid -t tap0
  post-down kill `/bin/cat /var/run/vde2/vde_192.pid`
  post-down vde_tunctl -d tap0

Все-равно странно почему на DNAT 80-й ничего не летит в логи

#142626

Блин криво написал
Пробни так
iptables -t nat -I PREROUTING 1 -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 172.16.0.100:80

#142627

Тот же эффект. Слушай, а от провайдера может зависеть?
Хотя не, на шлюзе-то все работает...
Последний испытанный вариант:

iptables -v -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j LOG --log-prefix "iptables80: "
iptables -v -t nat -I PREROUTING 1 -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 192.168.0.5:80
iptables -v -A FORWARD -p tcp -s 192.168.0.5 --sport 80 -j ACCEPT
iptables -v -A FORWARD -p tcp -d 192.168.0.5 --dport 80 -j ACCEPT

Войдите или зарегистрируйтесь, чтобы ответить.