Видаліть будь-ласка минулий мій пост, мені не дозволяє його редагувати(
Народ вибачайте якщо щось не так, але пости ви пишите як для себе, рядовому користувачу не зрозуміти, ось людина із-за того ОС переставляє і думає як все складно.
Внесу свої 5 копійок, попробую поетапно росписати що куди і як робиться (
див малюнок нижче, спс sdwvit за картинку)
Дано: Два комп'ютери, головний 1-й ПК (має 2 мережевих плати або інші ethernet-адаптери) має доступ до інтернету, має роздавати інтернет на 2-й комп'ютер (Клієнт)
Вмикаєм обидва ПК, вводим
ifconfig -a або дивимся в
"Система-Адміністрування-Мережеві інтсрументи". Потрібно визначити, яка з мережевих плат до чого підключена, Приклад:
.....
eth0 Link encap:Ethernet HWaddr 48:5b:39:c6:cc:8a
inet addr:192.168.0.2 Mask:255.255.255.0
.....
.....
eth1 Link encap:Ethernet HWaddr 48:5b:39:c6:cc:8a
inet addr:192.168.1.2 Mask:255.255.255.0
.....
По своїй конфігурації я по IP визначив, який інтерфейс
eth0 - це підключений провайдер (як правило настройки ставляться автоматично), а
eth1 - це моя власна сітка між 2-ма комп'ютерами. Це головне що потрібно вам знати, оскільки потрібно точно знати що саме ви настроюєте.
Пояснюю пошагово що необхідно:
1. Настроїти інтерфейс який отримує інтернет.
2. Настроїти інтерфейс який віддає інтернет.
3. Зробити автозагрузку правил (настройок) iptables, за допомогою скрипта iptables-restore.
Відкриваємо консоль (Увага! все робиться від імені суперадміна root, який викликається командою sudo):
sudo -s
cp /etc/network/interfaces /etc/network/interfaces.bak
gedit /etc/network/interfaces
Код: (/etc/network/interfaces)auto lo
iface lo inet loopback
post-up iptables-restore </etc/iptables.conf
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
Ми описали інтерфейси системи вручну. Зберігаємо, перезапускаємо службу:
/etc/init.d/networking restart
[/b]
Настройка правил iptables и параметрів ядра:
sudo -s
echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf; sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags RST,SYN SYN -j TCPMSS --clamp-mss-to-pmtu
iptables-save >/etc/iptables.conf
Настройка таблиць iptables і параметри ядра завершені. Строками
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags RST,SYN SYN -j TCPMSS --clamp-mss-to-pmtuМи:
1. Дозволили пакетам бегати між інтерфейсами.
2. Дозволили NAT домашньої сітки, сконфігурувавши правила iptables.
3. Вирівняли размір MTU, він різний на інтерфейсах.
Ці дві стрічки можна замінити командою
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE, але в цьому випадку ви будете роздавати інтернет сусідам по свічу))
Стрічкою iptables-save >/etc/iptables.conf зберегли правила iptables за допомогою скрипта iptables-save.
Інколи цих настройок досить, АЛЕ 2-й ПК не зможе автоматично отримати IP адрес и IP сервера DNS від Серверу. Якщо це не потрібно, тоді потрібно лише вписати на 2-му ПК настройки сітки:
IP : 192.168.1.2
Маска підсітки: 255.255.255.0
Шлюз: 192.168.1.1
DNS: DNS-провайдера
і можна слідуючий пункт не читати.
Настройка DNS и DHCP-сервера.
Тут буде розглянуто настройка DNS-проксі и DHCP-сервера, на прикладі dnsmasq. В терміналі (бажано кожну стрічку окремо) вводимо:
sudo apt-get install dnsmasq
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
gedit /etc/dnsmasq.conf
Код: (/etc/dnsmasq.conf)# Вкажем інтерфейс, який буде слухати dnsmasq
interface=eth1
# Вкажем адрес, на якому буде находитись dnsmasq
listen-address=192.168.1.1
# Вкажем dnsmaq слухати тільки интерфейси
bind-interfaces
# Вкажем локальний домен, для нашеої домашньої сітки, Це не обов'язково
domain=linux.lan
# Вкажем DHCP-серверу діапазон видаваємих адресс, маску и час їх аренди
dhcp-range=192.168.1.2,192.168.1.254,255.255.255.0,24h
# Вкажем DHCP-серверу маршрут по замовчуванню (default route) який видається клієнтам,
# в нашому випадку це адреса інтерфейсу eth1
dhcp-option=3,192.168.1.1
# Можна вказати адресу DNS, яка видається DHCP-сервером примусово,
# якщо щось не влаштовує в dnsmasq, хоча Кліент і так по замовчуванню
# отримує адресу DNS=IP-eth1
# dhcp-option=6,ip-dns1,ip-dns2,ip-dnsN
Зберігаємо. Перезапускаєм dnsmasq
service dnsmasq restart
Здається все. Перегружаємо обидва комп'ютери Повинно працювати
Можна все це запустити одним скриптом, але рекомендую самому прости весь пост описаний вище:
#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin .
export PATH
testforward=`cat /etc/sysctl.conf |grep -v "#" |grep 'net.ipv4.ip_forward = 1' |wc -l`
# stuff
ifconfig eth1 down
ifconfig eth1 192.168.1.1/24 up
if [$testforward = 0]; then
echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf
sysctl -p
fi
iptables -t nat -F POSTROUTING
iptables -t mangle -F FORWARD
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags RST,SYN SYN -j TCPMSS --clamp-mss-to-pmtu
exit 0
Здається все....
P.S. при падінні сітки (тьфу-тьфу-тьфу) вводимо
gedit /etc/network/interface
і повертаємо минулі значення, які стояли до нашого втручання