Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: iptables nat и две локальных сети  (Прочитано 2061 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн rusooo

  • Автор темы
  • Участник
  • *
  • Сообщений: 159
    • Просмотр профиля
iptables nat и две локальных сети
« : 06 Ноября 2012, 03:49:47 »
1. eth0 + ppp0 - (внешняя) сеть провайдера + PPPoE
2. eth1 - (внутренняя) сеть С полным доступом к серверу И интернетом
3. eth2 - (внутренняя) сеть Без доступа к серверу И интернет Без всяких ограничений

так правильно?
ничего ли я не напутал?

#!/bin/bash
# Enable routing
echo 1 > /proc/sys/net/ipv4/ip_forward

# reset iptables
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -X -t nat
iptables -X -t mangle

# lo
iptables -A INPUT -i lo -j ACCEPT

# For fixing problem
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

### eth0 & ppp0 ###
iptables -A INPUT -i eth0 --match state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 --match state --state ESTABLISHED -j ACCEPT

### eth1 ###
iptables -A INPUT -i eth1 --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT

### eth2 ###

exit 0
« Последнее редактирование: 06 Ноября 2012, 03:56:27 от rusooo »

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: iptables nat и две локальных сети
« Ответ #1 : 06 Ноября 2012, 04:13:24 »
Кажется, что в INPUT DROP без соответствующего правила для входящих соединений будет слишком жестко. Для проверки состояния пакета рекомендуют использовать conntrack, вместо match state:
iptables -A INPUT -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT

вместо

iptables -A INPUT -i eth0 --match state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 --match state --state ESTABLISHED -j ACCEPT

### eth1 ###
iptables -A INPUT -i eth1 --match state --state NEW,ESTABLISHED,RELATED -j ACCEPT


Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн rusooo

  • Автор темы
  • Участник
  • *
  • Сообщений: 159
    • Просмотр профиля
Re: iptables nat и две локальных сети
« Ответ #2 : 06 Ноября 2012, 06:40:12 »
"постепенно принимает" такой вид
my_net.sh
#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

/etc/init.d/dnsmasq stop
ifconfig eth1 down
ifconfig eth2 down
ifconfig eth1 192.168.1.1/24 up
ifconfig eth2 192.168.2.1/24 up
sleep 3
/etc/init.d/dnsmasq start

# Enable routing
echo 1 > /proc/sys/net/ipv4/ip_forward

# reset iptables
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -F
iptables -F -t nat
iptables -F -t mangle

iptables -X
iptables -X -t nat
iptables -X -t mangle

# lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# For fixing problem
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

### eth0
iptables -A INPUT -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -i eth0 -m conntrack --ctstate NEW -p tcp ! --syn -j DROP

### ppp0
iptables -A INPUT -i ppp0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -i ppp0 -m conntrack --ctstate NEW -p tcp ! --syn -j DROP

### eth1
iptables -A INPUT -i eth1 -j ACCEPT

### eth2
iptables -A INPUT -i eth2 -p udp -m multiport --ports 53,67 -j ACCEPT
iptables -A INPUT -i eth2 -p tcp -m multiport --ports 53,67 -j ACCEPT

exit 0

# iptables -L -v -n
Chain INPUT (policy DROP 536 packets, 34122 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0            ctstate NEW tcpflags:! 0x17/0x02
    0     0 DROP       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            ctstate NEW tcpflags:! 0x17/0x02
    9  1429 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    1   308 ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
  322 48536 ACCEPT     all  --  ppp0   *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
   89  7913 ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0
    1    64 ACCEPT     udp  --  eth2   *       0.0.0.0/0            0.0.0.0/0            multiport ports 53,67
    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0            multiport ports 53,67

Chain FORWARD (policy ACCEPT 30 packets, 3474 bytes)
 pkts bytes target     prot opt in     out     source               destination
    4   208 TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcpflags: 0x06/0x02 TCPMSS clamp to PMTU

Chain OUTPUT (policy ACCEPT 640 packets, 207K bytes)
 pkts bytes target     prot opt in     out     source               destination
    9  1429 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: iptables nat и две локальных сети
« Ответ #3 : 06 Ноября 2012, 08:38:03 »
Можно заменить
### eth0
iptables -A INPUT -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -i eth0 -m conntrack --ctstate NEW -p tcp ! --syn -j DROP

### ppp0
iptables -A INPUT -i ppp0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -i ppp0 -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
на
iptables -I INPUT -i eth0 -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Правил в два раза меньше, а функционал тот же.

В OUTPUT вообще смысла нет писать разрешающие правила без запрещающих, если политика ACCEPT.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

 

Страница сгенерирована за 0.016 секунд. Запросов: 23.