NAT на одном сетевом интерфейсе

В этой статье рассказывается об использовании Linux-станции с одной сетевой картой для подключения к Интернет по DSL из домашней сети.

В течение многих лет я использовал коммутируемое модемное соединение на 28.8k для связи между домашним компьютером и компьютером на работе, который также был оснащен модемом, так как это решение не требовало оплаты. Стоимость DSL-подключения в наших местах была несколько высока для меня, пока конкуренция между местными провайдерами кабельного доступа не сделала цену более доступной. DSL – классная вещь, а так как я люблю выходить в Интернет из дома, то дополнительная скорость весьма кстати. И к тому же, теперь, когда я подключен к сети все время, это позволяет мне получить доступ к домашнему компьютеру с работы. Настроить DSL-доступ на моей системе с Red Hat 8.0 (rp-pppoe) было вопросом нескольких кликов мышкой.
Тем временем, моя жена сообщила, что у нее на работе установили веб-интерфейс почтового сервера MS Exchange. Отлично! Я подумал, что ей достаточно запустить Мозиллу на моей машине с Linux чтобы проверять рабочую почту дома. Но когда мы попробовали сделать это, у нас не получилось. Также отказались работать Netscape и Konqueror, идентифицирующий себя как IE. Я все еще думал – это не проблема, установил CrossOver Office, проапргрейдил IE до версии 6.0, но так и не смог получить доступ к корпоративной почте. Единственным рабочим вариантом был IE, запущенный на Windows системе, так что вам придется полюбить эти собственные протоколы Microsoft:)
На ноутбуке моей жены была установлена Windows 98, но после установки программного обеспечения SBL DSL на другую машину с Windows, мне не хотелось тратить время еще на одну установку. Также мне не хотелось запускать Windows на машине, имеющей непосредственный выход в сеть.
Конечно, мне в голову пришла идея использовать маскирование IP/NAT (network address translation). Но моя рабочая станция с материнской платой VIA M9000 Mini-ITX имела только одну сетевую карту, и один PCI слот ,который был занят под TV-тюнер. Встроенная сетевая использовалась для подключения DSL, так куда мне подключить еще одну сетевую карту?
Так как я курировал несколько маршрутизаторов на базе Linux и несколько multihomed серверов (имеющих несколько сетевых интерфейсов), я решил, что маскирование IP на псевдоинтерфейсе на единственной сетевой карте сможет работать. Сделать это оказалось просто. Вот схема:

Я подсоединил DSL-модем к 4-портовому хабу с помощью перекрестной витой пары 5-ой категории. Затем я подсоединил рабочую станцию и ноутбук к хабу обычной витой парой 5-ой категории. На схеме показано, как все это выглядит.
Ниже приведен скрипт, который я использую для включения маскирования после того, как установится DSL-соединение и отработает скрипт, поднимающий файрволл.

# ------------------ begin nat.sh -----------------
#!/bin/sh
## скрипт, включающий маскирование
## должен быть запущен после установления DSL соединения
## использование: sh nat.sh
#
# подъем псевдоинтерфейса eth0:0 :

ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 \
broadcast 192.168.1.255 up

# Правило iptables, включающее маскирование:

iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE

# Наконец, включаем форвардинг:

echo 1 > /proc/sys/net/ipv4/ip_forward

# Дополнительное необязательное правило
# для общения ноутбка и рабочей станции
# для ssh и samba (это по умолчанию запрещено файрволлом)

iptables -I INPUT -s 192.168.1.2 -d 192.168.1.1 -j ACCEPT
# ------------------ end nat.sh -----------------


Ноутбук с Windows 98 имеет статический IP адрес 192.168.1.2, шлюз 192.168.1.1 и адреса DNS-серверов моего провайдера. Адреса DNS-серверов берутся из файла /etc/resolv.conf после установления DNS-соединения и далее не меняются.
Вот и все! Доступ в Интернет для моей домашней сети с единственным хабом и парой соединительных кабелей готов.

Lon Jones,
перевод Юрия Левина,yl@tut.by



Сетевые решения. Статья была опубликована в номере 06 за 2004 год в рубрике sysadmin

©1999-2022 Сетевые решения