LINUX.ORG.RU
ФорумAdmin

проброс портов в VM kvm debian 12

 , ,


0

1

Доброго дня всем.

(Изначальная задача - настроить свою почту на виртуальной машине которая на своем сервере, со статическим ip)

Не могу пробросить порты в виртуальную машину debian 12, расположенную на хосте debian 12.

хост: 192.168.0.141 vm: 192.168.122.158

Находясь на хосте, по ssh, спокойно захожу на vm.

На vm запущен nginx и он работает если просматриваешь сайт его в lynx, по адресу localhost или 192.168.122.158

Желаю пробросить порт 6666 хоста на 80й порт в vm.

Причем если открыть страницу 192.168.122.158 в хосте, так же показывает начальную страницу nginx

Но если на хосте открыть в Lynx 192.168.0.141:6666 то страница недоступна.

root@debil:~# virsh net-edit default_mail

<network>
  <name>default_mail</name>
  <uuid>9a05da11-e96b-47f3-8253-a3a482e445f5</uuid>
  <forward mode='nat'/>
  <bridge name='br0' stp='on' delay='0'/>
  <mac address='52:54:00:0a:cd:21'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
      <host mac='52:54:00:10:29:21' name='deb_mail' ip='192.168.122.158'/>
    </dhcp>
  </ip>
</network>

пробовал по разному добавлять правила (это один из примеров)

iptables -t nat -I PREROUTING -p tcp -d 192.168.0.141 --dport 6666 -j DNAT --to-destination 192.168.122.128:80

но в iptables не появляются записи

root@debil:~# iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1719  133K DOCKER     all  --  any    any     anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1    60 DOCKER     all  --  any    any     anywhere            !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  any    !docker0  172.17.0.0/16        anywhere            
   49  4091 LIBVIRT_PRT  all  --  any    any     anywhere             anywhere            

Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  docker0 any     anywhere             anywhere            

Chain LIBVIRT_PRT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    1    40 RETURN     all  --  any    any     192.168.122.0/24     base-address.mcast.net/24 
    0     0 RETURN     all  --  any    any     192.168.122.0/24     255.255.255.255     
    0     0 MASQUERADE  tcp  --  any    any     192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    9   684 MASQUERADE  udp  --  any    any     192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    0     0 MASQUERADE  all  --  any    any     192.168.122.0/24    !192.168.122.0/24    

Перечитал прилично инструкций, но видимо что-то делаю принципиально не так.

Подскажите плиз как это настроить.



Последнее исправление: dronnet (всего исправлений: 1)

Такой NAT будет работать только в случае, если система, с которой делается DNAT является шлюзом для получателя.

Если это не так нужно делать ещё и SNAT.

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

Сорри, не верно сам написал ))

Прямо сейчас и исправил -результат неизменен. Зайти не получается.

Что ещё посмотреть? или куда?

может ещё какое правило надо дописать. Да и вообще как понять, что то что я пишу используется?

вот содержимое /etc/iptables/ rules.v4

# Generated by iptables-save v1.8.9 (nf_tables) on Mon Jul 22 15:06:39 2024
*mangle
:PREROUTING ACCEPT [4:208]
:INPUT ACCEPT [4:208]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:888]
:POSTROUTING ACCEPT [4:888]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -o br0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Mon Jul 22 15:06:39 2024
# Generated by iptables-save v1.8.9 (nf_tables) on Mon Jul 22 15:06:39 2024
*filter
:INPUT ACCEPT [4:208]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:888]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWX - [0:0]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
-A INPUT -j LIBVIRT_INP
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -d 192.168.122.158/32 -o br0 -j ACCEPT
-A FORWARD -j LIBVIRT_FWX
-A FORWARD -j LIBVIRT_FWI
-A FORWARD -j LIBVIRT_FWO
-A FORWARD -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i br0 -o enp1s0 -j ACCEPT
-A FORWARD -i br0 -o lo -j ACCEPT
-A OUTPUT -j LIBVIRT_OUT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
-A LIBVIRT_FWI -d 192.168.122.0/24 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o br0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWI -d 192.168.122.0/24 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o br0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWI -d 192.168.122.0/24 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o br0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i br0 -j ACCEPT
-A LIBVIRT_FWO -i br0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i br0 -j ACCEPT
-A LIBVIRT_FWO -i br0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i br0 -j ACCEPT
-A LIBVIRT_FWO -i br0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i br0 -o br0 -j ACCEPT
-A LIBVIRT_FWX -i br0 -o br0 -j ACCEPT
-A LIBVIRT_FWX -i br0 -o br0 -j ACCEPT
-A LIBVIRT_INP -i br0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i br0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i br0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i br0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i br0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i br0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i br0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i br0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i br0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i br0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i br0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i br0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p tcp -m tcp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p tcp -m tcp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o br0 -p tcp -m tcp --dport 68 -j ACCEPT
COMMIT
# Completed on Mon Jul 22 15:06:39 2024
# Generated by iptables-save v1.8.9 (nf_tables) on Mon Jul 22 15:06:39 2024
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
:LIBVIRT_PRT - [0:0]
-A PREROUTING -d 192.168.0.141/32 -p tcp -m tcp --dport 6666 -j DNAT --to-destination 192.168.122.158:80
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -j LIBVIRT_PRT
-A DOCKER -i docker0 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT
# Completed on Mon Jul 22 15:06:39 2024


dronnet
() автор топика

Какой ты (тот кто под ником). Тебе неизвестно правила - закон Джунглей. Как что-то назаваешь, так он (оно) и действовать будет (до конца действия, жизни). Не светит тебе - ни-че-го.

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

Если честно то никаких выводов не сделал.

Дело в том, что ни в одной прочитанной ранее инструкции я не встречал ничего про SNAT. И я опасаюсь включать ещё что-то, ибо неплохо запутался во всём этом.

Понимаю, что для того чтобы настроить, надо слишком хорошо разбираться в сетях.

Было про ufw - так же не смог победить. После включения его падает вообще вся связь, ничего никуда не пингуется и не заходит. Решил прекратить мучать этот самый ufw и выключил его.

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

Попробую почитать про SNAT, посмотрим что это даст.

dronnet
() автор топика
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

# iptables -t nat -A PREROUTING -d 192.168.0.141/32 -i enp3s0 -p tcp -m tcp --dport 22158 -j DNAT --to-destination 192.168.122.158:22

# iptables -t nat -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE


enp3s0 – заменить на твой сетевой интерфейс на хосте

ssh -p 22158 192.168.0.141 – попадешь в гостевую сист.

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

Спасибо за совет. На гостевую систему и так заходит нормально ssh dron_mail@192.168.122.158.

А вот увидеть сайт nginx на гостевой системе не получается.

это включено

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

попробовал заменить в таком порядке

# iptables -t nat -A PREROUTING -d 192.168.0.141/32 -i enp1s0 -p tcp -m tcp --dport 6666 -j DNAT --to-destination 192.168.122.158:80

# iptables -t nat -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE

но сайт не виден, то есть по адресу 192.168.0.141:6666 нет ответа.

При этом по адресам (находясь на хосте):
192.168.0.141 - apach2
localhost - apach2
192.168.122.158 - nginx

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


Но если на хосте открыть в Lynx 192.168.0.141:6666 то страница недоступна.

………

-d 192.168.0.141/32 -i enp1s0 -p tcp -m tcp --dport 6666 -j DNAT --to-destination 192.168.122.158:80

Если все именно так как в приведенных выше цитатах, то логично. При обращении с хоста у вас enp1s0 не будет входящим интерфейсом.

anc ★★★★★
()