пятница, 27 декабря 2013 г.

NAT через IPIP-туннель.

Понадобилось для определенного теста сымитировать выход в интернет из другого города. В том городе имеется небольшой сервер, доступный по внутренней сети (предположим, некие VPN от провайдера, сервер и тестовая машина находятся в локальных маршрутизируемых сетях).

У сервера есть белый ip-адрес и выход в интернет, у клиента такой роскоши нет.

Сервер
IP-адрес локалки: 192.168.1.1/24
IP-адрес белый: 1.2.3.4

Клиент
IP-адрес локалки: 192.168.2.2/24
Шлюз 192.168.2.1

Решение состоит из двух шагов: Поднятие туннеля между клиентом и сервером и настройка NAT на сервере.

На сервере:
ip tun add tun0 mode ipip local 192.168.1.1 remote 192.168.2.2 ttl 255
ip l s dev tun0 up
iptables -I INPUT -p 4 -s 192.168.2.2 -j ACCEPT
iptables -I FORWARD -s 192.168.2.2 -j ACCEPT
iptables -I FORWARD -d 192.168.2.2 -j ACCEPT
iptables -t nat -I POSTROUTING -s 192.168.2.2 -j MASQUERADE

На клиенте:
ip tun add tun0 mode ipip local 192.168.2.2 remote 192.168.1.1 ttl 255
ip l s dev tun0 up
ip r a 192.168.1.1 via 192.168.2.1
ip r d default
ip r a default dev tun0
Надо помнить, что здесь не используется шифрование.
Forwarding должен быть включен, а rp_filter на всякий случай выключен.

воскресенье, 15 декабря 2013 г.

Почему не запускается бинарник?

user@book:~$ /home/user/some_program/program_bin
bash: /home/user/some_program/program_bin: Нет такого файла или каталога

user@book:~$ ls -l /home/user/some_program/program_bin
-rwxr-xr-x 1 user user 286567 май 27  2012 /home/user/some_program/program_bin

user@book:~$ file /home/user/some_program/program_bin
/home/user/some_program/program_bin: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.0, not stripped

user@book:~$ /home/user/some_program/program_bin
bash: /home/user/some_program/program_bin: Нет такого файла или каталога

user@book:~$ mount | grep home
/dev/mapper/_dev_dm_3 on /home/user type ext4 (rw,relatime,data=ordered)

user@book:~$ ls -ld /home/user/some_program
drwxr-xr-x 15 user user 4096 окт 24 19:38 /home/user/some_program


user@book:~$ ld /home/user/some_program/program_bin
ld: i386 architecture of input file `/home/user/some_program/program_bin' is incompatible with i386:x86-64 output