freebsd. можно из jail'a ходить к 127.0.0.1 ?
%telnet 127.0.0.1 3306
А что у тебя на 3306?
---
...Я работаю антинаучным аферистом...
MySQL?
mysql
steel ~(0/2)$ telnet 127.0.0.1 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
8
4.1.22-log:x-w4;h~`F,zW#H"n){Rf.M
^CConnection closed by foreign host.
без jail всё коннектиться
steel ~(0/2)$ telnet 127.0.0.1 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
8
4.1.22-log:x-w4;h~`F,zW#H"n){Rf.M
^CConnection closed by foreign host.
без jail всё коннектиться
3306 - это от фонаря взялось.
первое, что в глаза бросилось, забинденное на 127.0.0.1
первое, что в глаза бросилось, забинденное на 127.0.0.1
А какой-нибудь фильтр не режет соединения? Или сам мускул.
Пингов пробовал посылать?
---
...Я работаю антинаучным аферистом...
Пингов пробовал посылать?
---
...Я работаю антинаучным аферистом...
первое правило в ipfw
allow ip from any to any via lo0
да и на другие порты тоже самое.
mysql не должен ничего резать
allow ip from any to any via lo0
да и на другие порты тоже самое.
mysql не должен ничего резать
пинги не посылаются из jail.
или я не знаю, как это убрать, может sysctl переменную какую поставить
или я не знаю, как это убрать, может sysctl переменную какую поставить
>mysql не должен ничего резать
вы уверены, что localhost = 127.0.1.1 ?
логин-то в мускуле localhost
----
а не, похоже не в этом проблема
вы уверены, что localhost = 127.0.1.1 ?
логин-то в мускуле localhost
----
а не, похоже не в этом проблема
> пинги не посылаются из jail.
Никто не избежит правосудия.
А сам интерфейс поднят?
ifconfig -a
netstat -r
---
...Я работаю...
Никто не избежит правосудия.
А сам интерфейс поднят?
ifconfig -a
netstat -r
---
...Я работаю...
tcpdump не помогает?
косяк вроде не в настройках программы.
telnet 127.0.0.1 53
тоже не проходит
в любом случае его нужно настраивать.
telnet 127.0.0.1 53
тоже не проходит
в любом случае его нужно настраивать.
%ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.1.1 netmask 0xff000000
%netstat -r
netstat: kvm not available
Routing tables
rt_tables: symbol not in namelist
%
то, что нет таблиц маршрутизации, как-то странно, вроде в других jail'aх я их видел
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.1.1 netmask 0xff000000
%netstat -r
netstat: kvm not available
Routing tables
rt_tables: symbol not in namelist
%
то, что нет таблиц маршрутизации, как-то странно, вроде в других jail'aх я их видел
tcpdump не помогает?
55 steel ~(0/3)# tcpdump -i lo0 -v
tcpdump: listening on lo0, link-type NULL (BSD loopback capture size 96 bytes
17:55:20.380200 IP (tos 0x10, ttl 64, id 30053, offset 0, flags [DF], proto: TCP (6 length: 64) 127.0.1.1.60869 > 127.0.1.1.domain: S, cksum 0x5a0c (correct 2051117769:2051117769(0) win 65535 <mss 16344,nop,wscale 1,nop,nop,timestamp 1433883217 0,sackOK,eol>
17:55:20.380243 IP (tos 0x10, ttl 64, id 30054, offset 0, flags [DF], proto: TCP (6 length: 40) 127.0.1.1.domain > 127.0.1.1.60869: R, cksum 0xb4c7 (correct 0:0(0) ack 2051117770 win 0
что-то ездит, но от этого не легче
Ну а пробовал насильно его сделать?
route change default 127.0.0.1
---
...Я работаю...
route change default 127.0.0.1
---
...Я работаю...
1. с таким ip-адресом в инет точно не выйдешь 
2. на реальный интерфейс нужно алиас прописать с jail ip-адресом
А также:
man jail: Setting up the Host Environment, Configuring the Jail, Starting the Jail

2. на реальный интерфейс нужно алиас прописать с jail ip-адресом
А также:
man jail: Setting up the Host Environment, Configuring the Jail, Starting the Jail
даже занатить если?
а с 172.16.... можно?
разницы между ними я не вижу просто особой.
просто к внешнему(195.128.... ипу не хочется привязывать, т.к. он имеется только при включенном ppp соединении.
а с 172.16.... можно?
разницы между ними я не вижу просто особой.
просто к внешнему(195.128.... ипу не хочется привязывать, т.к. он имеется только при включенном ppp соединении.
естественно занатить можно, тогда и алиас не нужен будет.
но "man jail" все равно нужно освоить
но "man jail" все равно нужно освоить
У меня получается:
В /jail находится ld-elf.so, telnet и библиотеки необходимые для чего работы. На 6000 слушают локальные иксы.
think:~:|>jail /jail jj x.x.x.x /usr/bin/telnet 127.0.0.1 6000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
think:~:|>
В /jail находится ld-elf.so, telnet и библиотеки необходимые для чего работы. На 6000 слушают локальные иксы.
погоди,
давай для начала разберёмся, почему из 127.0.1.1 не виден 127.0.0.1.
я так понимаю, что jail - это некоторый продвинутый chroot, в котором процессы не могут видеть не-jail процессы, могут биндиться только на некоторые адреса и т.д.
не очень понял.
как это не нужен?
скажем есть апач на 127.0.0.1
я хочу сделать ещё апач в jail для внешних подключений.
делаю на адрес 127.0.1.1 и потом все входящии на какой-нибудь 195.1.1.1:80 -> 127.0.1.1:80
давай для начала разберёмся, почему из 127.0.1.1 не виден 127.0.0.1.
я так понимаю, что jail - это некоторый продвинутый chroot, в котором процессы не могут видеть не-jail процессы, могут биндиться только на некоторые адреса и т.д.
естественно занатить можно, тогда и алиас не нужен будет.
не очень понял.
как это не нужен?
скажем есть апач на 127.0.0.1
я хочу сделать ещё апач в jail для внешних подключений.
делаю на адрес 127.0.1.1 и потом все входящии на какой-нибудь 195.1.1.1:80 -> 127.0.1.1:80
%ifconfig lo0Так у тебя адреса 127.0.0.1 больше нет. Вот telnet туда и не ходок больше.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.1.1 netmask 0xff000000
если процесс забинден ещё и на 127.0.1.1: port (т.е. кроме 127.0.0.1:port то всё замечательно.
сейчас затестил с named.
это как можно объяснить вообще?
сейчас затестил с named.
это как можно объяснить вообще?
а зачем ему чтобы он был локальным?
пусть отправляет пакет, когда тот уже будет не в jail (т.е. где-то в ядре по таблицам маршрутизации он в нужное место отправится
пусть отправляет пакет, когда тот уже будет не в jail (т.е. где-то в ядре по таблицам маршрутизации он в нужное место отправится
Чтобы host и jail сервисы не перепутались, имей в виду:
У тебя named и в host и в jail окружениях крутится ?
Since jail is implemented using IP aliases, one of the
first things to do is to disable IP services on the host system that lis-
ten on all local IP addresses for a service. If a network service is
present in the host environment that binds all available IP addresses
rather than specific IP addresses, it may service requests sent to jail
IP addresses.
У тебя named и в host и в jail окружениях крутится ?
а зачем ему чтобы он был локальным?Вот он по таблицам маршрутизации и отправляется в lo0, ведь у тебя там находится сеть 127/8. Т.к. адреса 127.0.0.1 там не наблюдается, то пакеты никуда не приходят и выбрасываются.
пусть отправляет пакет, когда тот уже будет не в jail (т.е. где-то в ядре по таблицам маршрутизации он в нужное место отправится
если так размышлять, то забиндив jail на 10.10.10.10/24, локальным не будет адрес 10.10.10.11, поэтому пакеты до него не будут доходить.
пакеты же доставляет ядро, а оно должно знать про 127.0.0.1
пакеты же доставляет ядро, а оно должно знать про 127.0.0.1
"если процесс забинден ЕЩЁ и на 127.0.1.1: port (т.е. кроме 127.0.0.1:port то всё замечательно."
я же написал.
что это было испытание.
там ничего не было забиндено изначально
я же написал.
что это было испытание.
там ничего не было забиндено изначально
если так размышлять, то забиндив jail на 10.10.10.10/24, локальным не будет адрес 10.10.10.11, поэтому пакеты до него не будут доходить.Конечно он не будет локальным. Локальным будет только 10.10.10.10.
пакеты же доставляет ядро, а оно должно знать про 127.0.0.1Ядро ничего не знает про 127.0.0.1. Этот адрес не волшебный.
под ядром понималось то, что доставляет пакеты без jail.
может это и не ядро.
про знать - это то, что адрес имеется в таблице маршрутизации host, а не jail.
может это и не ядро.
про знать - это то, что адрес имеется в таблице маршрутизации host, а не jail.
Таблица маршрутизации одна в FreeBSD, общая для всех jail. Согласно таблице маршрутизации адрес 127.0.0.1 должен находиться где-то за интерфейсом lo0. lo0 - loopback интерфейс, то есть он не умеет пакеты никуда посылать, он умеет только доставлять их локально, при условии, что dst IP address пакета является одним из адресов самого loopback интерфейса.
Ладно, объясню через пример. Тебя не удивляет, что у тебя сейчас команда
telnet localhost 3306
не работает не только из jail но и из host?
telnet localhost 3306
не работает не только из jail но и из host?
решение твоих проблем:
1. остановить все jail-ы
2.
ifconfig lo0 inet 127.0.0.1 netmask 255.0.0.0
ifconfig lo1 inet 127.0.1.1 netmask 255.0.0.0
3. jail /jail/aaa aaa.aaa 127.0.1.1 /bin/csh
1. остановить все jail-ы
2.
ifconfig lo0 inet 127.0.0.1 netmask 255.0.0.0
ifconfig lo1 inet 127.0.1.1 netmask 255.0.0.0
3. jail /jail/aaa aaa.aaa 127.0.1.1 /bin/csh
$19:30 steel ~(0/2)$ telnet localhost 3306
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
8
4.1.22-logшxRqatE9.z,@k{H4mH]}}|w
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
8
4.1.22-logшxRqatE9.z,@k{H4mH]}}|w
1. остановить все jail-ы
2.
ifconfig lo0 inet 127.0.0.1 netmask 255.0.0.0
ifconfig lo1 inet 127.0.1.1 netmask 255.0.0.0
3. jail /jail/aaa aaa.aaa 127.0.1.1 /bin/csh
это уже намноооооого интересней.
т.е. имеет значение, какой интерфейс?
т.е. алиасы не катят вообще?
а как же куча примеров в инете?
алиасы нужны если ip-адрес инетовский (белый так сказать)
ты же не хочешь так делать, сам же говорил
ты же не хочешь так делать, сам же говорил

я не понимаю разницы между lo0 и em0, например
т.е. имеет значение, какой интерфейс?
нихуя не имеет.
просто ты расхуячил используемый в host окружении ip-адрес 127.0.0.1.
можно сделать и так:
ifconfig lo13 inet 127.0.0.1 netmask 255.0.0.0
ifconfig lo0 inet 127.0.1.1 netmask 255.0.0.0
хуле:
man 4 em
man 4 lo

man 4 em
man 4 lo

ifconfig lo1 inet 127.0.1.1 netmask 255.0.0.0
неа..
38 steel /jail(0/3)# ifconfig lo1
lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.2.1 netmask 0xff000000
38 steel /jail(0/3)# jail /jail/pubwww pubwww.local 127.0.2.1 /usr/bin/telnet 127.0.0.1 3306
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
38 steel /jail(0/3)#
неа..
чувак с тебя 5 баксов за телепатию 

у тебя есть интерфейс с 127.0.0.1 ?
Если нет - то сделай, если есть - проверь он UP или DOWN
Если нет - то сделай, если есть - проверь он UP или DOWN
нихуя не имеет.ну конечно имеется ввиду приципиальное различие, а не номер.
т.е. различие:
127.0.0.1 и 127.0.1.1 на одном девайсе (lo0)
или на разных
Принципиального различия в данном случае нет.
Я так не понял есть у тебя 127.0.0.1 или нет? В начале треда ты показал, что его нет.
Я так не понял есть у тебя 127.0.0.1 или нет? В начале треда ты показал, что его нет.
43 steel /jail(0/3)# jail /jail/pubwww pubwww.local 127.0.1.1 /sbin/ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.1.1 netmask 0xff000000
43 steel /jail(0/3)# /sbin/ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
inet 127.0.1.1 netmask 0xff000000
inet 127.0.1.2 netmask 0xff000000
43 steel /jail(0/3)#
сорри, что запутал, нужно было там написать, что это из jail запускалась команда
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.1.1 netmask 0xff000000
43 steel /jail(0/3)# /sbin/ifconfig lo0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
inet 127.0.1.1 netmask 0xff000000
inet 127.0.1.2 netmask 0xff000000
43 steel /jail(0/3)#
сорри, что запутал, нужно было там написать, что это из jail запускалась команда
ты из host окружения результат ifconfig покажи
там подряд из host и из jail
ты лучше скажи - проблема решилась при этих настройках ? 

если 127.0.1.1 повесить на lo1 то тоже самое.
там выше листинг
там выше листинг
mysql у тебя в jail или host окружении крутится ?
в jail ничего не крутится.
в случае lo1 пересмотри правила ipfw.
для проверки поставь всё-разрешающее правило - первым.
для проверки поставь всё-разрешающее правило - первым.
первым правилом стоит
allow ip from 127.0.0.1/8 to 127.0.0.1/8
allow ip from 127.0.0.1/8 to 127.0.0.1/8
allow ip from 127.0.0.1/8 to 127.0.0.1/8Может так нужно ?
allow ip from 127.0.0.0/8 to 127.0.0.0/8
это тоже самое
$20:38 steel ~(0/2)$ sudo ipfw add 98 allow ip from 127.0.0.1/8 to 127.0.0.1/8
00098 allow ip from 127.0.0.0/8 to 127.0.0.0/8
тут что-то странное происходит, главной странностью я по-прежнему считаю то, что поведение в jail
telnet 127.0.0.1 53
меняется если на хосте биндить named на 127.0.0.1 и на всё.
в первом случае коннекта нет, во втором есть.
как это может быть связано - я не пойму.
$20:38 steel ~(0/2)$ sudo ipfw add 98 allow ip from 127.0.0.1/8 to 127.0.0.1/8
00098 allow ip from 127.0.0.0/8 to 127.0.0.0/8
тут что-то странное происходит, главной странностью я по-прежнему считаю то, что поведение в jail
telnet 127.0.0.1 53
меняется если на хосте биндить named на 127.0.0.1 и на всё.
в первом случае коннекта нет, во втором есть.
как это может быть связано - я не пойму.
сделай allow ip from any to any
55 steelemail ~(0/3)# tcpdump -i lo0 -vtcpdump: listening on lo0, link-type NULL (BSD loopback capture size 96 bytes17:55:20.380200 IP (tos 0x10, ttl 64, id 30053, offset 0, flags [DF], proto: TCP (6 length: 64) 127.0.1.1.60869 > 127.0.1.1.domain: S, cksum 0x5a0c (correct 2051117769:2051117769(0) win 65535 <mss 16344,nop,wscale 1,nop,nop,timestamp 1433883217 0,sackOK,eol>17:55:20.380243 IP (tos 0x10, ttl 64, id 30054, offset 0, flags [DF], proto: TCP (6 length: 40) 127.0.1.1.domain > 127.0.1.1.60869: R, cksum 0xb4c7 (correct 0:0(0) ack 2051117770 win 0дык вот он косяк где.
я сначала не увидел.
почему-то вместо 127.0.0.1 он коннектиться на 127.0.1.1
откуда такое поведение взялось?
nat ?
127.0.0.1/8 не натится точно.
бля
ну ты пидорчук
алиасы 127.0.1.1 и 127.0.2.1 нужно добавлять на lo0 с маской 255.255.255.255
ну ты пидорчук

алиасы 127.0.1.1 и 127.0.2.1 нужно добавлять на lo0 с маской 255.255.255.255
я это давно заметил, НО учитывая, что вариант с lo1, где пох как добавлять тоже не работал тем же образом,
считаю, что это непринципиально.
(для надёжности, проверил - не принципиально)
кстати.. вроде на 127 можно и без этого (но это вопрос)
это условие(что добавлять с /32) я так понимаю нужно, чтобы не появлялось двух одинаковых записей в таблице маршрутизации, т.к. он имеено на это и ругается, когда добавляешь
считаю, что это непринципиально.
(для надёжности, проверил - не принципиально)
кстати.. вроде на 127 можно и без этого (но это вопрос)
это условие(что добавлять с /32) я так понимаю нужно, чтобы не появлялось двух одинаковых записей в таблице маршрутизации, т.к. он имеено на это и ругается, когда добавляешь
гы, название темы смешное... а на хрен нужен этот jail, если в инет ходить не умеет
ну нат на него навесить не проблема.
мне интересно, почему он так странно себя ведёт с локальным хостом.
или это не странность, а так и должно быть, просто я не понимаю чего-то
мне интересно, почему он так странно себя ведёт с локальным хостом.
или это не странность, а так и должно быть, просто я не понимаю чего-то
ничего не понимаю.
172.16.22.100 - мой ип.
может это специально lo0 особенным сделали из соображений безопасности ?
%telnet 172.16.22.100 53
Trying 172.16.22.100...
Connected to steel.local.
Escape character is '^]'.
^C^D
^C
^C^C^C^C^C^C^CConnection closed by foreign host.
%
%
%telnet 127.0.0.1 53
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
%
172.16.22.100 - мой ип.
может это специально lo0 особенным сделали из соображений безопасности ?
откопал.
http://docs.freebsd.org/44doc/papers/jail/jail-6.html
т.е. если забиндить named на 127.0.2.1:53, иконнектиться из jail (127.0.1.1) - то всё оки.
этой чудо особенностью обладает только 127.0.0.1, видимо, чтобы не было глюков сильных
6.4. Restriction to one IP number.
Restricting TCP and UDP access to just one IP number was done almost entirely in the code which manages ``protocol control blocks''. When a jailed process binds to a socket, the IP number provided by the process will not be used, instead the pre-configured IP number of the jail is used.
BSD based TCP/IP network stacks sport a special interface, the loop-back interface, which has the ``magic'' IP number 127.0.0.1. This is often used by processes to contact servers on the local machine, and consequently special handling for jails were needed. To handle this case it was necessary to also intercept and modify the behaviour of connection establishment, and when the 127.0.0.1 address were seen from a jailed process, substitute the jails configured IP number.
Finally the APIs through which the network configuration and connection state may be queried were modified to report only information relevant to the configured IP number of a jailed process.
http://docs.freebsd.org/44doc/papers/jail/jail-6.html
т.е. если забиндить named на 127.0.2.1:53, иконнектиться из jail (127.0.1.1) - то всё оки.
этой чудо особенностью обладает только 127.0.0.1, видимо, чтобы не было глюков сильных
Оставить комментарий
Phoenix
собираю мир с опциямиcd /usr/src
make buildworld
make installworld DISTDIR=/jail/aaa
cd /usr/src/etc
make distribution DISTDIR=/jail/aaa
запускаю
jail /jail/aaa aaa.aaa 127.0.1.1 /bin/csh
%telnet 127.0.0.1 3306
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
%