Използвам eth1 за вътрешната мрежа, а през eth0 ми минава нета, който е през pppoe. IP-то на вътрешната карта (eth1) ще е с адрес 192.168.0.1 и ще бъде подразбиращият се gateway за вътрешната ми мрежа,
За да може машината ви да работи като gateway за вътрешната ви мрежа, трябва да се разреши IP forwarding и да се зададат няколко правила за рутиране на пакети. Това може да стане с iptables.
Основно се нуждаем от четири серии от правила
- отказване на идващите връзки по eth0 (в моят случай ppp0)- това ви е външният мрежов интерфейс
- позволяване на изходящите пакети от вътрешната ни мрежа (през eth1)
- позволяване на установените връзки да се връщат
- заобикяне на time to live (TTL) филтри при NAT
Както споменахме малко по-горе, трябва да подготвим маршрутизатора си, като зададе, IP forwarding. Това става, като редактираме /etc/sysctl.conf и добавиме следните два реда:
- Код за потвърждение: Избери целия код
net.ipv4.ip_forward = 1
net.ipv4.ip_local_port_range = 1024 32768
Ако ги имате, трябва да ги промените по описисаният начин. За да влезнат в сила промените, трябва да се изпълни
- Код за потвърждение: Избери целия код
sysctl -p
За правилата, които искаме да зададем, ще използваме скрипт. Има коментари, за да може по-лесно да разберете, какво се прави. Ето го и скрипта:
- Код за потвърждение: Избери целия код
#!/bin/bash
PATH=/usr/sbin:/sbin:/bin:/usr/bin
# Изтриване на всички налични правила
#
EXT=ppp0
INT=eth1
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Винаги приемане на loopback трафика
iptables -A INPUT -i lo -j ACCEPT
#Позволяване на установените връзки и тези, които не идват отвън
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! $EXT -j ACCEPT
iptables -A FORWARD -i $EXT -o $INT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Позволяване на изходящите пакети от вътрешната ни мрежа.
iptables -A FORWARD -i $INT -o $EXT -j ACCEPT
# Маскиране.
iptables -t nat -A POSTROUTING -o $EXT -j MASQUERADE
# Да не се препрщат от вън на вътре.
iptables -A FORWARD -i $EXT -o $INT -j REJECT
#Заобикаляне на TTL филтрите при NAT
iptables -t mangle -A PREROUTING -i $EXT -j TTL --ttl-inc 1
iptables -t mangle -A POSTROUTING -s 192.168.0.0/24 -o $EXT -j TTL --ttl-set 64
Ако използвате статичен или динамичен адрес, а не pppoe, то просто можете да замените ppp0 с eth0 (ако през eth0 идва нета ви)
Ако искате скрипта да стартира наравно с вдигането на мрежата при стартиране на компютъра ви, то трябва да го запазите в директорията /etc/network/if-up.d/ и да му зададете права за изпълнение (chmod +x името_на_скрипта.sh)
Източници: Основен и статията на Весо в linux-bg.org

