LINUX.ORG.RU
ФорумAdmin

Проброс порта с рутера до KVM guest

 ,


0

1

Товарищи, помогите справиться с проблемкой. Понимание сетей и навыки администрирования Linux у меня на зачаточном уровне, поэтому даже гуглить правильно не могу.

Следущая ситуация. Хочется иметь Jenkins со слэйвами для сборки проектов, прогонки интеграционных тестов и т.д. Поскольку опыта настраивания виртуализации с нуля нет, выбрал то, что умею - vagrant с libvirt плагин и KVM+QEMU как бекэнд.

Получилось следующее

* Host - 172.21.0.10, на нем Vagrant проект со следующим содержимым:


Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  
  config.vm.define "master", autostart: false do |master|
    master.vm.box = "s3than/trusty64"
    master.ssh.forward_agent = true
   
    master.vm.network :public_network, ip: "172.21.0.11", netmask: "255.255.0.0", dev: "eth1"
    master.vm.network :private_network, ip: "192.168.66.10"
    master.vm.synced_folder ".", "/vagrant", type: "nfs"
    master.vm.provider "libvirt" do |v|
      v.memory = 2048
      v.cpus = 4
    end
    
    master.vm.provision "shell", path: "provision/profiles/jenkins-master.sh", args: [pgsql_root_password, deploy_key]
  end

  config.vm.define "slave1", autostart: false do |slave1|
    slave1.vm.box = "s3than/trusty64"
    slave1.ssh.forward_agent = true
    
    slave1.vm.network :private_network, ip: "192.168.66.11"
    slave1.vm.synced_folder ".", "/vagrant", type: "nfs"
    slave1.vm.provider "libvirt" do |v|
      v.memory = 2048
      v.cpus = 4
    end
    
    slave1.vm.provision "shell", path: "provision/profiles/jenkins-slave.sh", args: [pgsql_root_password, deploy_key]
  end

end

Все поднимается, все работает. Виртуальная сетка между master и slave работает, все друг друга видят, public ip для master (172.21.0.11) тоже работает - могу туда заходить со своего рабочего компа напрямую.

Все бы хорошо, но есть еще одно условие. Чтобы это все заработал окончательно, я хочу чтобы jenkins master получал уведомления от внешнего git хостинга (Bitbucket). Для этого на рутере (zywall 310) настроил port-forwarding. И вот тут возникает проблема.

* Проброс порта на 172.21.0.10 (host) - OK

* Проброс порта на 172.21.0.11 (master/kvm-guest) - connection timeout

И вот тут я не знаю, что дальше делать. Вроде как я могу достучаться до 172.21.0.11 отовсюду из сетки 172.21.0.0/16. Точно так же могу достучаться до 172.21.0.10. Но проброс порта работает только для хоста.

iptables на guest'ах нету. На хосте:

# Generated by iptables-save v1.4.21 on Tue May 31 08:55:14 2016
*mangle
:PREROUTING ACCEPT [409406:661493518]
:INPUT ACCEPT [231564:29751763]
:FORWARD ACCEPT [177721:631731053]
:OUTPUT ACCEPT [14463:1973481]
:POSTROUTING ACCEPT [192184:633704534]
-A POSTROUTING -o virbr2 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
-A POSTROUTING -o virbr1 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Tue May 31 08:55:14 2016
# Generated by iptables-save v1.4.21 on Tue May 31 08:55:14 2016
*nat
:PREROUTING ACCEPT [83660:12899990]
:INPUT ACCEPT [83212:12869540]
:OUTPUT ACCEPT [259:17537]
:POSTROUTING ACCEPT [259:17537]
-A POSTROUTING -s 192.168.66.0/24 -d 224.0.0.0/24 -j RETURN
-A POSTROUTING -s 192.168.66.0/24 -d 255.255.255.255/32 -j RETURN
-A POSTROUTING -s 192.168.66.0/24 ! -d 192.168.66.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.66.0/24 ! -d 192.168.66.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.66.0/24 ! -d 192.168.66.0/24 -j MASQUERADE
-A POSTROUTING -s 192.168.121.0/24 -d 224.0.0.0/24 -j RETURN
-A POSTROUTING -s 192.168.121.0/24 -d 255.255.255.255/32 -j RETURN
-A POSTROUTING -s 192.168.121.0/24 ! -d 192.168.121.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.121.0/24 ! -d 192.168.121.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.121.0/24 ! -d 192.168.121.0/24 -j MASQUERADE
COMMIT
# Completed on Tue May 31 08:55:14 2016
# Generated by iptables-save v1.4.21 on Tue May 31 08:55:14 2016
*filter
:INPUT ACCEPT [230119:29658491]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14421:1958407]
-A INPUT -i virbr2 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr2 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr2 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr2 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -i virbr1 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr1 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr1 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr1 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.66.0/24 -o virbr2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.66.0/24 -i virbr2 -j ACCEPT
-A FORWARD -i virbr2 -o virbr2 -j ACCEPT
-A FORWARD -o virbr2 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr2 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -d 192.168.121.0/24 -o virbr1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.121.0/24 -i virbr1 -j ACCEPT
-A FORWARD -i virbr1 -o virbr1 -j ACCEPT
-A FORWARD -o virbr1 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr1 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o virbr2 -p udp -m udp --dport 68 -j ACCEPT
-A OUTPUT -o virbr1 -p udp -m udp --dport 68 -j ACCEPT
COMMIT
# Completed on Tue May 31 08:55:14 2016

