LINUX.ORG.RU
ФорумAdmin

[NAT] 2 локальных сети


0

1

Доброго времени суток!

Имеется сервер, в который приходит интернет и он его должен раздавать по интерфейсам eth1 и eth2. Адресе подсетей соответственно 192.168.0.0./24 и 192.168.2.0/24.

Достаточно ли в iptables сделать маскардинг для этих двух подсетей, чтобы клиенты из них увидели интернет:

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.2.0/24 -j MASQUERADE
На моем сервере нат заворачивает http-трафик на сквид, но в этой организации разграничений и учета посещений не будет. Достаточно ли маскардинга и ничего ли я не забыл?

★★

> Достаточно ли маскардинга и ничего ли я не забыл?

Только, видимо:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j MASQUERADE

eth0 внешний ?

AS ★★★★★ ()
Ответ на: комментарий от AS

Да, смотрит на сплиттер, в который приходит оптика, интернет провайдер дает через pppoe. Т.е. поднимается еще интерфейс ppp0. Надо его указывать?

Fletch ★★ ()
Ответ на: комментарий от Fletch

> Т.е. поднимается еще интерфейс ppp0. Надо его указывать?

Да, значит -o ppp0, а не eth0. Можно, вообще, одной строкой:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
или
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/16 -j MASQUERADE
в зависимости от ситуации.

AS ★★★★★ ()
Ответ на: комментарий от mky

Так будет работать?

#!/bin/bash
# Зададим общие переменные
IPTABLES="/usr/sbin/iptables"
WAN_IP="193.200.32.111"
WAN_IF="ppp0" 
WAN_BC="255.255.255.0"
WIFI_IP="192.168.0.1"
WIFI_IF="eth1" 
WIFI_NET="192.168.0.0/24"
ADM_IP="192.168.2.1"
ADM_IF="eth2" 
ADM_NET="192.168.2.0/24"
LO_IP="127.0.0.1"
LO_IF="lo"
# Flush rules
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -t nat -X
# Default policy
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
# Allow traffic from LAN_IF to LAN_NET
$IPTABLES -A INPUT -p ALL -i $ADM_IF -s $ADM_NET -j ACCEPT
# Block Megalink clients
$IPTABLES -A INPUT -s 192.168.34.0/24 -i $WAN_IF -j DROP
$IPTABLES -A INPUT -s 192.168.35.0/24 -i $WAN_IF -j DROP
$IPTABLES -A FORWARD -d 192.168.34.0/24 -j DROP
$IPTABLES -A FORWARD -d 192.168.35.0/24 -j DROP
# ICMP
$IPTABLES -A INPUT -p icmp --icmp-type any -j ACCEPT
# Allow all incoming traffic to LO
$IPTABLES -A INPUT -p ALL -i $LO_IF -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IF -s $WIFI_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IF -s $ADM_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IF -s $WAN_IP -j ACCEPT
# Allow DHCP queries
$IPTABLES -A INPUT -p UDP -i $WIFI_IF --dport 67 --sport 68 -j ACCEPT
$IPTABLES -A INPUT -p UDP -i $ADM_IF --dport 67 --sport 68 -j ACCEPT
# Alow DNS queries
$IPTABLES -A INPUT -p UDP -i $WIFI_IF --dport 53 -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $WIFI_IF --dport 53 -j ACCEPT
$IPTABLES -A INPUT -p UDP -i $ADM_IF --dport 53 -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $ADM_IF --dport 53 -j ACCEPT
# SSH
$IPTABLES -A INPUT -p TCP -i ALL --dport 1222 -j ACCEPT
$IPTABLES -A INPUT -p TCP -s 0/0 --sport 1024:65535 -d $WAN_IP --dport 1222 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s $WAN_IP --sport 1222 -d 0/0 -j ACCEPT
# Block Spambot ports
$IPTABLES -A INPUT -s $WIFI_NET -p tcp --sport 445 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p tcp --sport 665 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --sport 1025 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --sport 1026 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --sport 1027 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p tcp --sport 1034 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --sport 1433 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --sport 1434 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p tcp --sport 6000 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p tcp --dport 445 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p tcp --dport 665 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --dport 1025 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --dport 1026 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --dport 1027 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p tcp --dport 1034 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --dport 1433 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p udp --dport 1434 -j DROP
$IPTABLES -A INPUT -s $WIFI_NET -p tcp --dport 6000 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p tcp --sport 445 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p tcp --sport 665 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --sport 1025 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --sport 1026 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --sport 1027 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p tcp --sport 1034 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --sport 1433 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --sport 1434 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p tcp --sport 6000 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p tcp --dport 445 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p tcp --dport 665 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --dport 1025 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --dport 1026 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --dport 1027 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p tcp --dport 1034 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --dport 1433 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p udp --dport 1434 -j DROP
$IPTABLES -A INPUT -s $ADM_NET -p tcp --dport 6000 -j DROP
# Forward icmp
$IPTABLES -A FORWARD -p icmp --icmp-type any -j ACCEPT
# Все уже установленные входящие подключения - РАЗРЕШЕНЫ
$IPTABLES -A INPUT -p ALL -d $WAN_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
# Сначала включаем собственно NAT
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -o $WAN_IF -j MASQUERADE
# Все транзитные пакеты по уже установленным соединениям - РАЗРЕШЕНЫ
$IPTABLES -A FORWARD -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT

Fletch ★★ ()
Ответ на: комментарий от Fletch

> Так будет работать?

А вот эту портянку сам читай. Много букв. :-) Вот этого достаточно в любом Linux:

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

# Flush rules
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -t nat -X
# Default policy
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
==

А как лишнее закрыть, что вместо «echo 1 > ip_forward» писать правильно - это пусть домашнее задание будет по изучению той системы, которую используешь.

AS ★★★★★ ()
Ответ на: комментарий от Fletch

Ну почитай же статью на вики про iptables. Копируя эти конфиги/скрипты не пойми откуда, ты _никогда_ не научишься использовать iptables. ИМХО

Только кропотливо и вдумчиво читая матчасть про tcp, ip, статью на вики и, используя tcpdump, nmap, iptables -j LOG, conntrack, virtualbox ты сможешь не задавать таких вопросов. Опять же ИМХО

anton_jugatsu ★★★★ ()
Ответ на: комментарий от anton_jugatsu

Это все замечатльно и правильно, когда есть время.

Кстати, конфиг не копирован не пойми откуда, написан мной для другого сервера. Оттуда много поскипано всяких блокировок и проброс портов.

Fletch ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.