NAT? NAT! 

#!/bin/sh

/sbin/sysctl -w net.ipv4.ip_forward=1
/sbin/sysctl -w net.ipv4.conf.default.forwarding=1
/sbin/sysctl -w net.ipv4.conf.all.forwarding=1
/sbin/modprobe ip_gre
/sbin/modprobe nf_conntrack_proto_gre
/sbin/modprobe nf_nat_ftp
/sbin/modprobe nf_nat_pptp
/sbin/modprobe nf_nat_sip
/sbin/modprobe nf_nat_proto_sctp
/sbin/modprobe nf_nat_amanda
/sbin/modprobe nf_nat_proto_gre
/sbin/modprobe nf_nat_h323
/sbin/modprobe nf_nat_snmp_basic
/sbin/modprobe nf_nat_tftp
/sbin/modprobe nf_nat_irc
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o ppp0 -j MASQUERADE

Первые три строчки в последствии можно добавить в /etc/rc.local, чтобы работало сразу после загрузки. В данном примере видно, что я настроил форвардинг на ppp0, который у меня vpn. Через него у меня работает интернет. Ессно на месте ppp0 может быть любое сетевое устройство. При помощи modprobe подгружаем необходимые для обеспечения полного функционала NAT модули ядра.

Имея схему “клиент” → “Linux-машина с NAT” → “Интернет”, настраиваем сеть между клиентом и линуксовым роутером так: сеть — что-нибудь типа 192.168.0.0/24, IP клиента из этого диапазона, IP Linux-машины тоже, например 192.168.0.1 (классика))) ). Соответственно на клиенте основной шлюз ставим IP Linux-машины (в данном примере192.168.0.1), DNS можно взять из /etc/resolv.conf Linux-машины, на которой поднят NAT.

P.S.: не забываем перезагрузить наш Linux-роутер)).

Заметки о Python: ветвим процесс 

Ветвить процесс можно при помощи функции fork() из модуля os:

#!/usr/bin/python
import os
if os.fork() == 0:
  if os.fork() == 0:
    os.execl('/bin/sleep', 'sleep', '10')

Два раза форкать эффективно, когда необходимо демонизировать. В данном случае мы делаем fork() и запускаем в дочернем процессе /bin/sleep… Для наглядности))

Windows 7 и Ext2fsd 

Установил я винду седьмую, начинаю потихоньку ее настраивать под себя, ставить софт… Стал вопрос просмотра линуксовых ФС, и я конечно же использовал Ext2fsd, который написан под NT-системы от w2k до WinXP. Софтина поставилась, служба запустилась, назначил букву разделу. Решил воспроизвести музон foobar’ом. И тут меня ждало разочарование — машину кинуло в BSOD — Bad pool header. Пробовал копировать файлы проводником — через раз работает, Total Commander’ом — постоянно валится в BSOD, StrongDC — BSOD, Windows Media Player — BSOD. BSOD’ы двух видов — 1й, как было написано выше: Bad pool header, 2й — driver irql not less or equal. Вот такая песня… Точнее никакой, потому что всё файло у меня лежит на ext3-разделе в домашней директории :-( . Надо отписать разрабам, пусть включают мозг, а то обновлений софтины не было уже почти год).

P.S.: ОЧЕНЬ приятно удивило то, что мой Canon PIXMA IP1500 завелся и печатает в  Windows 7 без проблем с дровами для Windows XP с диска к принтеру.

Windows 7 RC и Linux на одной машине 

Решил я поставить Windows 7, посмотреть, что она из себя представляет. Обычно я для двойной загрузки делал так: устанавливал первую ОС на какой-либо раздел, загрузчик ставился туда же, сам раздел при этом был загрузочным (флаги boot или active в некоторых программах для разметки). Далее, я ставил еще одну ОС. Перед ее установкой я делал раздел, на который она будет установлена, загрузочным. После чего устанавливал ОС. Такой путь решал проблему с постоянным перетиранием MBR во время установок-переустановок. Последней я всегда ставил Linux, т. к. в некоторых ситуациях это действительно требуется (например, FreeBSD надо ставить первее всего, да к тому же на первый раздел жесткого диска), а также потому, что использовал линуксовый GRUB для управления загрузкой ОСей. Таким образом я получал нетронутый загрузчик как у первой ОС, так и у второй. Это позволяло без проблем загружаться в одну из живых ОС в случае сноса раздела с другой ОС практически без лишних телодвижений — тупо делаем нужный раздел активным и все, никаких лишних процедур по восстановлению MBR.

Точно так же я решил сделать и в этот раз, тем более что GRUB уже есть и перетирать мне его не с руки — лень потом грузиться с LiveCD и что-то там делать. После установки я понял, что новая винда всякий раз при загрузке принудительно выставляет активным свой раздел со своим загрузчиком, т.о. я получаю незагружающегося тукса. Меня это огорчило, однако решение было найдено — пришлось писать загрузчик GRUB’a в MBR, получается, что пока только так.

Genius Slimstar Pro + Ubuntu 

Genius Slimstar Pro

Купил сегодня новую клавиатуру (у старой, которая прожила где-то полгода, опять сломался пробел;) ), воткнул в PS/2 гнездо, ничего не настраивал, попользовался малость, пошел попил пивка, прихожу домой. Думаю — а нажму-ка я на мультимедийные клавиши в своей убунте — что будет — интересно (у моей крыски A4Tech X6 кнопки вперед-назад без настроек дают тот же эффект при нажатии, что и левый клик)… Мое захмелевшее удивление было воистину колоссально — они работают!!! При нажатии на клавишу медиа-плеера запустился Rhythmbox, навигация по песням, увеличение-уменьшение громкости, остановка и начало воспроизведения, запуск почтового клиента (Evolution), калькулятора (gcalc) — работают! При нажатии на кнопку “WWW” запустился Nautilus в домашней директории. Не заработала только кнопка со значком компутера (самая правая). Хотя, может она в убунте запускает что-то, что у меня не установлено?.. В общем — я приятно удивлен этой вещи, поскольку помню, как “трахался” с кнопками мышки в зюзе и с клавишей “Sleep” на моей предыдущей клавиатуре в том же дистрибутиве. Приятно что в этом, в плане глобальности — небольшом, но в отношении к пользователю — важном — направлении имеется такой прогресс. Хоть я и не пользуюсь этими клавишами (взял клавиатуру чисто из-за классической расстановки клавиш, их короткого хода и как следствие — более тихого клацания при нажатии), все же был рад, что функционал устройства был раскрыт в Linux почти полностью, с чем издавна были проблемы)).

Ниже - xorg.conf:

slayer@slayer-desktop:~$ cat /etc/X11/xorg.conf

Section "Monitor"
	Identifier	"Configured Monitor"
EndSection

Section "Screen"
	Identifier	"Default Screen"
	Monitor		"Configured Monitor"
	Device		"Configured Video Device"
	DefaultDepth	24
EndSection

Section "Module"
	Load	"glx"
EndSection

Section "Device"
	Identifier	"Configured Video Device"
	Driver	"nvidia"
	Option	"NoLogo"	"True"
EndSection

slayer@slayer-desktop:~$