Переадресация локального порта для KVM / QEMU - PullRequest
0 голосов
/ 16 января 2020

Привет всем и заранее спасибо за помощь.

Я новичок в iptables и просто не могу понять мою проблему. Я хочу иметь возможность подключить свою виртуальную машину Ubuntu в 192.168.100.11:22 с помощью команды ssh user@localhost -p 12345, но все, что я получаю, это connection refused.

Некоторая информация о моей системе:

uname -a
5.4.6-2-MANJARO #1 SMP PREEMPT Tue Dec 24 15:55:20 UTC 2019 x86_64 GNU/Linux
  • Моя домашняя локальная сеть по адресу 192.168.1.1/24
  • virbr0 является мостом NAT 192.168.122.1/24 для моей машины Windows и не должна быть затронута.
  • virbro1 - это изолированный мост 192.168.100.1/24 для Ubuntu VM. Нет доступа к inte rnet.
  • У моего хоста есть собственный сервер s sh, слушающий только 192.168.1.1 порт 1234.

Я пробовал десятки строк, приведенных здесь, в StackOF относительно моей проблемы без успеха. Ниже приведены несколько наиболее предлагаемых линий. До сих пор я узнал, что PREROUTING может не применяться для маршрутизации на локальном хосте, и вы должны использовать правила для цепочки OUTPUT. При некоторой комбинации ниже я не получил s sh ошибок соединения, но, скорее всего, бесконечное l oop, и сбросил, прежде чем я поднял свои iptables.

iptables -t nat -I PREROUTING -p tcp --dport 12345 -j DNAT --to 192.168.100.11:22
iptables -t nat -I PREROUTING -d 127.0.0.1 -p tcp --dport 10001 -j DNAT --to 192.168.100.11:22
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -I FORWARD -o virbr1 -d  192.168.100.11 -j ACCEPT
iptables -A FORWARD -d 127.0.0.1 --dport 12345 -o 192.168.100.11:22
iptables -t nat -I OUTPUT -p tcp -o lo --dport 12345 -j REDIRECT --to-ports 22

https://aboullaite.me/kvm-qemo-forward-ports-with-iptables/

Переадресация IP включена

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

Ниже мой iptables-сохранить в состоянии по умолчанию только virbr0 и virbr1 up.

# Generated by iptables-save v1.8.3 on Thu Jan 16 11:04:22 2020
*mangle
:PREROUTING ACCEPT [1:105]
:INPUT ACCEPT [1:105]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3:161]
:POSTROUTING ACCEPT [3:161]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
-A LIBVIRT_PRT -o virbr1 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Thu Jan 16 11:04:22 2020
# Generated by iptables-save v1.8.3 on Thu Jan 16 11:04:22 2020
*nat
:PREROUTING ACCEPT [1:105]
:INPUT ACCEPT [1:105]
:OUTPUT ACCEPT [1:40]
:POSTROUTING ACCEPT [1:40]
:LIBVIRT_PRT - [0:0]
-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 Thu Jan 16 11:04:22 2020
# Generated by iptables-save v1.8.3 on Thu Jan 16 11:04:22 2020
*filter
:INPUT ACCEPT [1:105]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3:161]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWX - [0:0]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWI -o virbr1 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -i virbr1 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ACCEPT
-A LIBVIRT_FWX -i virbr1 -o virbr1 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr1 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr1 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr1 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr1 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr1 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr1 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr1 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr1 -p tcp -m tcp --dport 68 -j ACCEPT
COMMIT
# Completed on Thu Jan 16 11:04:22 2020

ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 2c:fd:a1:70:a8:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.17/24 brd 192.168.1.255 scope global dynamic noprefixroute enp4s0
       valid_lft 503263sec preferred_lft 503263sec
    inet6 fe80::5103:7775:e8a6:43db/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
6: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/ether fe:df:34:89:fd:3e brd ff:ff:ff:ff:ff:ff
    inet 10.19.15.110/25 brd 10.19.15.127 scope global tap0
       valid_lft forever preferred_lft forever
    inet6 fe80::fcdf:34ff:fe89:fd3e/64 scope link 
       valid_lft forever preferred_lft forever
59: virbr1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:0f:fb:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global virbr1
       valid_lft forever preferred_lft forever
60: virbr1-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr1 state DOWN group default qlen 1000
    link/ether 52:54:00:0f:fb:84 brd ff:ff:ff:ff:ff:ff
65: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:0a:cd:21 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
66: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:0a:cd:21 brd ff:ff:ff:ff:ff:ff
...