LINUX.ORG.RU
ФорумAdmin

kvm, проброс портов до вебсервера с серыми адресами.

 


0

1

[pfsense}] (ip статический выделенный провайдером 1 rj45 встроенный в материнку,3 сетевухи (2 x rj45 + 1 x wifi karta )):

  • 192.168.1.1 - Lan

    Все подключаемые компы

  • 192.168.2.1- Wifi Lan

    Ноуты и смартфоны

  • 192.168.3.1- KVMVirt

    Подключается к физическому серверу с KVM на ubuntu


    KVM- сервер 192.168.3.3 на нем установлен lamp, порты проброшены с помощью pfsense. Сайт по доменному имени работает и по айпи.


    Создал виртулку 192.168.122.78 на нем развернул lamp. Localhost работает, страницу по умолчанию грузит.


    Как пробросить порт 80 на виртуалку, чтобы сайт работал на ней?
    А с хостовой машины КВМ я удалю lamp- сервер.
    Пробовал как писали на форуме на KVM хосте пробросить, не помогло.
    sudo iptables -t nat -A PREROUTING --dst 192.168.3.3 -p tcp --dport 80 -j DNAT --to-destination 192.168.122.78
    sudo iptables -I FORWARD 1 -i enp3s0 -o virbr0 -d 192.168.122.78 -p tcp -m tcp --dport 80 -j ACCEPT

    . Заголовок цитате можно задать параметром тега

    название цитаты

    root@kvmser:/home/user# iptables -L --line-numbers -v -n
    Chain INPUT (policy ACCEPT 79248 packets, 4359K bytes)
    num   pkts bytes target     prot opt in     out     source               destination         
    1      430 28310 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
    2        0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    3        4  1312 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
    4        0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    num   pkts bytes target     prot opt in     out     source               destination         
    1    17400   29M ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    2    13273 1298K ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    3        0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
    4        0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    5        0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    
    Chain OUTPUT (policy ACCEPT 301K packets, 426M bytes)
    num   pkts bytes target     prot opt in     out     source               destination         
    1        4  1312 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    

    .

Не считая того что вы ничего не понимаете.
Давайте рассмотрим по пунктам
1 17400 29M ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
Все пакеты с state RELATED,ESTABLISHED читай когда изначальное соединение было со стороны virbr0
Это не подходит под ваши условия. Продолжаем
2 13273 1298K ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
Входящий интерфейс virbr0, опять мимо.
3 0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
Оба и входящий и исходящий virbr0, мимо
4 0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
А вот и оно. Все что не попало под правило 1. читай новые соединения.

На самом деле это только «зарисовки с полей» у вас явно больше проблем о которых мы не знаем.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 2)
Ответ на: комментарий от anc

хорошо

iptables да не знаю, придется изучить.[br] На самом деле это только «зарисовки с полей» у вас явно больше проблем о которых мы не знаем.[br] как мне посмотреть все проблемы?

borbor ()
Ответ на: комментарий от Deleted

хм.., подскажите мне я в правильном направлении двигаюсь или нет?

Короче раз я пробросил 80 порт до kvm -сервера и на нем работает сайт, значит мне осталось пробросить с kvm-сервера на виртуалку 192.168.122.78,я правильно мыслю?

borbor ()

Короче раз я пробросил 80 порт до kvm -сервера и на нем работает сайт, значит мне осталось пробросить с kvm-сервера на виртуалку 192.168.122.78,я правильно мыслю?

Правильно. Фактически скрипт Dimez делает почти тоже что описано вами в топике, за исключением того что правило PREROUTING не добавляется в конец цепочки, а инсертится на первое место цепочки. Ну и названия интерфейсов главное не перепутайте.

anc ★★★★★ ()
Ответ на: комментарий от Deleted

В вашем скрипте есть большой недостаток, получение hostip. Вы не уточнили на какой системе это работает.

anc ★★★★★ ()
Ответ на: комментарий от anc

Да, надо бы поправить на использование ip взамен ifconfig, т.к. в ubuntu 18.04, во-первых, ifconfig уже deprecated, а во-вторых, чуть сменился формат.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Формат поменялся. Поэтому не будет работать, все верно.

Не по теме но, что интересно я нашел плюс вашего скрипта в варианте когда только ifconfig системе. :) ifconfig не умеет добавлять алиас без указания имени интерфейса типа необходимо добавлять с именами eth0:1 ... eth0:N. Так вот получаеться что при указании в переменной например hostif=«eth0:3» все будет работать как надо, hostip получим и iptables отработает по физическому имени eth0 :)

А вот в части когда у вас несколько адресов на одном интерфейсе, с использованием команды ip не получиться, не известно какой из них нужен. Можно неполноценно сделать, например если адрес один то получаем его и все счастливы. Если несколько то используем переменную в которой необходимо за ранее прописать адрес иначе не работаем. Ну и внести это в документацию. Как-то так мне видится.

anc ★★★★★ ()
Ответ на: комментарий от anc

О, спасибо большое! В ближайшее время займусь!

Deleted ()
Ответ на: комментарий от Deleted

Короче заработало , но ......

Сделал вот так:

root@kvmser:/home/user# iptables -t nat -A PREROUTING --dst 192.168.3.3 -p tcp --dport 80 -j DNAT --to-destination 192.168.122.78:80
root@kvmser:/home/user# iptables -I FORWARD 1 -i br1 -o virbr0 -d 192.168.122.78 -p tcp -m tcp --dport 80 -j ACCEPT
root@kvmser:/home/user# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             192.168.3.3          tcp dpt:http to:192.168.122.78:80

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
RETURN     all  --  192.168.122.0/24     base-address.mcast.net/24 
RETURN     all  --  192.168.122.0/24     255.255.255.255     
MASQUERADE  tcp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
MASQUERADE  udp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24   