iptables на хосте:

eth1      Link encap:Ethernet  HWaddr 1c:c1:de:08:a5:33
          inet addr:172.21.0.10  Bcast:172.21.255.255  Mask:255.255.0.0
          inet6 addr: fe80::1ec1:deff:fe08:a533/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1833452 errors:0 dropped:2412 overruns:0 frame:0
          TX packets:99643 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:758095974 (722.9 MiB)  TX bytes:9073658 (8.6 MiB)
          Memory:ef060000-ef07ffff

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:263 errors:0 dropped:0 overruns:0 frame:0
          TX packets:263 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:37834 (36.9 KiB)  TX bytes:37834 (36.9 KiB)

macvtap0  Link encap:Ethernet  HWaddr 52:54:00:c1:70:0d
          inet6 addr: fe80::5054:ff:fec1:700d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:483079 errors:584 dropped:584 overruns:0 frame:0
          TX packets:6351 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:41780566 (39.8 MiB)  TX bytes:926779 (905.0 KiB)

virbr1    Link encap:Ethernet  HWaddr 52:54:00:89:74:20
          inet addr:192.168.121.1  Bcast:192.168.121.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:75125 errors:0 dropped:0 overruns:0 frame:0
          TX packets:120364 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4988463 (4.7 MiB)  TX bytes:630341478 (601.1 MiB)

virbr2    Link encap:Ethernet  HWaddr 52:54:00:88:aa:ef
          inet addr:192.168.66.1  Bcast:192.168.66.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:34 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2396 (2.3 KiB)  TX bytes:0 (0.0 B)

vnet0     Link encap:Ethernet  HWaddr fe:54:00:cf:42:d6
          inet6 addr: fe80::fc54:ff:fecf:42d6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:22871 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64586 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:1872123 (1.7 MiB)  TX bytes:211944209 (202.1 MiB)

vnet1     Link encap:Ethernet  HWaddr fe:54:00:51:4f:67
          inet6 addr: fe80::fc54:ff:fe51:4f67/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29684 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:648 (648.0 B)  TX bytes:1543800 (1.4 MiB)


Ответ на: комментарий от Elyas

Guest:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.121.1   0.0.0.0         UG    0      0        0 eth0
172.21.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.66.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
192.168.121.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0

Host:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.21.0.1      0.0.0.0         UG    0      0        0 eth1
172.21.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.66.0    0.0.0.0         255.255.255.0   U     0      0        0 virbr2
192.168.121.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr1

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

И действительно, помогло. Поменял рутина на:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.21.0.1      0.0.0.0         UG    0      0        0 eth1
172.21.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.66.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
192.168.121.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
и все чудесным образом заработало. И оказывается, это даже черным по белому расписано в документации к Vagrant: https://www.vagrantup.com/docs/networking/public_network.html - Default router.

Но если честно, я видимо очень туповат и не понимаю, почему оригинальный рутинг не работал. Инертен на guest'ах работал без проблем

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

«Если какие-то вещи вам непонятны, это не значит, что ваши понятия слабы, это значит, сии вещи не входят в круг ваших понятий»

Elyas ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.