Как пробросить jail с приватным IP в реальную сеть? (нужна помощь)
Добавлено: 2018-04-01 15:20:53
Ребята, нужна помощь, как пробросить jail в инет. Сразу честно признаюсь, сеть знаю плохо.
Есть один внешний реальный IP (пусть будет условно 8.8.8.8) повешен на igb0 и есть дефолтный роутер выданный ДЦ, пусть будет условно 8.8.8.1. Вешать алиасы из локальных сетей на внешний интерфейс, как полагаю, нельзя (кто знает, кто еще в датацентре на ту же сеть повесится). Пытался решить с shared IP и с VIMAGE/vnet. Ну давайте остановися на VIMAGE/vnet (хотя мне собственный стэк внутри клетки нафиг сдался, но кажется, что вроде бы так проще). FreeBSD 11.1-RELEASE.
Вот внутри jail:
Себя пингуем, роутер нет:
А вот снаружи:
Ну вот в моем (не)понимании так:
Клетку я повесил на 10.1.1.10. Ну дефолтроутер я там добавил 10.1.1.254, но мой роутер в реальный инет это 8.8.8.1. Я так полагаю, что именно его я и должен добавить внутри клетки? Но как? Добавить его в клетке я не могу никак, потому что на интерфейсе нет никакой сети 8.8.8.* подходящей для него:
OK. Может снаружи попробовать добавить? Как, если ни на каком интерфейсе нет сетки 10.1.1.0/24? Тоже ведь будет ответ Network is unreachable (и так и было). Поэтому я решаю bridge0 присвоить какой-то адрес из сети 10.1.1.0/24. Соответственно выше поэтому вы и видите, что я мосту присвоил 10.1.1.15.
В общем, было у меня снаружи и вот так:
И вот так:
Нету инета в джайле. Или такое вообще не настройкой сети и роутинга решается, а нужно форвардить или НАТашить? Решение с shared IP и kernel nat на ipfw тоже не получилось, в хэндбуке какой-то устаревший метод с natd (такой оверхед нафиг не хочу).
Мне в теории не нужен свой стек в джайле, я просто ищу решение как ему выдать полноценный инет без лишнего оверхеда. Чем проще, тем лучше. Раньше вешал их на реальные внешние алиасы и было все просто, но теперь IPv4 на вес золота. Казалось бы банальная задача, но бьюсь все выходные.
Есть тут сильные сетевики?
Есть один внешний реальный IP (пусть будет условно 8.8.8.8) повешен на igb0 и есть дефолтный роутер выданный ДЦ, пусть будет условно 8.8.8.1. Вешать алиасы из локальных сетей на внешний интерфейс, как полагаю, нельзя (кто знает, кто еще в датацентре на ту же сеть повесится). Пытался решить с shared IP и с VIMAGE/vnet. Ну давайте остановися на VIMAGE/vnet (хотя мне собственный стэк внутри клетки нафиг сдался, но кажется, что вроде бы так проще). FreeBSD 11.1-RELEASE.
Вот внутри jail:
Код: Выделить всё
# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
groups: lo
vnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 02:ff:60:a9:bd:7b
hwaddr 02:ff:30:00:06:0b
inet6 fe80::ff:60ff:fea9:bd7b%vnet0 prefixlen 64 scopeid 0x2
inet 10.1.1.10 netmask 0xffffff00 broadcast 10.1.1.255
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
status: active
groups: epair
# netstat -rn
netstat: kvm not available: /dev/mem: No such file or directory
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 10.1.1.254 UGS vnet0
10.1.1.0/24 link#2 U vnet0
10.1.1.10 link#2 UHS lo0
127.0.0.1 link#1 UH lo0
# ipfw show
00001 6 336 allow ip from any to any
65535 176 10338 deny ip from any to any
Код: Выделить всё
# ping 10.1.1.10
PING 10.1.1.10 (10.1.1.10): 56 data bytes
64 bytes from 10.1.1.10: icmp_seq=0 ttl=64 time=0.027 ms
64 bytes from 10.1.1.10: icmp_seq=1 ttl=64 time=0.012 ms
^C
--- 10.1.1.10 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.012/0.019/0.027/0.007 ms
# ping 10.1.1.254
PING 10.1.1.254 (10.1.1.254): 56 data bytes
^C
--- 10.1.1.254 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss
Код: Выделить всё
# ifconfig
igb0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=2400b9<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,RXCSUM_IPV6>
ether 00:1e:67:b4:fe:0b
hwaddr 00:1e:67:b4:fe:0b
inet <ну типа 8.8.8.8> netmask 0xffffffc0 broadcast <его броадкаст>
inet <еще один внешний IP из другой сети> netmask 0xffffffff broadcast <его броадкаст> vhid 1
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
carp: MASTER vhid 1 advbase 1 advskew 0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 <неважно>
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
groups: lo
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 02:a5:fa:41:1d:00
inet 10.1.1.15 netmask 0xffffff00 broadcast 10.1.1.255
nd6 options=9<PERFORMNUD,IFDISABLED>
groups: bridge
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: vnet0:7 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 5 priority 128 path cost 2000
member: igb0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 priority 128 path cost 20000
bridge1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 02:a5:fa:41:1d:01
nd6 options=9<PERFORMNUD,IFDISABLED>
groups: bridge
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
vnet0:7: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
description: associated with jail: a9bd7aa1-3426-11e8-b87a-001e67b4fe0b
options=8<VLAN_MTU>
ether 02:ff:60:a9:bd:7a
hwaddr 02:ff:e0:00:05:0a
inet6 <неважно>
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
status: active
groups: epair
# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default <ну типа 8.8.8.1> UGS igb0
10.1.1.0/24 link#3 U bridge0
10.1.1.15 link#3 UHS lo0
<лишнее поудалял>
Клетку я повесил на 10.1.1.10. Ну дефолтроутер я там добавил 10.1.1.254, но мой роутер в реальный инет это 8.8.8.1. Я так полагаю, что именно его я и должен добавить внутри клетки? Но как? Добавить его в клетке я не могу никак, потому что на интерфейсе нет никакой сети 8.8.8.* подходящей для него:
Код: Выделить всё
#route add -net 10.1.1.0/24 <ну типа 8.8.8.1>
route: writing to routing socket: Network is unreachable
add net 10.1.1.0: gateway <ну типа 8.8.8.1> fib 0: Network is unreachable
В общем, было у меня снаружи и вот так:
Код: Выделить всё
Destination Gateway Flags Netif Expire
default 8.8.8.1 UGS igb0
10.1.1.0/24 10.1.1.254 UGS bridge0
10.1.1.15 link#3 UHS lo0
8.8.8.0/26 link#1 U igb0
8.8.8.8 link#1 UHS lo0
127.0.0.1 link#2 UH lo0
Код: Выделить всё
Destination Gateway Flags Netif Expire
default 8.8.8.1 UGS igb0
10.1.1.0/24 8.8.8.1 UGS igb0
10.1.1.15 link#3 UHS lo0
8.8.8.0/26 link#1 U igb0
8.8.8.8 link#1 UHS lo0
127.0.0.1 link#2 UH lo0
Мне в теории не нужен свой стек в джайле, я просто ищу решение как ему выдать полноценный инет без лишнего оверхеда. Чем проще, тем лучше. Раньше вешал их на реальные внешние алиасы и было все просто, но теперь IPv4 на вес золота. Казалось бы банальная задача, но бьюсь все выходные.
Есть тут сильные сетевики?