NginX Proxy-n Supermicro IPMI

Fórumok

Sziasztok!

Nginx-el probalok belso halozatrol kifele publikalni IPMI elerhetoseget.
A dolog mukodik az eleresig. Be tudok jelentkezni, de amikor a Java-s JNLP-t letoltom es csatlakozik, akkor hibauzenetet kapok.

Van valami otlet, hogy mi hianyozhat meg?

Az NginX config:

server {
    listen 80;
    server_name IPMI.NEM-PUBLIKUS.DOMAIN

    location / {
        add_header X-Frame-Options SAMEORIGIN;
	proxy_set_header Accept-Encoding "";
        proxy_store off;
    	proxy_read_timeout 300s;
	proxy_pass http://192.168.0.222;
	proxy_set_header Host $host;
        proxy_buffering off;
	proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
	proxy_set_header Accept-Encoding "gzip";
	sub_filter_once off;
	sub_filter_types  application/x-java-jnlp-file;
    }
}

A jnlp:

<jnlp spec="1.0+" codebase="http://IPMI.NEMPUBLIKUS.DOMAIN:80/">
  <information>
    <title>ATEN Java iKVM Viewer</title>
    <vendor>ATEN</vendor>
    <description>Java Web Start Application</description>
  </information>

  <security>
   <all-permissions/>
  </security>

  <resources>
    <property name="jnlp.packEnabled" value="true"/>
    <j2se version="1.6.0+" initial-heap-size="128M" max-heap-size="128M" java-vm-args="-XX:PermSize=32M -XX:MaxPermSize=32M"/>
    <jar href="iKVM__V1.69.39.0x0.jar" download="eager" main="true"/>
  </resources>

  <resources os="Windows" arch="x86">
    <nativelib href="libwin_x86__V1.0.12.jar" download="eager"/>
  </resources>
  <resources os="Windows" arch="x86_64">
    <nativelib href="libwin_x86_64__V1.0.12.jar" download="eager"/>
  </resources>
  <resources os="Windows" arch="amd64">
    <nativelib href="libwin_x86_64__V1.0.12.jar" download="eager"/>
  </resources>

  <resources os="Linux" arch="i386">
    <nativelib href="liblinux_x86__V1.0.12.jar" download="eager"/>
  </resources>
  <resources os="Linux" arch="x86">
    <nativelib href="liblinux_x86__V1.0.12.jar" download="eager"/>
  </resources>
  <resources os="Linux" arch="x86_64">
    <nativelib href="liblinux_x86_64__V1.0.12.jar" download="eager"/>
  </resources>
  <resources os="Linux" arch="amd64">
    <nativelib href="liblinux_x86_64__V1.0.12.jar" download="eager"/>
  </resources>

  <resources os="Mac OS X" arch="x86_64">
    <nativelib href="libmac_x86_64__V1.0.12.jar" download="eager"/>
  </resources>

  <application-desc main-class="tw.com.aten.ikvm.KVMMain">
    <argument>http://IPMI.NEMPUBLIKUS.DOMAIN:80/</argument>
    <argument>iKVM__V1.69.39.0x0.jar</argument>
    <argument>libwin_x86__V1.0.12.jar</argument>
    <argument>libwin_x86_64__V1.0.12.jar</argument>
    <argument>libwin_x86_64__V1.0.12.jar</argument>
    <argument>liblinux_x86__V1.0.12.jar</argument>
    <argument>liblinux_x86__V1.0.12.jar</argument>
    <argument>liblinux_x86_64__V1.0.12.jar</argument>
    <argument>liblinux_x86_64__V1.0.12.jar</argument>
    <argument>libmac_x86_64__V1.0.12.jar</argument>

    <argument>IPMI.NEMPUBLIKUS.DOMAIN</argument>
    <argument>EnS524b+3Xt02lv</argument>
    <argument>SO4nPXA==</argument>
    <argument>SERVER-001</argument>
    <argument>63630</argument>
    <argument>63631</argument>
    <argument>0</argument>
    <argument>0</argument>
    <argument>1</argument>
    <argument>5900</argument>
    <argument>623</argument>
    <argument>1</argument>
  </application-desc>
</jnlp>

Hozzászólások

   <argument>5900</argument>
   <argument>623</argument>

Ránézésre ez egy VNC és egy IPMI port a konfigurációba amit ugyanúgy proxyzni kellene, ráadásul ha jól sejtem a VNC tcp, míg az IPMI udp alapú.

Probaltam ezt meg hozza tenni, de nem sikerult igy se.

Lehet h nginx nem tudja proxyzni a forgalmat, mert lehet valami krix-krax binaris vacak megy rajta es nem szoveges forgalom?

 

server {
    listen 5900;
    server_name IPMI.NEM-PUBLIKUS.DOMAIN;

    location / {
        add_header X-Frame-Options SAMEORIGIN;
        proxy_set_header Accept-Encoding "";
        proxy_store off;
        proxy_read_timeout 300s;
        proxy_pass http://192.168.0.222:5900;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Accept-Encoding "gzip";
        sub_filter_once off;
        sub_filter_types  application/x-java-jnlp-file;
    }
}

Az 5900-en biztos, hogy nem HTTP es nem WebSocket forgalom van. Tehat ide valamilyen portforward kellene, illetve, ha az a celod, hogy tobb gep elereset pakold be egy proxy moge, akkor port forward helyett valamilyen okosabb proxy megoldast kell implementalni, amely ki tudja valahogyan talalni a portra csatlakozo kliensbol, hogy melyik belso gep ipmi portjara kellene forwardolni a dolgokat.

Én is szívtam vele, inkább IPMI 443 és 5900 portforward belső IP-re és source IP-re szűrve lett a megoldás.

Es 20 gepnel ?

mindegyik masik porton?

vagy a forras alapjan szurted, hogy a publikus 443-at hova dobja belul?

De nem kell teljes IPMI eleres. Eleg csak a Java Konzol ha publikalva van.

IKVM/HTML5 tokkeletesen mukodik Nginx-el, csak az a baj, hogy iso-t nem lehet mount oldni rajta, ezert kell a Java :(

20 géphez még nem kellett, de akkor úgy csinálnám, hogy public 11443 és 11590 megy LAN .1-es gép 443 és 5900-ra.
.2-es gépnél pedig public 12443, 12590...stb.

Ha nem ügyfeleknek kell kiadni, akkor a legszebb megoldás, ha VPN hálót csinálsz nekik.

Illetve, ha szűk az ügyfélkör, ezt a VPN hálót nekik is ki lehet adni.

 

"vagy a forras alapjan szurted, hogy a publikus 443-at hova dobja belul?"

ilyen szűrést nem csináltam, de ha fix a forrás IP, ez sem rossz ötlet.

Mellesleg van valami megoldas, amivel a Javas JNLP-t lehet inditani anelkul, hogy be kelljen lepni az webes feluletre? Nem kell nekik IPMI web eleres. Eleg csak a java.

Gondolom a JNLP-be bele lehet heggeszteni a felhasznalo nevet es a jelszavat is, amikor kapcsolodik.