2008-03-20

Старкрафт через инет или настройка OpenVPN

Изначально было желание поиграть в старкрафт (doom, duke 3d и прочие интересные игры работающие на IPX)
будем реализовывать.
Есть (у меня)
1. TCP/IP локалка
2. Сервер с debian-etch (можно и форточку, но тада дальше не читать)
3. несколько клиентских машин с win32
--------------------
Собсна идея такая: поднимаем OpenVPN, а по верх неё гоним IPX/SPX,
ну заодно запустим OpenVPN в бридже. так интереснее

в линуксе:
устанавливаем OpenVPN

$ sudo apt-get -y install openvpn openssl bridge-utils
идем /usr/share/doc/openvpn/examples/easy-rsa/2.0/
(Я скопировал скрипты в свою папку, чтобы не трогать оригинальные файлы и
как можно меньше пользоваться рут-правами)
$ mkdir ~/openvpn $ cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* ~/openvpn/

создаем ключи:
$ cd ~/openvpn $ . ./vars $ ./clean-all $ ./build-dh
долго (или не очень) смотрим на ...+.....+
$ ./build-ca
отвечаем ( можно даже правильно на все вопросы)

$ ./build-key-server server

создаем клиентский ключ:
$ ./build-key client

конфиг сервера:
$ cat > server.conf <<"EOF"
вставить вот это:
-----------8<-------------------------- port 1194
proto udp
dev tap0
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
server-bridge 192.168.0.2 255.255.255.0 192.168.0.100 192.168.0.110
client-to-client
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
EOF

-----------8<-------------------------- Теперь самое сложное, создаем бридж (делать только из системной консоли, или скриптом, но не через SSH, так как соединение закончется при добавлении адаптера! можно прописать в автозагрузку, после того как заработает ессно)


скопируем файлы настройки и сертификаты openvpn в папку /etc/openvpn
$ sudo cp ~/openvpn/ca.crt /etc/openvpn/
$ sudo cp ~/openvpn/server* /etc/openvpn/
$ sudo cp ~/openvpn/ca.crt /etc/openvpn/
$ sudo cp ~/openvpn/dh*.pem /etc/openvpn/



разрешаем на фаерволе весь трафик c/на tap0


теперь можно запускать сервер
$ sudo /etc/init.d/openvpn start
если все без очепяток (в т.ч. моих) -- должно заработать, для полного щастья только
пробросить порт 1194 UDP через шлюз и сервер готов.

==================================================================
Теперь клиенты
раздаем клиентам фалы с ключами: ca.crt, client.crt и client.key
а так же конфиг (server.ovpn) вида:
-----------8<--------------------------

client
dev tap
proto udp
remote 10.0.0.1 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key clint.key
comp-lzo
verb 3


-----------8<--------------------------

скачиваем OpenVPN GUI http://openvpn.se/
устанавливаем, копируем конфиг, ключи и сертификаты в
c:\Program Files\OPenVPN\config
А теперь самое главное (то ради чего все задумывалось):
идем в "Панель управления\Сетевые подключения"
в свойствах TAP-адаптера (который появится после установки OpenVPN)
добавить протокол Microsoft IPX/SPX
и можно соединяться.

P.S.
Все вышесказанное полностью отвечает моим требованиям, но
следует учесть, что подключившись к VPN все клиенты будут находиться в
подсети сервера (не зря же бридж настраивали), со всеми вытекающими последствиями.

P.P.S
Не забыавем заменить IP адреса на свои
в моем примере:
внешний IP: 10.0.0.1
внутренний: 192.168.0.2
адрес шлюза: 192.168.0.1

Ping!

Subj%