Jekyll2019-01-24T14:45:57+01:00http://it-flow.pl/feed.xmlit-flow.plIn a few wordsKarol Chrapekkaarol@it-flow.pl[En] Jmeter Load test inside kuberentes2018-09-15T09:53:00+02:002018-09-15T09:53:00+02:00http://it-flow.pl/Jmeter-load-test-inside-kuberentes<p>I’m not a QA guy but sometimes I need to do a few load tests / checks for different
projects. I know that Jmeter is not a perfect tool but it can do the job.</p>
<p>Because I do not find any interesting project that easily ship Apache Jmeter inside Kubernetes.
Yes, there are a few concepts but each required to run 5-10 scripts to run test.
I decided to create home project that ship jmeter via helm chart in to kubernetes.
All required code was published on github <a href="https://github.com/kaarolch/kubernetes-jmeter">kuberentes-jmeter</a>.</p>
<p>Currently there are multiple scenarios of using jmeter with kubernetes:</p>
<ul>
<li>Master and slaves are located on vms or bare metal machines. There are connected
to your kubernetes cluster. Unfortunately this case would be difficult when you would
like to test some internal components not exposed outside cluster (possible but
additional configuration of ingress or port forwarding required).</li>
<li>Master on your local station / vm. Slaves run inside kubernetes. This would
allow you to easily use Jmeter master UI but still this is not enough for long
testing or testing automation.</li>
<li>Master and slaves ship to kubernetes and run on demand (kubernetes-jmeter)
is deployed this way.</li>
</ul>
<h2 id="requirements">Requirements</h2>
<ul>
<li>Kubernetes cluster > 1.10 or minikube instance</li>
<li>Helm initialized on client and k8s cluster</li>
<li>jmeter test cases’ files</li>
</ul>
<p><strong>Optionally:</strong></p>
<ul>
<li>Grafana and InfluxDB instances, there is possibility to use own metric aggregation
stack.</li>
</ul>
<p>When everything is deployed from the
<a href="https://github.com/kaarolch/kubernetes-jmeter/tree/master/charts/jmeter">kubernetes-jmeter</a>
chart by default Grafana and InfluxDB pods are also deployed in the same namespace as jmeter.</p>
<p><img src="https://github.com/kaarolch/kubernetes-jmeter/raw/master/images/kubernetes-jmeter_architecture.png" alt="kubernetes-jmeter architecture" class="img-responsive" /></p>
<h2 id="installation">Installation</h2>
<p>Below there is a example run inside minikube. That deploy the whole stack with
Grafana and InfluxDB instance inside <code class="highlighter-rouge">default</code> namespace.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone git@github.com:kaarolch/kubernetes-jmeter.git
cd kubernetes-jmeter/charts/jmeter
helm dep update
helm install -n test ./
</code></pre></div></div>
<p>There is possibility to provide custom value yaml with <code class="highlighter-rouge">-f</code> flag.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>helm install install -n test ./ -f my_values.yaml
</code></pre></div></div>
<p>More about charts’ values could be found here:</p>
<ul>
<li><a href="https://github.com/kaarolch/kubernetes-jmeter/blob/master/README.md#configuration">kubernetes-jmeter</a></li>
<li><a href="https://github.com/helm/charts/blob/master/stable/grafana/README.md#configuration">Grafana</a></li>
<li><a href="https://github.com/helm/charts/blob/master/stable/influxdb/values.yaml">InfluDB</a></li>
</ul>
<p>The command deploys Jmeter on the Kubernetes cluster in the <a href="https://github.com/kaarolch/kubernetes-jmeter/blob/master/charts/jmeter/values.yaml">default</a> value yaml.</p>
<blockquote>
<p><strong>Tip</strong>: List all releases using <code class="highlighter-rouge">helm list</code></p>
</blockquote>
<p>If you change deployment name (<code class="highlighter-rouge">-n test</code>) please update Grafana datasource influx
<code class="highlighter-rouge">url</code> inside your custom values.yaml files.</p>
<p>Kuberentes-jmeter could be deployed without Grafana and InfluxDB. Useful when the
metric collection stack is already deployed.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>helm install install -n test ./ --set grafana.enabled=false,influxdb.enabled=false
</code></pre></div></div>
<h3 id="results">Results</h3>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>✘ karol@albert > helm status test
LAST DEPLOYED: Sat Sep 15 11:29:38 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/Secret
NAME TYPE DATA AGE
test-grafana Opaque 3 1m
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-grafana ClusterIP 10.98.160.66 <none> 80/TCP 1m
test-influxdb ClusterIP 10.96.254.63 <none> 8086/TCP,2003/TCP 1m
test-jmeter-slave ClusterIP None <none> 1099/TCP,60001/TCP 1m
==> v1beta2/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
test-grafana 1 1 1 0 1m
==> v1beta1/PodSecurityPolicy
NAME DATA CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES
test-grafana false RunAsAny RunAsAny RunAsAny RunAsAny false configMap,emptyDir,projected,secret,downwardAPI,persistentVolumeClaim
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
test-grafana-8698cfff94-gc576 0/1 Running 0 1m
test-influxdb-6dbb46d956-2c754 0/1 ContainerCreating 0 1m
test-jmeter-master-84b7c6d545-8t5rz 0/1 ContainerCreating 0 1m
test-jmeter-slave-b6675b7b7-2llh4 0/1 ContainerCreating 0 1m
test-jmeter-slave-b6675b7b7-9d89p 0/1 ContainerCreating 0 1m
==> v1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
test-jmeter-master 1 1 1 0 1m
test-jmeter-slave 2 2 2 0 1m
==> v1/ConfigMap
NAME DATA AGE
test-grafana 2 1m
test-influxdb 1 1m
==> v1/ServiceAccount
NAME SECRETS AGE
test-grafana 1 1m
==> v1/ClusterRole
NAME AGE
test-grafana-clusterrole 1m
==> v1/ClusterRoleBinding
NAME AGE
test-grafana-clusterrolebinding 1m
==> v1beta1/Role
NAME AGE
test-grafana 1m
==> v1beta1/RoleBinding
NAME AGE
test-grafana 1m
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
test-influxdb 1 1 1 0 1m
NOTES:
KUBERNETES JMETER
Services deployed to default namespace.
Jmester master deployment scheduled test-jmeter-master but tests need to run manually.
InfluxDB
Api url:http://test-influxdb.default.svc.cluster.local:8086
Graphite for jmeter config:
-Host: test-influxdb.default.svc.cluster.local
-Port: 2003
-RootMetrixPrefix [influx database]: jmeter
Grafana
Grafan is available inside Kuberentes cluster via: http://test-grafana.default.svc.cluster.local:3000
User: admin
Password: `kubectl -n default get secrets test-grafana -o 'go-template={ {index .data "admin-password"} }' | base64 -d`
</code></pre></div></div>
<h2 id="run-sample-test">Run sample test</h2>
<h3 id="manual-run">Manual run</h3>
<p>Copy <a href="https://github.com/kaarolch/kubernetes-jmeter/blob/master/examples/simple_test.jmx">example</a> test to jmeter master pod</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kubectl cp examples/simple_test.jmx $(kubectl get pod -l "app=jmeter-master" -o jsonpath='{.items[0].metadata.name}'):/test/
</code></pre></div></div>
<p>Run tests</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kubectl exec -it $(kubectl get pod -l "app=jmeter-master" -o jsonpath='{.items[0].metadata.name}') -- sh -c 'ONE_SHOT=true; /run-test.sh'
</code></pre></div></div>
<p>By default jmeter run in manual mode, all test need to be trigger by operator
or additional service like jenkins job.
If tests are loaded from config map, the jmeter master could run them automatically.
In this case chart attribute <code class="highlighter-rouge">oneShotTest</code> need to be set to <code class="highlighter-rouge">true</code>.</p>
<p><strong>Remember that each restart of jmeter-master would restart test when oneShotTest==true</strong></p>
<h3 id="results-1">Results</h3>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>karol@albert > kubectl exec -it $(kubectl get pod -l "app=jmeter-master" -o jsonpath='{.items[0].metadata.name}') -- sh -c 'ONE_SHOT=true; /run-test.sh'
Sep 15, 2018 9:47:16 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Creating summariser <summary>
Created the tree successfully using /test/simple_test.jmx
Configuring remote engine: 172.17.0.15
Configuring remote engine: 172.17.0.18
Starting remote engines
Starting the test @ Sat Sep 15 09:47:17 GMT 2018 (1537004837319)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 403 in 00:00:12 = 32.8/s Avg: 284 Min: 156 Max: 1643 Err: 0 (0.00%) Active: 16 Started: 16 Finished: 0
summary + 1197 in 00:00:18 = 65.8/s Avg: 248 Min: 150 Max: 1307 Err: 0 (0.00%) Active: 0 Started: 16 Finished: 16
summary = 1600 in 00:00:30 = 52.5/s Avg: 257 Min: 150 Max: 1643 Err: 0 (0.00%)
Tidying up remote @ Sat Sep 15 09:47:50 GMT 2018 (1537004870310)
... end of run
</code></pre></div></div>
<h2 id="summary">Summary</h2>
<p>This project is done during my spare time so each new feature, bugs fixing is done
when I have a one or two hours of spare time. If you see that something could be
fixed or changed create an issue or pull request.</p>
<p>I’m still working on a few new features, they could be found in <a href="https://github.com/kaarolch/kubernetes-jmeter#to-do">github</a></p>Karol Chrapekkaarol@it-flow.plI’m not a QA guy but sometimes I need to do a few load tests / checks for different projects. I know that Jmeter is not a perfect tool but it can do the job.[En] Minikube && Fedora 27 - failed to start after reboot2018-08-26T21:43:00+02:002018-08-26T21:43:00+02:00http://it-flow.pl/Minikube-failed-to-start-after-reboot-fedora<p>Install minikube was finished, everything was working fine. Next day command <code class="highlighter-rouge">minikube start --vm-driver kvm2</code> return error:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Starting local Kubernetes v1.10.0 cluster...
Starting VM...
E0826 21:48:31.660132 8562 start.go:174] Error starting host: Error starting stopped host: Error creating Message='Requested operation is not valid: network 'minikube-net' is not active').
Retrying.
E0826 21:48:31.660261 8562 start.go:180] Error starting host: Error starting stopped host: Error creating VM: virError(Code=55, Domain=19, Message='Requested operation is not valid: network 'minikube-net' is not active')
</code></pre></div></div>
<p>Problem: Libvirt was not activated after restart. Simple workaround :</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo virsh net-start minikube-net && sudo virsh net-autostart minikube-net
</code></pre></div></div>Karol Chrapekkaarol@it-flow.plInstall minikube was finished, everything was working fine. Next day command minikube start --vm-driver kvm2 return error: ```` Starting local Kubernetes v1.10.0 cluster… Starting VM… E0826 21:48:31.660132 8562 start.go:174] Error starting host: Error starting stopped host: Error creating Message=’Requested operation is not valid: network ‘minikube-net’ is not active’).[En] Mounting directory inside container and SELinux2017-06-05T22:06:00+02:002017-06-05T22:06:00+02:00http://it-flow.pl/en-mounting-directory-inside-container<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://www.docker.com/sites/default/files/whale_0.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="472" data-original-width="520" height="160" src="https://www.docker.com/sites/default/files/whale_0.png" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Picture from <a href="http://www.docker.com/">www.docker.com</a></td></tr></tbody></table>Using CoreOS for daily basic sometimes lull you in a false sense of security. Everything or almost everything is working and you don't care what is behind the magic. Switching the system from time to time could be painful. Especially when you come back to CentOS or RHEL and you don't want to disable SELinux. Below one of problems that you can hit when you mount folder inside container.<br /><br />Problem was quite trivial:<br />I would like to run the docker that will map the journal folder (/run/systemd/journal) as a docker volume for my image. Unfortunately after ran:<br /><pre style="background-color: #f6f8fa; border-radius: 3px; box-sizing: border-box; color: #24292e; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 13.6px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 13.6px; line-height: inherit; margin: 0px; overflow: visible; padding: 0px; word-break: normal; word-wrap: normal;">docker run \<br /> -v /run/systemd/journal:/run/systemd/journal:ro \<br /> --name journal-test</code></pre>I've got a <i>Permission denied</i> in the journalctl. Fortunately in man for docker-run everything is very clearly described:<br /><script src="https://gist.github.com/kaarolch/474c1fd9eb5cf6a0b68ed61f47f32a60.js"></script>So the solution was to run docker with the :z option provided:<br /><pre style="background-color: #f6f8fa; border-radius: 3px; box-sizing: border-box; color: #24292e; font-size: 13.6px; font-stretch: normal; line-height: 1.45; margin-bottom: 16px; overflow: auto; padding: 16px; word-wrap: normal;"><code style="background: transparent; border-radius: 3px; border: 0px; box-sizing: border-box; display: inline; font-size: 13.6px; line-height: inherit; margin: 0px; overflow: visible; padding: 0px; word-break: normal; word-wrap: normal;">docker run \<br /> -v /run/systemd/journal:/run/systemd/journal:ro,z \<br /> --name journal-test</code></pre>Please remember that the ro and z should be separated by comma.<br />After some more investigation I found the post created by SELinux guru <a href="http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/">Using Volumes with Docker can Cause Problems with SELinux</a>. There is quite nice explanation of labels used by the docker and how the suffix <b>:z</b> and <b>:Z</b> works.kaarolPicture from www.docker.comUsing CoreOS for daily basic sometimes lull you in a false sense of security. Everything or almost everything is working and you don't care what is behind the magic. Switching the system from time to time could be painful. Especially when you come back to CentOS or RHEL and you don't want to disable SELinux. Below one of problems that you can hit when you mount folder inside container.Problem was quite trivial:I would like to run the docker that will map the journal folder (/run/systemd/journal) as a docker volume for my image. Unfortunately after ran:docker run \ -v /run/systemd/journal:/run/systemd/journal:ro \ --name journal-testI've got a Permission denied in the journalctl. Fortunately in man for docker-run everything is very clearly described:So the solution was to run docker with the :z option provided:docker run \ -v /run/systemd/journal:/run/systemd/journal:ro,z \ --name journal-testPlease remember that the ro and z should be separated by comma.After some more investigation I found the post created by SELinux guru Using Volumes with Docker can Cause Problems with SELinux. There is quite nice explanation of labels used by the docker and how the suffix :z and :Z works.[PL] Polarr instalacja na Fedorze2016-11-13T15:03:00+01:002016-11-13T15:03:00+01:00http://it-flow.pl/pl-polarr-instalacja-na-fedorze<div style="text-align: justify;"><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; text-align: left;"><tbody><tr><td class="tr-caption" style="text-align: center;">Polarr</td></tr></tbody></table>Ostatnimi czasy szukałem jakiegoś przyjemnego narzędzia do prostej obróbki zdjęć, który będę mógł uruchomić na kilku różnych systemach. Po kilku zapytaniach google wyrzuciło link do programu <a href="https://www.polarr.co/?homepage=true">Polarr</a>. Aplikacji jest dość intuicyjna i stosunkowo przyjemna wizualnie. </div><div style="text-align: justify;"><a name='more'></a><br /></div><div style="text-align: justify;">Wersja darmowa wystarcza do prostego i szybkiego kadrowania zdjęć lub zmian podstawowych efektów jak nasycenie kolorów, kontrast, itd. Jeśli ktoś chce wesprzeć twórców to za 9,90$ można zakupić licencje na trzy systemy. W wersji płatnej dodatkowo dostajemy kilka dodatkowych rzeczy: zestaw dodatkowych filtrów, zbiorczy eksport zdjęć i możliwość tworzenia własnych filtrów. </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Aplikacja jest dostępna dla kilku rodzin systemów. Niestety dla Linuksa twórcy dostarczają tylko paczkę deb. Jednak można ją stosunkowo prosto uruchomić na Fedorze. W tym celu należy wykonać poniższe kroki: </div><div style="text-align: justify;"></div><ul><li>Zainstalować aplikację do rozpakowywania paczek deb. W moim przypadku z pomocą przyszedł <i>alien,</i> którego czasem używam do prostej konwersji paczek deb do rpm i vice versa. </li><ul><li><b style="text-align: center;">sudo dnf install alien</b></li></ul><li>Pobrać ostatnia wersje programu: </li><ul><li><b style="text-align: center;">wget https://s3-us-west-2.amazonaws.com/polarrelectron/ubuntu/polarr_1.0.0-1_amd64.de</b><span style="text-align: center;">b</span></li></ul><li><div style="text-align: justify;">Następnie rozpakowujemy paczkę</div></li><ul><li><div style="text-align: justify;"><b style="text-align: center;">alien -g polarr_1.0.0-1_amd64.deb</b></div></li></ul><li>Kopiujemy zawartość katalogu <span style="text-align: center;">./</span><span style="text-align: center;">polarr-1.0.0.orig/usr/share do /usr/share:</span></li><ul><li style="text-align: left;"><b><span style="text-align: center;">cp -r ./</span><span style="text-align: center;">polarr-1.0.0.orig/usr/share /usr/</span></b></li></ul><li>Tworzymy link symboliczny w /usr/bin/:</li><ul><li><b>ln -s /usr/share/polarr/Polarr /usr/bin/polarr</b></li></ul><li>Teraz za pomocą komendy <b>polarr</b> możemy uruchomić edytor. </li></ul><div style="text-align: justify;">Uwaga konwersja DEB na RPM za pomocą alien działa dobrze, jednak potem możecie napiotkać na problem braku zależności <i>libffmpeg.so.</i> Niestety doinstalowania odpowiednich paczek, które zawierały <i>libffmpeg.so</i> wyglądało różnie na kolejnych wersjach Fedory, dlatego wolałem ręczne skopiowanie binarek, tak by nie być uzależnionym od zmian w dodatkowych paczkach. Przy okazji bibliotek libffmpeg.so jest dołączona przez twórców w paczce. </div><br /><div style="text-align: justify;"><br /></div>Poniżej prosty skrypt, który pozwala na instalacje ostatniej wersji polarr'a. <script src="https://gist.github.com/kaarolch/de12c094b1ebb9583853d01b92937ce5.js"></script>kaarolPolarrOstatnimi czasy szukałem jakiegoś przyjemnego narzędzia do prostej obróbki zdjęć, który będę mógł uruchomić na kilku różnych systemach. Po kilku zapytaniach google wyrzuciło link do programu Polarr. Aplikacji jest dość intuicyjna i stosunkowo przyjemna wizualnie. Wersja darmowa wystarcza do prostego i szybkiego kadrowania zdjęć lub zmian podstawowych efektów jak nasycenie kolorów, kontrast, itd. Jeśli ktoś chce wesprzeć twórców to za 9,90$ można zakupić licencje na trzy systemy. W wersji płatnej dodatkowo dostajemy kilka dodatkowych rzeczy: zestaw dodatkowych filtrów, zbiorczy eksport zdjęć i możliwość tworzenia własnych filtrów. Aplikacja jest dostępna dla kilku rodzin systemów. Niestety dla Linuksa twórcy dostarczają tylko paczkę deb. Jednak można ją stosunkowo prosto uruchomić na Fedorze. W tym celu należy wykonać poniższe kroki: Zainstalować aplikację do rozpakowywania paczek deb. W moim przypadku z pomocą przyszedł alien, którego czasem używam do prostej konwersji paczek deb do rpm i vice versa. sudo dnf install alienPobrać ostatnia wersje programu: wget https://s3-us-west-2.amazonaws.com/polarrelectron/ubuntu/polarr_1.0.0-1_amd64.debNastępnie rozpakowujemy paczkęalien -g polarr_1.0.0-1_amd64.debKopiujemy zawartość katalogu ./polarr-1.0.0.orig/usr/share do /usr/share:cp -r ./polarr-1.0.0.orig/usr/share /usr/Tworzymy link symboliczny w /usr/bin/:ln -s /usr/share/polarr/Polarr /usr/bin/polarrTeraz za pomocą komendy polarr możemy uruchomić edytor. Uwaga konwersja DEB na RPM za pomocą alien działa dobrze, jednak potem możecie napiotkać na problem braku zależności libffmpeg.so. Niestety doinstalowania odpowiednich paczek, które zawierały libffmpeg.so wyglądało różnie na kolejnych wersjach Fedory, dlatego wolałem ręczne skopiowanie binarek, tak by nie być uzależnionym od zmian w dodatkowych paczkach. Przy okazji bibliotek libffmpeg.so jest dołączona przez twórców w paczce. Poniżej prosty skrypt, który pozwala na instalacje ostatniej wersji polarr'a.[EN] Simple LDAP dump script2016-01-16T14:11:00+01:002016-01-16T14:11:00+01:00http://it-flow.pl/simple-ldap-dump-example<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="https://upload.wikimedia.org/wikipedia/en/c/c7/OpenLDAP-logo.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="78" src="https://upload.wikimedia.org/wikipedia/en/c/c7/OpenLDAP-logo.png" width="200" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">source: wikimedia.org</td></tr></tbody></table>A few days ago my friend ask me if I can send him some simple ldap dump script. I have one old script that I made a year ago that I use to backup my home media center LDAP instance. Bash + a few standard Linux and OpenLdap tools.<br /><a name='more'></a><br /><br /><br /><br /><script src="https://gist.github.com/kaarolch/25ef6536d774ca562f25.js"></script> Comments:<br /><br /><ul><li>Main idea: create simple script that will store recent backups for a few days. </li><li>All old backups should be remove after $RETENTION time ( in days).</li><li>Slapcat could be done in online mode but you can have a problem with dump consistency.</li><li>Probably in your lab you don't need to kill all the processes that have something in common with slapd (kill section lines from 15-21).</li></ul>kaarolsource: wikimedia.orgA few days ago my friend ask me if I can send him some simple ldap dump script. I have one old script that I made a year ago that I use to backup my home media center LDAP instance. Bash + a few standard Linux and OpenLdap tools. Comments:Main idea: create simple script that will store recent backups for a few days. All old backups should be remove after $RETENTION time ( in days).Slapcat could be done in online mode but you can have a problem with dump consistency.Probably in your lab you don't need to kill all the processes that have something in common with slapd (kill section lines from 15-21).[EN] FreeIPA 4.1 to 4.2 update problem2016-01-12T21:14:00+01:002016-01-12T21:14:00+01:00http://it-flow.pl/freeipa-41-to-42-update-problem<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="http://fedoramagazine.org/wp-content/uploads/2014/12/freeipa-150x150.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://fedoramagazine.org/wp-content/uploads/2014/12/freeipa-150x150.png" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">pic. from fedoramagazine.org </td></tr></tbody></table><div style="text-align: justify;">On two machines with CentOS 7.2 I was using the FreeIPA 4.1.0 that should theoretically update to a newer version 4.2.0 without any problem. The new version brings a few new feature, byt they should not generate any update issues.</div><div><div style="text-align: justify;">Steps in the<a href="http://www.freeipa.org/page/Upgrade"> documentation</a> for version 4.2 are quite easy:</div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: center;"><span style="font-family: Courier New, Courier, monospace;"><b>yum update freeipa-server</b></span></div><div style="text-align: center;"></div><div style="text-align: justify;"> <span style="font-family: inherit;">The </span>package<span style="font-family: inherit;"> manager executed all </span>post-installation<span style="font-family: inherit;"> upgrade scripts (in current version: </span><span style="background-color: white; color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 20px; white-space: pre-wrap;"><b><i>ipa-server-upgrade</i></b></span><span style="background-color: white; color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 20px; white-space: pre-wrap;">). </span><br /><span style="background-color: white; color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 20px; white-space: pre-wrap;"></span><br /><a name='more'></a><span style="background-color: white; color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 20px; white-space: pre-wrap;"><br /></span></div><div style="text-align: justify;"><span style="background-color: white; color: #333333; line-height: 20px; white-space: pre-wrap;"><span style="font-family: inherit;">In the</span></span><span style="background-color: white; color: #333333; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; line-height: 20px; white-space: pre-wrap;"> </span><span style="color: #333333;"><span style="line-height: 20px; white-space: pre-wrap;"><span style="font-family: Monaco, Menlo, Consolas, Courier New, monospace; font-size: 13px;"><b><i>/var/log/ipaupgrade.log</i></b> </span><span style="font-family: inherit;">I did not found any interesting errors. All info looks ok:</span></span></span></div><div style="text-align: justify;"><span style="color: #333333;"><span style="line-height: 20px; white-space: pre-wrap;"><span style="font-family: inherit;"><br /></span></span></span></div><div style="text-align: justify;"><span style="color: #333333;"></span><br /><div style="font-family: 'Courier New', Courier, monospace; font-size: x-small; line-height: 20px; white-space: pre-wrap;"><span style="color: #333333;">2016-01-12T18:47:14Z INFO Upgrading the configuration of the IPA services 2016-01-12T18:47:14Z INFO [Verifying that root certificate is published] 2016-01-12T18:47:28Z INFO [Migrate CRL publish directory] 2016-01-12T18:47:28Z INFO CRL tree already moved 2016-01-12T18:47:28Z INFO [Verifying that CA proxy configuration is correct] 2016-01-12T18:47:36Z INFO [Verifying that KDC configuration is using ipa-kdb backend] 2016-01-12T18:47:37Z INFO [Fix DS schema file syntax] 2016-01-12T18:47:37Z INFO Syntax already fixed 2016-01-12T18:47:37Z INFO [Removing RA cert from DS NSS database] 2016-01-12T18:47:37Z INFO RA cert already removed 2016-01-12T18:47:38Z INFO [Enable sidgen and extdom plugins by default] 2016-01-12T18:47:40Z INFO [Updating mod_nss protocol versions] 2016-01-12T18:47:40Z INFO Protocol versions already updated 2016-01-12T18:47:40Z INFO [Fixing trust flags in /etc/httpd/alias] 2016-01-12T18:47:40Z INFO Trust flags already processed 2016-01-12T18:47:40Z INFO [Removing self-signed CA] 2016-01-12T18:47:40Z INFO [Checking for deprecated KDC configuration files] 2016-01-12T18:47:40Z INFO [Checking for deprecated backups of Samba configuration files] 2016-01-12T18:47:40Z INFO [Setting up Firefox extension] 2016-01-12T18:47:54Z INFO [Add missing CA DNS records] 2016-01-12T18:47:54Z INFO IPA CA DNS records already processed 2016-01-12T18:47:54Z INFO [Removing deprecated DNS configuration options] 2016-01-12T18:47:54Z INFO DNS is not configured 2016-01-12T18:47:54Z INFO [Ensuring minimal number of connections] 2016-01-12T18:47:54Z INFO DNS is not configured 2016-01-12T18:47:54Z INFO [Enabling serial autoincrement in DNS] 2016-01-12T18:47:54Z INFO DNS is not configured 2016-01-12T18:47:54Z INFO [Updating GSSAPI configuration in DNS] 2016-01-12T18:47:54Z INFO DNS is not configured 2016-01-12T18:47:54Z INFO [Updating pid-file configuration in DNS] 2016-01-12T18:47:54Z INFO DNS is not configured</span></div><span style="color: #333333;"></span><br /><div style="font-family: 'Courier New', Courier, monospace; font-size: x-small; line-height: 20px; white-space: pre-wrap;"><span style="color: #333333;"><br /></span></div><span style="color: #333333;"></span><div><span style="color: #333333;"><span style="font-family: inherit;"><span style="line-height: 20px; white-space: pre-wrap;">Unfortunately the IPA server did not start correctly. The service <b><i>named-pkcs11</i></b> </span></span><span style="line-height: 20px; white-space: pre-wrap;">responsible</span><span style="font-family: inherit;"><span style="line-height: 20px; white-space: pre-wrap;"> for DNSSEC could not correctly started and </span></span><span style="line-height: 20px; white-space: pre-wrap;">thrown error</span><span style="font-family: inherit;"><span style="line-height: 20px; white-space: pre-wrap;">:</span></span></span></div><span style="color: #333333;"><div><span style="font-family: inherit;"><span style="line-height: 20px; white-space: pre-wrap;"><br /></span></span></div></span><br /><div style="color: #333333;"><span style="background-color: white; font-size: x-small;"><span style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; text-align: start;">named-pkcs11</span><a class="missing changeset" href="https://www.blogger.com/null" style="color: #999988; font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; text-align: start;" title="Brak zmian 1826 w repozytorium">[1826]</a><span style="font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; text-align: start;">:</span><span style="color: black; font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; text-align: start;">ObjectStore.cpp(59): Failed to enumerate object store in /var/lib/softhsm/tokens/ <br />named-pkcs11</span><a class="missing changeset" href="https://www.blogger.com/null" style="color: #999988; font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; text-align: start;" title="Brak zmian 1826 w repozytorium">[1826]</a><span style="color: black; font-family: Verdana, Arial, 'Bitstream Vera Sans', Helvetica, sans-serif; text-align: start;">: SoftHSM.cpp(437): Could not load the object store</span></span></div><div style="color: #333333;"><span style="font-family: inherit;"><span style="line-height: 20px; white-space: pre-wrap;"><br /></span></span></div><div style="color: #333333;">In RH errata you can find a few info about broken install script, etc. All this hints did not solve my problem so I decided to run <i><b>ipa-dns-install</b></i> to check dns configuration. As you probably know in FreeIPA 4.2.0 the DNSSEC is enabled, so there was a tiny chance that during update the DNS re-configuration was skipped. </div><div style="color: #333333;"><br /></div><div style="color: #333333;">Unfortunately to run <i><b>ipa-dns-install</b> </i>script you need to bring up the LDAP and Kerberos services. Luckily <i>ipactl</i> correctly bring up this service with foce parameter (<b><i>ipactl start -f</i></b>). After that the ipa-dns-install script overwrite the current named.conf, created missing tokens and after that the named-pkcs11 started correctly. </div><div style="color: #333333;"><br /></div><div style="color: #333333;">After a few hours digging in the logs files I realized that I'm using a custom named.conf with additional views and the upgrade script skipped named.conf file update (<span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small; line-height: 20px; white-space: pre-wrap;">INFO DNS is not configured)</span> . At <span style="font-family: inherit;">the end you need to add your custom ACL and Zones sections to named.conf </span></div><div style="color: #333333;"><span style="font-family: inherit;"><br /></span></div><div style="color: #333333;"><span style="font-family: inherit;">So if you have custom bind configuration you need to:</span></div><div><ol><li style="color: #333333;"><span style="color: black; text-align: center;"><span style="font-family: Times, Times New Roman, serif;">Backup current named.conf</span></span></li><li style="color: #333333;"><span style="color: black; text-align: center;"><span style="font-family: Times, Times New Roman, serif;">Update ipa server packages <i>yum update freeipa-server</i></span></span></li><li style="color: #333333;"><span style="color: black; text-align: center;"><span style="font-family: Times, Times New Roman, serif;">Use the force switch in<i> ipactl start -f</i></span></span></li><li style="color: #333333;"><span style="color: black; text-align: center;"><span style="font-family: Times, Times New Roman, serif;">Run <i>ipa-dns-install </i>or manually reconfigure<i> bind-pkcs11 </i></span></span></li><li style="text-align: justify;"><span style="font-family: Times, Times New Roman, serif;">Add your missing zones to <i>named.conf</i></span></li><li style="text-align: justify;"><span style="font-family: Times, Times New Roman, serif;">Start ipa services.</span></li></ol></div><span style="color: #333333;"></span><br /><div><span style="color: #333333;"><br /></span></div><span style="color: #333333;"></span></div></div>kaarolpic. from fedoramagazine.org On two machines with CentOS 7.2 I was using the FreeIPA 4.1.0 that should theoretically update to a newer version 4.2.0 without any problem. The new version brings a few new feature, byt they should not generate any update issues.Steps in the documentation for version 4.2 are quite easy:yum update freeipa-server The package manager executed all post-installation upgrade scripts (in current version: ipa-server-upgrade). In the /var/log/ipaupgrade.log I did not found any interesting errors. All info looks ok:2016-01-12T18:47:14Z INFO Upgrading the configuration of the IPA services 2016-01-12T18:47:14Z INFO [Verifying that root certificate is published] 2016-01-12T18:47:28Z INFO [Migrate CRL publish directory] 2016-01-12T18:47:28Z INFO CRL tree already moved 2016-01-12T18:47:28Z INFO [Verifying that CA proxy configuration is correct] 2016-01-12T18:47:36Z INFO [Verifying that KDC configuration is using ipa-kdb backend] 2016-01-12T18:47:37Z INFO [Fix DS schema file syntax] 2016-01-12T18:47:37Z INFO Syntax already fixed 2016-01-12T18:47:37Z INFO [Removing RA cert from DS NSS database] 2016-01-12T18:47:37Z INFO RA cert already removed 2016-01-12T18:47:38Z INFO [Enable sidgen and extdom plugins by default] 2016-01-12T18:47:40Z INFO [Updating mod_nss protocol versions] 2016-01-12T18:47:40Z INFO Protocol versions already updated 2016-01-12T18:47:40Z INFO [Fixing trust flags in /etc/httpd/alias] 2016-01-12T18:47:40Z INFO Trust flags already processed 2016-01-12T18:47:40Z INFO [Removing self-signed CA] 2016-01-12T18:47:40Z INFO [Checking for deprecated KDC configuration files] 2016-01-12T18:47:40Z INFO [Checking for deprecated backups of Samba configuration files] 2016-01-12T18:47:40Z INFO [Setting up Firefox extension] 2016-01-12T18:47:54Z INFO [Add missing CA DNS records] 2016-01-12T18:47:54Z INFO IPA CA DNS records already processed 2016-01-12T18:47:54Z INFO [Removing deprecated DNS configuration options] 2016-01-12T18:47:54Z INFO DNS is not configured 2016-01-12T18:47:54Z INFO [Ensuring minimal number of connections] 2016-01-12T18:47:54Z INFO DNS is not configured 2016-01-12T18:47:54Z INFO [Enabling serial autoincrement in DNS] 2016-01-12T18:47:54Z INFO DNS is not configured 2016-01-12T18:47:54Z INFO [Updating GSSAPI configuration in DNS] 2016-01-12T18:47:54Z INFO DNS is not configured 2016-01-12T18:47:54Z INFO [Updating pid-file configuration in DNS] 2016-01-12T18:47:54Z INFO DNS is not configuredUnfortunately the IPA server did not start correctly. The service named-pkcs11 responsible for DNSSEC could not correctly started and thrown error:named-pkcs11[1826]:ObjectStore.cpp(59): Failed to enumerate object store in /var/lib/softhsm/tokens/ named-pkcs11[1826]: SoftHSM.cpp(437): Could not load the object storeIn RH errata you can find a few info about broken install script, etc. All this hints did not solve my problem so I decided to run ipa-dns-install to check dns configuration. As you probably know in FreeIPA 4.2.0 the DNSSEC is enabled, so there was a tiny chance that during update the DNS re-configuration was skipped. Unfortunately to run ipa-dns-install script you need to bring up the LDAP and Kerberos services. Luckily ipactl correctly bring up this service with foce parameter (ipactl start -f). After that the ipa-dns-install script overwrite the current named.conf, created missing tokens and after that the named-pkcs11 started correctly. After a few hours digging in the logs files I realized that I'm using a custom named.conf with additional views and the upgrade script skipped named.conf file update (INFO DNS is not configured) . At the end you need to add your custom ACL and Zones sections to named.conf So if you have custom bind configuration you need to:Backup current named.confUpdate ipa server packages yum update freeipa-serverUse the force switch in ipactl start -fRun ipa-dns-install or manually reconfigure bind-pkcs11 Add your missing zones to named.confStart ipa services.[PL] Z cyklu każdy wie a mało kto używa - Wireshark tips #12015-08-10T23:36:00+02:002015-08-10T23:36:00+02:00http://it-flow.pl/z-cyklu-kazdy-wie-mao-kto-uzywa<div style="text-align: justify;">Wireshark to dość potężne narzędzie niestety w wielu przypadkach użytkownicy często zapominają o kilku fajnych dodatkach:</div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>Podążaj za strumieniem a dojdziesz do celu.</b></div><div><div style="text-align: justify;">Wireshark ma możliwość wyłuskania konkretnych pakietów, które zostały przesłane w obrębie jednego połączenia. Tak więc zamiast aplikować N filtrów, można znaleźć jeden konkretny pakiet i z prawego menu wybrać<b> "Follow TCP Stream".</b> Regułą ta wybiera numer strumienia z wskazanego pakietu i aplikuje odpowiedni filtr:<b> "tcp.stream eq NUMER" (1). </b>Dodatkowo w nowym oknie zostanie otwarty zrzut danych przesłanych w danym strumieniu <b>(2)</b>. Za pomocą listy można wybrać, który <b>kierunek komunikacji nas interesuje (3).</b></div><div class="separator" style="clear: both; text-align: justify;"><a href="http://1.bp.blogspot.com/-oHN-s97qYqU/VckNqEWjqlI/AAAAAAAAAGk/AtuOuRAJhjM/s1600/wireshark_stream.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="318" src="http://1.bp.blogspot.com/-oHN-s97qYqU/VckNqEWjqlI/AAAAAAAAAGk/AtuOuRAJhjM/s640/wireshark_stream.png" width="640" /></a></div></div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>Rozwiązywanie PTR w celu łatwiejszej analizy</b></div><div style="text-align: justify;">Zamiast tracić czas na weryfikacje do kogo należy dany adres IP, można zmusić naszego rekina do automatycznego rozwiązywania nazw. Menu <b>(Edit-< Preferences Shift+Ctrl+P),</b> z lewej kolumny wybrać <b>Name Resolution (1)</b> i zaznaczyć <b>Resolve network (IP addresses )(2)</b></div><div class="separator" style="clear: both; text-align: justify;"><a href="http://3.bp.blogspot.com/-3wC9494KKK8/VckPbtKbKvI/AAAAAAAAAGw/Q-56qRtDO5Q/s1600/name.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="212" src="http://3.bp.blogspot.com/-3wC9494KKK8/VckPbtKbKvI/AAAAAAAAAGw/Q-56qRtDO5Q/s640/name.png" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Kreator reguł do kilku rodzajów zapór ogniowych</b></div><div style="text-align: justify;">WireShark za pomocą generatora reguł potrafi nam wygenerować wpisy dla danego typu zapory(2) Jego użycie jest dość proste:) Zaznaczamy wybrany pakiet z menu górnego wybieramy <b>Tool (1) </b>a następnie<b> Firewall ACL Rules. </b>W nowym oknie możemy wybrać <b>rodzaj oprogramowania (2), rodzaj filtru (3) </b>- w tym przypadku adres i numer portu. Na koniec mamy opcję <b>Inbound, Deny (4), </b> które definiują nam typ ruchu i akcję. </div><div style="text-align: justify;"><b><br /></b></div><div class="separator" style="clear: both; text-align: justify;"><a href="http://3.bp.blogspot.com/-kYGMEg9a5KA/VckRCnhX-YI/AAAAAAAAAG8/ssAJXQP3PKw/s1600/acl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="http://3.bp.blogspot.com/-kYGMEg9a5KA/VckRCnhX-YI/AAAAAAAAAG8/ssAJXQP3PKw/s640/acl.png" width="640" /></a></div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>Modyfikacja wyświetlanych kolumn</b></div><div style="text-align: justify;">Zamiast wyświetlać konkretny typ protokołu można skorzystać z numeru portu lub ewentualnie dodać nową kolumnę z numerem portu źródłowego/docelowego. Wszystkie te zmiany można ustawić za pomocą <b>Column Preferences</b>. </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Kolorowanie/ markowanie złapanych pakietów</b></div><div style="text-align: justify;">WireShark daje nam możliwość dowolnego kolorowania otrzymanych pakietów. [<b>menu View-> Coloring rules] </b> Przykłady pakietów, które możemy pokolorować: </div><div><ul><li style="text-align: justify;">Zwrotki http o określonych kodach [<b>http.response.code]</b></li><li style="text-align: justify;">Zapytania o rekord SPF [<b>dns.spf]</b></li><li style="text-align: justify;">Pakiety z konkretnym user_agentem [<b>http.user_agent</b>]</li></ul></div><div style="text-align: justify;">Tak naprawdę całe kolorowani opiera się na dobraniu odpowiedniego filtru co daje nam bardzo dużą dowolność w przypadku wyłapywania specyficznego typu ruchu.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Powyższe pięć wskazówek to tylko niektóre z opcji, które ułatwiają życie. W kolejnych wpisach postaram się dodać nowe porady, które mogą znacząco ułatwić pracę. </div>kaarolWireshark to dość potężne narzędzie niestety w wielu przypadkach użytkownicy często zapominają o kilku fajnych dodatkach:Podążaj za strumieniem a dojdziesz do celu.Wireshark ma możliwość wyłuskania konkretnych pakietów, które zostały przesłane w obrębie jednego połączenia. Tak więc zamiast aplikować N filtrów, można znaleźć jeden konkretny pakiet i z prawego menu wybrać "Follow TCP Stream". Regułą ta wybiera numer strumienia z wskazanego pakietu i aplikuje odpowiedni filtr: "tcp.stream eq NUMER" (1). Dodatkowo w nowym oknie zostanie otwarty zrzut danych przesłanych w danym strumieniu (2). Za pomocą listy można wybrać, który kierunek komunikacji nas interesuje (3).Rozwiązywanie PTR w celu łatwiejszej analizyZamiast tracić czas na weryfikacje do kogo należy dany adres IP, można zmusić naszego rekina do automatycznego rozwiązywania nazw. Menu (Edit-< Preferences Shift+Ctrl+P), z lewej kolumny wybrać Name Resolution (1) i zaznaczyć Resolve network (IP addresses )(2)Kreator reguł do kilku rodzajów zapór ogniowychWireShark za pomocą generatora reguł potrafi nam wygenerować wpisy dla danego typu zapory(2) Jego użycie jest dość proste:) Zaznaczamy wybrany pakiet z menu górnego wybieramy Tool (1) a następnie Firewall ACL Rules. W nowym oknie możemy wybrać rodzaj oprogramowania (2), rodzaj filtru (3) - w tym przypadku adres i numer portu. Na koniec mamy opcję Inbound, Deny (4), które definiują nam typ ruchu i akcję. Modyfikacja wyświetlanych kolumnZamiast wyświetlać konkretny typ protokołu można skorzystać z numeru portu lub ewentualnie dodać nową kolumnę z numerem portu źródłowego/docelowego. Wszystkie te zmiany można ustawić za pomocą Column Preferences. Kolorowanie/ markowanie złapanych pakietówWireShark daje nam możliwość dowolnego kolorowania otrzymanych pakietów. [menu View-> Coloring rules] Przykłady pakietów, które możemy pokolorować: Zwrotki http o określonych kodach [http.response.code]Zapytania o rekord SPF [dns.spf]Pakiety z konkretnym user_agentem [http.user_agent]Tak naprawdę całe kolorowani opiera się na dobraniu odpowiedniego filtru co daje nam bardzo dużą dowolność w przypadku wyłapywania specyficznego typu ruchu.Powyższe pięć wskazówek to tylko niektóre z opcji, które ułatwiają życie. W kolejnych wpisach postaram się dodać nowe porady, które mogą znacząco ułatwić pracę. Cisco 1000v - vempkt czyli zdalny wireshark.2015-08-06T18:13:00+02:002015-08-06T18:13:00+02:00http://it-flow.pl/cisco-1000v-vempkt-czyli-zdalny<div style="text-align: justify;">Kolejne przygody z wirtualnym switchem Nexus 1000v uświadamiają mnie, że Cisco coraz częściej zaczyna dodawać coraz to ciekawsze narzędzia do swoich produktów. Przykładem takiego narzędzia jest vempkt. </div><div style="text-align: justify;"><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="http://networkstatic.net/wp-content/uploads/2013/02/wireshark.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://networkstatic.net/wp-content/uploads/2013/02/wireshark.jpg" height="249" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">zapożyczone z http://networkstatic.net/</td></tr></tbody></table><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Narzędzie to jest dostarczane podczas instalacji moduły VEM na ESXi. Funkcjonalnością vempkt przypomina tcpdump lub według niektórych mechanizm sesji SPAN dostępnych na przełącznikach Cisco. </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><b>Jak zacząć zabawę z vempkt?</b></i> </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Zakładając, że mamy skonfigurowany switch Nexus 1000v musimy jeszcze odblokować możliwość logowania się do ESXi za pomocą protokołu SSH (przykładowy opis: <a href="https://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.vcli.migration.doc_50%2Fcos_upgrade_technote.1.4.html">dokumentacja vmware</a>). </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Po zalogowaniu się na hosta musimy zidentyfikować numer interfejsu, który chcemy podsłuchać (LTL - Local Target Logic) i numeru vlan, który nas interesuje. </div><div style="text-align: justify;">Przydatne komendy: </div><div style="text-align: justify;"></div><ul><li><b>vempkt show info - </b>listuje wszystkie LTL wraz z opisem maszyn, które są zarejestrowane na danym hoście oraz interfejsy nexusa lub portchannel</li><li><b>vemcmd show port vlans -</b> listuje porty wraz z numerami vlanów, które są przypisane</li></ul><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Po skompletowaniu wszystkich niezębnych informacji na temat interfejsu, który nas interesuje możemy przystąpić do łapania ruchu:</div><div style="text-align: justify;"></div><ol><li><b>vempkt capture [ingress | egress | drop| all stages] ltl [id] vlan [nr] - </b> uwaga w niektórych wersjach vem, niezależnie od wybranego typu ruchu vempkt łapie ruch każdego typu (all stages).</li><li><b>vempkt show capture info - </b> wyświetla reguły filtra, który zdefiniowaliśmy w poprzednim kroku.</li><li><b>vempkt start - </b> uruchamiamy pluskwę</li><li><b>vempkt stop</b> - zatrzymujemy pluskwę;)</li><li><b>vempkt show info - </b> komenda przydaje się do wyświetlenia statystyk na temat zebranego ruchu. </li><li><b>vempkt pcap export file_name.pcap - </b>zapisujemy złapany ruch w formacie PCAP do pliku file_name.pcap, który potem możemy zaimportować do Wiresharka. </li><li><b>vempkt clear - </b>czyścimy zdefiniowane ustawienia. </li><li><b>scp root@esxi.ip:/root/file_name.pcap . - </b> zrzucamy pcap na lokalny komputer w celu dalszej analizy. </li></ol><div><i><b>Przypadki użycia? </b></i></div><div><ol><li>Weryfikacja czy ruch przechodzi przez reguły zdefiniowane na VSG </li><li>Złapanie ruchu na interfejsie wejściowym do ESXi</li><li>Analiza ruchu, który zostaje dostarczony do hosta bez potrzeby logowania się na docelową maszynę wirtualną. </li><li>Sprawdzenie czy ruch przechodzi przez sieć szkieletową mając dostęp tylko do serwerów ESXi ( głównie administratorzy VMware w dużych firmach) </li></ol><div><b><i>Drobne uwagi? </i></b></div></div><div><b><i><br /></i></b></div><div><ul><li>Jeśli chcemy przechwycić ruch wychodzący lub wchodzący do maszyny wirtualnej , która działa w klastrze VMware, musimy wiedzieć na którym hoście się ona znajduje. </li><li>Automatyczny DR może nam czasem popsuć łapanie ruchu:)</li><li>Czasem trzeba zwiększyć wielkość łapanego pakietu za pomocą <b> vempkt size [mtu size]</b></li><li>W celu szybkiej analizy pakiety można też zrzucić do pliku txt zamiast pcap: <b>vempkt display detail all > name_file.txt</b></li></ul></div>kaarolKolejne przygody z wirtualnym switchem Nexus 1000v uświadamiają mnie, że Cisco coraz częściej zaczyna dodawać coraz to ciekawsze narzędzia do swoich produktów. Przykładem takiego narzędzia jest vempkt. zapożyczone z http://networkstatic.net/Narzędzie to jest dostarczane podczas instalacji moduły VEM na ESXi. Funkcjonalnością vempkt przypomina tcpdump lub według niektórych mechanizm sesji SPAN dostępnych na przełącznikach Cisco. Jak zacząć zabawę z vempkt? Zakładając, że mamy skonfigurowany switch Nexus 1000v musimy jeszcze odblokować możliwość logowania się do ESXi za pomocą protokołu SSH (przykładowy opis: dokumentacja vmware). Po zalogowaniu się na hosta musimy zidentyfikować numer interfejsu, który chcemy podsłuchać (LTL - Local Target Logic) i numeru vlan, który nas interesuje. Przydatne komendy: vempkt show info - listuje wszystkie LTL wraz z opisem maszyn, które są zarejestrowane na danym hoście oraz interfejsy nexusa lub portchannelvemcmd show port vlans - listuje porty wraz z numerami vlanów, które są przypisanePo skompletowaniu wszystkich niezębnych informacji na temat interfejsu, który nas interesuje możemy przystąpić do łapania ruchu:vempkt capture [ingress | egress | drop| all stages] ltl [id] vlan [nr] - uwaga w niektórych wersjach vem, niezależnie od wybranego typu ruchu vempkt łapie ruch każdego typu (all stages).vempkt show capture info - wyświetla reguły filtra, który zdefiniowaliśmy w poprzednim kroku.vempkt start - uruchamiamy pluskwęvempkt stop - zatrzymujemy pluskwę;)vempkt show info - komenda przydaje się do wyświetlenia statystyk na temat zebranego ruchu. vempkt pcap export file_name.pcap - zapisujemy złapany ruch w formacie PCAP do pliku file_name.pcap, który potem możemy zaimportować do Wiresharka. vempkt clear - czyścimy zdefiniowane ustawienia. scp root@esxi.ip:/root/file_name.pcap . - zrzucamy pcap na lokalny komputer w celu dalszej analizy. Przypadki użycia? Weryfikacja czy ruch przechodzi przez reguły zdefiniowane na VSG Złapanie ruchu na interfejsie wejściowym do ESXiAnaliza ruchu, który zostaje dostarczony do hosta bez potrzeby logowania się na docelową maszynę wirtualną. Sprawdzenie czy ruch przechodzi przez sieć szkieletową mając dostęp tylko do serwerów ESXi ( głównie administratorzy VMware w dużych firmach) Drobne uwagi? Jeśli chcemy przechwycić ruch wychodzący lub wchodzący do maszyny wirtualnej , która działa w klastrze VMware, musimy wiedzieć na którym hoście się ona znajduje. Automatyczny DR może nam czasem popsuć łapanie ruchu:)Czasem trzeba zwiększyć wielkość łapanego pakietu za pomocą vempkt size [mtu size]W celu szybkiej analizy pakiety można też zrzucić do pliku txt zamiast pcap: vempkt display detail all > name_file.txtVCP550D i nowa polityka VMware2015-03-06T00:22:00+01:002015-03-06T00:22:00+01:00http://it-flow.pl/vcp550d-i-nowa-polityka-vmware<div style="text-align: justify;"><a href="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/200px-Vmware.svg.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Vmware.svg/200px-Vmware.svg.png" /></a>Zbyt dużo informacji na skrzynce zawsze kończy się źle:-) Przez ostatni rok subskrybowałem sobie sporo różnych newsletterów, powiadomień, itd. Niestety zbyt duża liczba maili z słowem VMware w tytule kończyła się częstym usuwaniem nagromadzonych informacji. Jak to zwykle bywa na pierwszy rzut poszły wiadomości bardziej istotne typu: cert expiration i takie tam. No i niestety dopiero na końcu zeszłego tygodnia natrafiłem na wiadomość o wygasaniu certyfikatów. Tak w skrócie VMware od 10 marca 2015 wprowadza nową politykę ważności certyfikatu. W skrócie certyfikaty są ważne dwa lata. W tym czasie trzeba zdać inny certyfikat lub odnowić ostatni by wydłużyć okres ważności. Jeśli certyfikaty nam wygasną to niestety aby je ponownie uzyskać trzeba zgłosić się na kurs, a potem zdać egzamin. </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Zmiana polityki jest tłumaczona faktem, że jeśli ktoś nie używa technologi przez dwa lata to automatycznie traci on wiedzę na temat produktu. Podejście może i słuszne, jednak tez miany mogły być wprowadzone troszkę później. Vmware vSphere 6.0 jest już w wersji RTM, niestety nie ma do tej wersji egzaminów. Czyli jeśli ktoś ma ważny certyfikat z 5.1 lub 5.5 to musi je odnowić by móc dalej się nimi chwalić. </div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">W moim przypadku wystarczyło tylko podejść do VCP 550D, egzamin aktualizujący z 5.1 do 5.5. Wydawało mi się, że zmian między tymi wersjami było mało, jednak jak się człowiek wczyta w blueprinta to jest tam trochę nowości o których zapomniałem. Egzamin jest stosunkowo krótki i można go zdać z domu, tak więc jeśli nie chcesz stracić certyfikatu to warto do niego podejść. Za jedyne 95$ dostaniemy 1,5h quiz, który można zdać z domu lub pracy. </div>kaarolZbyt dużo informacji na skrzynce zawsze kończy się źle:-) Przez ostatni rok subskrybowałem sobie sporo różnych newsletterów, powiadomień, itd. Niestety zbyt duża liczba maili z słowem VMware w tytule kończyła się częstym usuwaniem nagromadzonych informacji. Jak to zwykle bywa na pierwszy rzut poszły wiadomości bardziej istotne typu: cert expiration i takie tam. No i niestety dopiero na końcu zeszłego tygodnia natrafiłem na wiadomość o wygasaniu certyfikatów. Tak w skrócie VMware od 10 marca 2015 wprowadza nową politykę ważności certyfikatu. W skrócie certyfikaty są ważne dwa lata. W tym czasie trzeba zdać inny certyfikat lub odnowić ostatni by wydłużyć okres ważności. Jeśli certyfikaty nam wygasną to niestety aby je ponownie uzyskać trzeba zgłosić się na kurs, a potem zdać egzamin. Zmiana polityki jest tłumaczona faktem, że jeśli ktoś nie używa technologi przez dwa lata to automatycznie traci on wiedzę na temat produktu. Podejście może i słuszne, jednak tez miany mogły być wprowadzone troszkę później. Vmware vSphere 6.0 jest już w wersji RTM, niestety nie ma do tej wersji egzaminów. Czyli jeśli ktoś ma ważny certyfikat z 5.1 lub 5.5 to musi je odnowić by móc dalej się nimi chwalić. W moim przypadku wystarczyło tylko podejść do VCP 550D, egzamin aktualizujący z 5.1 do 5.5. Wydawało mi się, że zmian między tymi wersjami było mało, jednak jak się człowiek wczyta w blueprinta to jest tam trochę nowości o których zapomniałem. Egzamin jest stosunkowo krótki i można go zdać z domu, tak więc jeśli nie chcesz stracić certyfikatu to warto do niego podejść. Za jedyne 95$ dostaniemy 1,5h quiz, który można zdać z domu lub pracy. Quo Vadis2014-11-24T00:33:00+01:002014-11-24T00:33:00+01:00http://it-flow.pl/quo-vadis<div style="text-align: justify;">Mija kolejny miesiąc w nowej pracy a ja dalej się zastanawiam dokąd tak naprawdę zmierzam. Po siedmiu latach ciężkich bojów z usługami Microsoftu i integracji ich z Linuksowymi serwisami, produktami firmy Cisco na chwile zrobiłem sobie przerwę od dużego M. W skrócie postanowiłem zerknąć czy pingwin nadal wygląda jak pingwin. Ponoć czasem w życiu należy dokonać zwrotu o 180 stopni i zobaczyć co słychać w innych technologiach. No może zwrot nie był o pełne 180 stopni bo przynajmniej raz dziennie widzę magiczny pasek postępu VMware a na drugim ekranie most firmy Cisco.</div><br /><div style="text-align: justify;">Przyznam się, że czasem w przypadku nowych produktów znowu zapala się lampka "A może by tak podziałać po pracy, tak niby dla siebie i przy okazji znowu uratować świat." Na szczęście mój mózg dobrze się broni i wewnętrzny mówca podpowiada "Nie, nie i jeszcze raz nie. Naucz się czegoś innego, napraw centrum multimedialne, idź się wspinać, pamiętaj co ostatnio oglądałeś." No i jak bym się z nim nie spierał muszę mu przyznać rację. Nic tak nie pomaga w rozwiązywaniu problemów w pracy jak przestanie myśleć o pracy po pracy;) Ja wiem, że to trudne ale następnego dnia naprawdę czasem problemy rozwiązują się przy porannej herbacie.</div><br />PS. Filmik, o którym przypomina mi wewnętrzny mówca.<br /><br /><iframe allowfullscreen="allowfullscreen" frameborder="0" height="360" scrolling="no" src="https://embed-ssl.ted.com/talks/nigel_marsh_how_to_make_work_life_balance_work.html" width="640"></iframe>kaarolMija kolejny miesiąc w nowej pracy a ja dalej się zastanawiam dokąd tak naprawdę zmierzam. Po siedmiu latach ciężkich bojów z usługami Microsoftu i integracji ich z Linuksowymi serwisami, produktami firmy Cisco na chwile zrobiłem sobie przerwę od dużego M. W skrócie postanowiłem zerknąć czy pingwin nadal wygląda jak pingwin. Ponoć czasem w życiu należy dokonać zwrotu o 180 stopni i zobaczyć co słychać w innych technologiach. No może zwrot nie był o pełne 180 stopni bo przynajmniej raz dziennie widzę magiczny pasek postępu VMware a na drugim ekranie most firmy Cisco.Przyznam się, że czasem w przypadku nowych produktów znowu zapala się lampka "A może by tak podziałać po pracy, tak niby dla siebie i przy okazji znowu uratować świat." Na szczęście mój mózg dobrze się broni i wewnętrzny mówca podpowiada "Nie, nie i jeszcze raz nie. Naucz się czegoś innego, napraw centrum multimedialne, idź się wspinać, pamiętaj co ostatnio oglądałeś." No i jak bym się z nim nie spierał muszę mu przyznać rację. Nic tak nie pomaga w rozwiązywaniu problemów w pracy jak przestanie myśleć o pracy po pracy;) Ja wiem, że to trudne ale następnego dnia naprawdę czasem problemy rozwiązują się przy porannej herbacie.PS. Filmik, o którym przypomina mi wewnętrzny mówca.