Installing Iodine-server on CentOS 7

iodineI’ve had some troubles getting Iodine-server to work under CentOS 7. So iv’e decided to write an article how I’ve managed to get it to work.

This instruction is based on a setup using iptables instead of firewalld, because I run iptables on all my servers since forever.

DNS setup

For iodine to work there are two records required. An A-record and an NS record. I’ve used the same naming as the iodine documentation, to keep it as simple as possible.
First add an A-record with the name t1ns that points to the ip of your server that will run the iodine server. The ip used here for the example should be replaced by your ip.
A: t1ns.<<yourdomain>> → 374.263.291.194

Then add an NS record with the name t1 that points to the A-record you’ve just made;
NS: t1.<<youdomain>> → t1ns.<<yourdomain>>

That’s all there is required for iodine to work with your domain.

Installing iodine

Firstly, make sure the EPEL repository is installed:
yum -y install epel-release

Then install iodine-server:
yum -y install iodine-server

Next is configuring iodine by editing /etc/sysconfig/iodine-server.
Make sure the line that starts with OPTIONS look something like this:
OPTIONS="-f -c -P <<yourpassword>> 10.1.1.1 t1.<<yourdomain>>"
Replace <<yourpassword>> with the password you wish to use, and <<yourdomain>> with the domain you are using for iodine.

Then, start iodine-server and enable it at boot:
systemctl start iodine-server
systemctl enable iodine-server

Configure traffic routing

Allow DNS and NAT traffic trough iptables:
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE
iptables -t filter -A INPUT -p udp -m multiport --dports 53 -j ACCEPT
iptables -t filter -A INPUT -i dns0 -j ACCEPT
iptables -t filter -A OUTPUT -o dns0 -j ACCEPT
iptables -t -A OUTPUT -p udp -m multiport --dports 53 -j ACCEPT
iptables -t filter -A FORWARD -i dns0 -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -o dns0 -m state --state RELATED,ESTABLISHED -j ACCEPT

And save the new ruleset:
iptables-save > /etc/sysconfig/iptables

Next, allow ipv4 packet forwarding and restart the network service to apply this change:
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/ip_forward.conf
systemctl restart network

Conclusion

That’s it. You should be able to connect with iodine to your server by using the address t1.<<yourdomain>>.

An Android client that seems to work pretty good and I use is AndIodine, and is available via the F-Droid catalogue.

Please leave a comment if this post was helpfull in any way.

arm-eabi-gcc: not found

When I tried to compile my own Android ROM, I got the following error:

CHK     include/linux/version.h
target Executable: skia_gm (/media/ssd/buildout//target/product/i9100/obj/EXECUTABLES/skia_gm_intermediates/LINKED/skia_gm)
target Executable: skia_test (/media/ssd/buildout//target/product/i9100/obj/EXECUTABLES/skia_test_intermediates/LINKED/skia_test)
target Executable: test-opengl-configdump (/media/ssd/buildout//target/product/i9100/obj/EXECUTABLES/test-opengl-configdump_intermediates/LINKED/test-opengl-configdump)
CC      scripts/mod/empty.o
/bin/sh: 1: /home/ted/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: not found
make[4]: *** [scripts/mod/empty.o] Error 127
make[3]: *** [scripts/mod] Error 2
make[2]: *** [scripts] Error 2
make[2]: *** Waiting for unfinished jobs....

The problem was that the arm toolchain wasn’t installed. After installing the toolchain compiling succeeded.

Installing the toolchain can be done with the following command:
git clone https://android.googlesource.com/platform/prebuilt

After that, run the following command to add the toolchain to the PATH variable:
export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

Compiling should now succeed without the previous error.

I’ve found this information on http://source.android.com/source/building-kernels.html, a very helpful information source for Android development.

Windows 8 Upgrade troubles

I’ve purchased a Windows 8 upgrade for my Windows 7 machine. While upgrading I ran into a problem.

The upgrade came to 100%, and then said “Your computer will reboot in a few moments”. After a few minutes it came up with a general error “Windows 8 Setup could not complete” and then it closed. My computer didn’t reboot, and Windows 7 just kept on running.

After removing some applications like my virus scanner (NOD32) and some other applications i tried again. After about an hour I got exactly the same error.

Then I found the following error:
ConX::Setup::Media::CWorkerProc::SetupThreadProc: An error occurred while servicing the boot files from [C:\$WINDOWS.~BT\Windows\BOOT]; status = [0x80070015][gle=0x00000015]

After a lot of searching I’ve found the following solution:
Add a drive letter to the 100MB system partition which resides at the beginning of your harddisk. I assigned the letter S.

After I did this, the setup continued where it previously stopped with an error, and Windows 8 was installed like it should.

When Windows 8 was completely installed, I removed the drive letter from the partition. After this, Windows 8 was running flawlessly.

Tweetdeck on Windows 8

tweetdeck-02-676x535I’ve recently upgraded my Windows 7 installation to Windows 8. Unfortunately Tweetdeck wouldn’t connect to my account anymore and showed the not so useful error “Unable to connect”.

After a lot of searching I’ve found a simple and unlogical solution:

  1. Start Internet Explorer
  2. Navigate to https://api.tweetdeck.com
  3. Navigate to https://twitter.com
  4. Close Internet Explorer
  5. Start Tweetdeck
  6. Log in to your account

Now Tweetdeck works like it should, and profile images should appear again.

Yum hangs at “Running Transaction Test”

When installing a package via Yum, the process stalled at “Running Transaction Test”.

After a lot of digging, I found that the problem was a stale NFS mount.
After unmounting this mount with the command below, Yum worked flawlessly again.
umount -l /mnt/sharename

Next Page »