Re: Stejná IP adresa v jailu - Address already in use

Miroslav Lachman 000.fbsd at quip.cz
Thu Dec 10 15:54:15 CET 2020


On 10/12/2020 14:50, Marián Černý wrote:

> Já si právě pamatuju (možná špatně), že když jsem s jaily začínal, tak se nabízely dvě možnosti - sdílená IP adresa nebo oddělená. A mně sdílená IP adresa nevadila a přišlo mi to jednodušší v tom, že tam není navíc další (stavová) vrstva s NATem. Navíc s ipfw je potřeba běžet natd a s pf (kde je to jednodušší) moc nekamarádím.

To jenom nepouzivas jaily dostatecne dlouho :)
Ono to puvodne bylo tak, ze kazdy jail musel mit svoji IP adresu a 
sluzby v hostitelskem systemu nesmely poslouchat na wildcard adrese.. 
aspon mam ten pocit, ze kdyz treba SSHd v hostu poslouchalo na 
0.0.0.0:22 (*:22), tak neslo spustit / prihlasit se na SSHd bezici na 
konkretni adrese v jailu.
Pak k tomu pribyla v roce 2008 moznost pouzivat IPv6 adresy, pridelit 
jailu vice IP adres a nebo taky spustit jail bez IP adresy.

To, ze mas ted jail na stejne adrese jako host neni nic vyjimecneho, jen 
to tak pouziva mensi skupina lidi, nez variantu, ze kazdy jail ma svoji 
IP, nebo i vice IP. Pak k tomu pribyla jeste moznost VNET / Vimage, kdy 
v jailu muze byt i firewall.

Na tvuj problem bych se dival jeste z jineho uhlu pohledu, nez Dan, 
ktery by ten jail treba zrusil uplne :)
Predpokladam, ze tvuj hostitel ma nejakou "verejnou" IP adresu, na 
kterou se na nej zvenku pripojujes. Na te same adrese ti bezi i sluzby v 
jailech, ale skutecne potrebujes, aby ty sluzby byly dostupne zvenku? 
Dovedu si predstavit, ze je vhodne mit Apache pristupneho zvenku, ale 
potrebujes zvenku pristupovat i na MySQL? Pokud ne, tak pak je jasnym 
kandidatem na to, aby tenhle "service jail" nemel verejnou adresu, ale 
jen takovou lokalni, na kterou se zvenku pripojovat vubec neda.
Ja takhle mam treba na jednom stroji v jailu Redmine, protoze je to 
velky kolos s mnoha zavislostma a nechci si tim zaneradit ten hlavni 
system. Takze mam jail, kde je jenom Redmine na privatni adrese, zvenku 
se na nej leze skrz Apache reverzni proxy, Redmine si saha do MySQL v 
hostitelskem systemu (a ted nevim z hlavy, ale mozna ani pres TCP/IP, 
ale pres unix domain socket v /tmp/mysql.sock)

Tyhle service jaily s privatnima adresama si muzes povesit na 
"virtualni" sitovku, treba lo1, kterou si naklonuje" jednoduse v rc.conf

cloned_interfaces="lo1"
ifconfig_lo1="inet 172.16.20.15 netmask 255.255.255.0"

V jail.conf pak staci napriklad

red {
         host.hostname = "red.example.com";
         ip4.addr      = 172.16.20.15;
}

Plus teda ty ostatni veci, co jsou definovane globalne pro vsechny jaily:

## Typical static defaults:
## Use the rc scripts to start and stop jails.  Mount jail's /dev.
exec.start = "/bin/sh /etc/rc";
exec.stop  = "/bin/sh /etc/rc.shutdown";
exec.clean;
exec.system_user   = "root";
exec.jail_user     = "root";
mount.devfs;
devfs_ruleset      = 4;
enforce_statfs     = 1;
#allow.set_hostname = false;
#allow.mount;
allow.set_hostname = 0;
allow.sysvipc      = 0;
allow.raw_sockets  = 0;

## Dynamic wildcard parameter:
## Base the path off the jail name.
path            = "/usr/jail/$name";
exec.consolelog = "/var/log/jail/$name.console";
mount.fstab     = "/etc/fstab.$name";


Pri trose stesti se dneska da do jailu zavrit i OpenVPN, coz kdysi davno 
neslo, kdyz jail mohl mit jen jednu IP adresu.

Mirek


More information about the Users-l mailing list