потом сделал для сохранения iptables
ptables-save > /etc/iptables.up.rules
Создадим скрипт загрузки правил:
nano /etc/network/if-pre-up.d/iptables
И впишем в него команду загрузки правил из сохраненного ранее файла:
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
Не забудем дать права на исполнение этому файлу:
chmod +x /etc/network/if-pre-up.d/iptables

Вопросы:
ВОПРОС 1) после перезапуска kvm-сервера не работает, только когда снова пропишу команду , не правильно сделал автозагрузку iptables?

root@kvmser:/home/user# iptables -I FORWARD 1 -i br1 -o virbr0 -d 192.168.122.78 -p tcp -m tcp --dport 80 -j ACCEPT


ВОПРОС 2) С другого провайдера запускаю сайт робит (из деревни) или если на локальном запускаю в брайзере vpn, если с локалки не запускается. Я так понял нужно еще правильно прописать, чтобы с сетки 192.168.1.0 был доступ к виртуальной сетке 192.168.122.0 ?

Вот лист iptables,пока только изучаю , не материте меня пожалуйста :

root@kvmser:/home/user# iptables -L -n -v
Chain INPUT (policy ACCEPT 13003 packets, 736K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  120  7728 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    4  1312 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  166 10307 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.78       tcp dpt:80
  337  123K ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
 1115 83136 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
   58  6253 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.78       tcp dpt:80
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     tcp  --  br1    virbr0  0.0.0.0/0            192.168.122.78       tcp dpt:80
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 66581 packets, 93M bytes)
 pkts bytes target     prot opt in     out     source               destination         
    4  1312 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68
borbor ()
Ответ на: комментарий от anc

вот еще

root@kvmser:/home/user# iptables -L  -v
Chain INPUT (policy ACCEPT 211 packets, 15688 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    6   346 ACCEPT     udp  --  virbr0 any     anywhere             anywhere             udp dpt:domain
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere             tcp dpt:domain
    1   328 ACCEPT     udp  --  virbr0 any     anywhere             anywhere             udp dpt:bootps
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere             tcp dpt:bootps
    0     0 ACCEPT     udp  --  virbr0 any     anywhere             anywhere             udp dpt:domain
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere             tcp dpt:domain
    0     0 ACCEPT     udp  --  virbr0 any     anywhere             anywhere             udp dpt:bootps
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere             tcp dpt:bootps
    0     0 ACCEPT     udp  --  virbr0 any     anywhere             anywhere             udp dpt:domain
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere             tcp dpt:domain
    0     0 ACCEPT     udp  --  virbr0 any     anywhere             anywhere             udp dpt:bootps
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere             tcp dpt:bootps
    0     0 ACCEPT     udp  --  virbr0 any     anywhere             anywhere             udp dpt:domain
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere             tcp dpt:domain
    0     0 ACCEPT     udp  --  virbr0 any     anywhere             anywhere             udp dpt:bootps
    0     0 ACCEPT     tcp  --  virbr0 any     anywhere             anywhere             tcp dpt:bootps

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  170 10538 ACCEPT     tcp  --  br1    virbr0  anywhere             192.168.122.78       tcp dpt:http
    5   380 ACCEPT     all  --  any    virbr0  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
  825 39612 ACCEPT     all  --  virbr0 any     192.168.122.0/24     anywhere            
    0     0 ACCEPT     all  --  virbr0 virbr0  anywhere             anywhere            
   59  2780 REJECT     all  --  any    virbr0  anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 any     anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 ACCEPT     tcp  --  br1    virbr0  anywhere             192.168.122.78       tcp dpt:http
    0     0 ACCEPT     all  --  any    virbr0  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 any     192.168.122.0/24     anywhere            
    0     0 ACCEPT     all  --  virbr0 virbr0  anywhere             anywhere            
    0     0 REJECT     all  --  any    virbr0  anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 any     anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 ACCEPT     tcp  --  br1    virbr0  anywhere             192.168.122.78       tcp dpt:http
    0     0 ACCEPT     all  --  any    virbr0  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 any     192.168.122.0/24     anywhere            
    0     0 ACCEPT     all  --  virbr0 virbr0  anywhere             anywhere            
    0     0 REJECT     all  --  any    virbr0  anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 any     anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 ACCEPT     tcp  --  br1    virbr0  anywhere             192.168.122.78       tcp dpt:http
    0     0 ACCEPT     all  --  any    virbr0  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 any     192.168.122.0/24     anywhere            
    0     0 ACCEPT     all  --  virbr0 virbr0  anywhere             anywhere            
    0     0 REJECT     all  --  any    virbr0  anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 any     anywhere             anywhere             reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 240 packets, 42632 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1   328 ACCEPT     udp  --  any    virbr0  anywhere             anywhere             udp dpt:bootpc
    0     0 ACCEPT     udp  --  any    virbr0  anywhere             anywhere             udp dpt:bootpc
    0     0 ACCEPT     udp  --  any    virbr0  anywhere             anywhere             udp dpt:bootpc
    0     0 ACCEPT     udp  --  any    virbr0  anywhere             anywhere             udp dpt:bootpc

borbor ()
Ответ на: комментарий от ne-vlezay

Как именно «просто сделать маршрутизацию»?

Deleted ()
Ответ на: комментарий от anc

короче сделал так...

просто в хук добавил строку, которая вручную работала и все, больше пока времени нет...

Спасибо всем, если не сложно напишите сайт , где подробно про iptables рассказывают , хоть я и программист , но нужно более детально разобрать этот вопрос (так как это скелет в линуксе для админа как я понял), нужна проверенная книга.

Всем спасибо , очень помогли...

borbor ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей