LinuxForum.Fans
Тема

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

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

Зделай
nano test
туды

text

#!/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
modprobe ip_conntrack_pptp

iptables -F iptables -F -t nat iptables -F -t mangle

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

iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 192.168.0.100:80 iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE

sh test

Больше вариантов нет

От прова нет ведь пакеты до ходят до тебя. Проверяй не по dydns а по айпи внешнему

#142632

Со злости пошел качать официальный 6.01 с 32-ым ядром, может чё не так с этим 38-ым... пару раздельчиков все равно пустуют...

#142777

Ну блин... сработало следующие правило:

iptables -v -t nat -A PREROUTING --dst 188.233.144.173 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -v -t nat -A POSTROUTING -p tcp --dst 188.233.144.173 --dport 80 -j SNAT --to-source 192.168.1.2:80
iptables -v -t nat -A OUTPUT --dst 188.233.144.173 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80

Теперь надо его переделать с ip адреса на сетевой интерфейс, либо в связке с ddclient (или noip2) менять адрес.

#142832

Воот теперь подошёл к этому:
Перед инициализацией сетевых интерфейсов выполняются скрипты из /etc/network/if-pre-up.d
После инициализации из /etc/network/if-up.d
Думаем дальше, ip - динамический и наверное может меняться не только при инициализации сетевого интерфейса.... ip получает dhclient, так?
Тут есть два каталога инициализации:
/etc/dhcp/dhclient-enter-hooks.d
/etc/dhcp/dhclient-exit-hooks.d - вот этот по-ходу и есть тот где скрипты выполняются после получения ip и конфигурирования нашего ppp0.

#142847

iptables -A FORWARD -i ppp0 -o tap0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i tap -o ppp0 -p tcp --sport 80 -j ACCEPT

iptables -t nat -A PREROUTING -i ppp0 -d внешнийIP -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.2 -p tcp --sport 80 -j SNAT --to-source внешнийIP

а так ?

#142850
inettel написал:
iptables -A FORWARD -i ppp0 -o tap0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i tap -o ppp0 -p tcp --sport 80 -j ACCEPT

iptables -t nat -A PREROUTING -i ppp0 -d внешнийIP -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.2 -p tcp --sport 80 -j SNAT --to-source внешнийIP

а так ?

Подобное уже пробовал, хотя тут опять присутствует внешнийIP от которог либо избавиться, либо получать при смене и применять новые правила iptables.

ы. Какие еще способы получения своего ip есть? Пока только это:
ip addr show ppp0 | grep "inet" | grep "peer" | awk '{print $2}'

#142852

iptables -t nat -A PREROUTING -i ppp0 -d внешнийIP -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.2 -p tcp --sport 80 -j SNAT --to-source внешнийIP

запихай в /etc/ppp/ip-up
переменная, содержащая ip, который тебе присвоится $5 (на редхеде, но думаю везде)

#142867

Мне еще предидущее правило надо очистить чтобы не целиком скрипт выполнять а то каша получится...

#142881

Предидущее это которые осталоь от прошлого ppp соединения ?

text

$IP_OLD=`cat /tmp/ip_old`
iptables -t nat -D PREROUTING -i ppp0 -d $IP_OLD -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -t nat -D POSTROUTING -o ppp0 -s 192.168.1.2 -p tcp --sport 80 -j SNAT --to-source $IP_OLD

iptables -t nat -A PREROUTING -i ppp0 -d $5 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80 iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.2 -p tcp --sport 80 -j SNAT --to-source $5

echo $5 > /tmp/ip_old

при первом запуске ругнется. потом все норм будет

#142892

inettel, симпатичная конструкция получилась, осталось узнать может ли провайдер сменить ip при активном соединении.

#142895

Если не затруднит, то не могли бы потом описать все что сделали, так для начинающих админов. Очень занимательная тема. :rolleyes:

#142903

Менять ip при активном соединении ? очень сомневаюсь. Если бы ваш провайдер так делал - у него бы телефон раскалился от звонков с вопросами "А почему меня выбрасывает с webmoney? а почему у меня закачки с рапидшары рвутся ? за что мы платим деньги и т.п"

п.c. Если хочеш симпатичную конструкцию, то вынеси эти правила в отдельную пользовательскую таблицу, и перед запуском правил

iptables -F MY_NEW_TABLE

тогда и старый ip запоминать нигде не придется

#142916

--=XliN=--, настрою, потом если соберусь с силами всё в кучку подобью...

inettel написал:

iptables -F MY_NEW_TABLE
тогда и старый ip запоминать нигде не придется

Мне именно вариант $IP_OLD=`cat /tmp/ip_old` \ echo $5 > /tmp/ip_old - понравился... smile
А свои таблицы еще не пробовал создавать, хотя пора бы уже, блоками их, и тогда будет красиво.

#142931

Я вообще не понимаю почему всё такс)
Никогда неподводило
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 172.16.0.100:80

#142934
Kettler написал:
Я вообще не понимаю почему всё такс)
Никогда неподводило
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 172.16.0.100:80

А обратно ?

#142937

inettel какой обрат вы о чём?
Forward имеете виду?

#142940
Kettler написал:

iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 80 -j DNAT --to-destination 172.16.0.100:80

перешлет пакет. пришедший из инета на 172.16.0.100;80
для ответного пакета нужно второе правило

iptables -t nat -A POSTROUTING -o ppp0 -s 172.16.0.100 -p tcp --sport 80 -j SNAT --to-source внешнийIP

#142942

inettel, нет твой вариант:

text

iptables -A FORWARD -i ppp0 -o tap0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i tap -o ppp0 -p tcp --sport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -d внешнийIP -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.2 -p tcp --sport 80 -j SNAT --to-source внешнийIP

Не работает, у меня там еще цепочка OUTPUT...
И да $IP_OLD=`cat /tmp/ip_old` => надо без $
Вот скриптом тестировал:

text

#!/bin/bash
IPT="/sbin/iptables -v"
VSERV_IP=192.168.1.2
iptables -A FORWARD -i ppp0 -o tap0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i tap -o ppp0 -p tcp --sport 80 -j ACCEPT
REAL_IP=`cat /tmp/ip_old`
$IPT -t nat -D PREROUTING -i ppp0 -d $REAL_IP -p tcp --dport 80 -j DNAT --to-destination $VSERV_IP:80
$IPT -t nat -D POSTROUTING -o ppp0 -s $VSERV_IP -p tcp --sport 80 -j SNAT --to-source $REAL_IP
ip addr show ppp0 | grep "inet" | grep "peer" | awk '{print $2}' > /tmp/ip_old
REAL_IP=`cat /tmp/ip_old`
$IPT -t nat -A PREROUTING -i ppp0 -d $REAL_IP -p tcp --dport 80 -j DNAT --to-destination $VSERV_IP:80
$IPT -t nat -A POSTROUTING -o ppp0 -s $VSERV_IP -p tcp --sport 80 -j SNAT --to-source $REAL_IP

Уж не знаю почему, но только вариант PREROUTING / POSTROUTING / OUTPUT рабочий пока что:

text

#!/bin/bash
IPT="/sbin/iptables -v"
REAL_IP=`cat /tmp/ip_old`
VSERV_IP=192.168.1.2
$IPT -t nat -D PREROUTING  -p tcp --dst $REAL_IP --dport 80 -j DNAT --to-destination $VSERV_IP:80
$IPT -t nat -D POSTROUTING -p tcp --dst $REAL_IP --dport 80 -j SNAT --to-source      $VSERV_IP:80
$IPT -t nat -D OUTPUT      -p tcp --dst $REAL_IP --dport 80 -j DNAT --to-destination $VSERV_IP:80
ip addr show ppp0 | grep "inet" | grep "peer" | awk '{print $2}' > /tmp/ip_old
REAL_IP=`cat /tmp/ip_old`
$IPT -t nat -A PREROUTING  -p tcp --dst $REAL_IP --dport 80 -j DNAT --to-destination $VSERV_IP:80
$IPT -t nat -A POSTROUTING -p tcp --dst $REAL_IP --dport 80 -j SNAT --to-source      $VSERV_IP:80
$IPT -t nat -A OUTPUT      -p tcp --dst $REAL_IP --dport 80 -j DNAT --to-destination $VSERV_IP:80
#142943

inettel Это уже самой собой. Для меня это необходимость ток лучше
Когда ип меняется

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE

И ещё не забываем включить forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr

newzenon я хз где у тям кастыль зарыт но у меня при таких же параметрах проблем нет.
тоже ppp0 и ип динамический

#142946

OUTPUT... это интересно интересно

Случайно ни каких прозрачных прокси не настроенно ?

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