Автор Тема: Не работает MASQUERADE  (Прочитано 3221 раз)

Оффлайн oberon

  • Участник
  • *
  • Сообщений: 4
Не работает MASQUERADE
« : 26.04.2014 14:20:55 »
День добрый!
Принесли сервер с ALT Linux Кентавр 6
Задача настроить на нем NAT. С ALT Linux столкнулся впервые, но вроде ничего сложного, настроил, но не работает MASQUERADE на внешнем интерфейсе.
Итак, в сервере 2 сетевые, одна внутрь (192.168.1.0/24), другая наружу:
bash-3.2# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether f0:7d:68:c1:f5:ab brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.20/24 brd 192.168.1.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 20:cf:30:35:59:c4 brd ff:ff:ff:ff:ff:ff
    inet 46.187.XXX.XXX/21 brd 46.187.7.255 scope global eth1
bash-3.2# ip route show
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.20
46.187.0.0/21 dev eth1  proto kernel  scope link  src 46.187.XXX.XXX
default via 46.187.YYY.YYY dev eth1

Включил IP Forwarding:
bash-3.2# cat /etc/net/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 0
bash-3.2# cat /proc/sys/net/ipv4/ip_forward
1

Настроил правила FW:
bash-3.2# iptables -L -v
Chain INPUT (policy ACCEPT 3313 packets, 2312K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  -f  any    any     anywhere             anywhere           
  243 31521 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
   12   956 ACCEPT     icmp --  any    any     anywhere             anywhere           
 1191 85077 ACCEPT     tcp  --  eth0   any     anywhere             anywhere            tcp dpt:ssh

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  -f  any    any     anywhere             anywhere           
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
  743 47404 ACCEPT     all  --  any    any     192.168.1.0/24       anywhere           

Chain OUTPUT (policy ACCEPT 3678 packets, 624K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  -f  any    any     anywhere             anywhere           
  243 31521 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
  218 27242 ACCEPT     icmp --  any    any     anywhere             anywhere 
bash-3.2# iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 1 packets, 76 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 2 packets, 2394 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1   893 MASQUERADE  all  --  any    eth1    anywhere             anywhere           

Chain OUTPUT (policy ACCEPT 4 packets, 3363 bytes)
 pkts bytes target     prot opt in     out     source               destination

Проверяю ping с 192.168.1.194, не проходит (с самого сервера все работает), смотрим tcpdump на интерфейсах сервера:
# Интерфейс локальной сети
bash-3.2# tcpdump -i eth0 dst host 8.8.8.8

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:47:38.860237 IP 192.168.1.194 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 661, length 40
13:47:43.631561 IP 192.168.1.194 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 662, length 40
13:47:48.632015 IP 192.168.1.194 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 663, length 40
13:47:53.632488 IP 192.168.1.194 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 664, length 40
# Интерфейс Internet
bash-3.2# tcpdump -i eth1 dst host 8.8.8.8

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
13:48:20.925918 IP 192.168.1.194 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 665, length 40
13:48:25.633501 IP 192.168.1.194 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 666, length 40
13:48:30.633976 IP 192.168.1.194 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 667, length 40
13:48:35.634342 IP 192.168.1.194 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 668, length 40

Что не так и где что подкрутить?

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Re: Не работает MASQUERADE
« Ответ #1 : 26.04.2014 14:48:06 »
В этом месте оно зависит только от ядра, дистрибутив тут вообще не при чём. Два раза пересмотрел, не вижу причины. Кстати, счётчик в выводе "iptables -t nat -L -v" показывает всего один пакет для правила MASQUERADE. Это, явно, неправильно...

А чисто на всякий случай:

apt-get update
apt-get install update-kernel
update-kernel

И "lilo -R <новая метка> && reboot"
« Последнее редактирование: 26.04.2014 14:54:25 от asy »

Оффлайн oberon

  • Участник
  • *
  • Сообщений: 4
Re: Не работает MASQUERADE
« Ответ #2 : 26.04.2014 15:27:54 »
Все уже обновлено:
-bash-3.2# update-kernel
Try to install new kernel kernel-image-el-smp-2.6.32-alt27 and update its modules [y]/n? y
update-kernel: kernel-modules-alsa is installed, trying to update...
update-kernel: kernel-modules-bcmwl is installed, trying to update...
update-kernel: kernel-modules-drm is installed, trying to update...
update-kernel: kernel-modules-drm-nouveau is installed, trying to update...
update-kernel: kernel-modules-drm-radeon is installed, trying to update...
update-kernel: kernel-modules-ndiswrapper is installed, trying to update...
update-kernel: kernel-modules-tp_smapi is installed, trying to update...
update-kernel: kernel-modules-v4l is installed, trying to update...
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Последняя версия kernel-image-el-smp#2.6.32-alt27 уже установлена.
Выбрано kernel-modules-alsa-el-smp#2.6.32-alt27 для 'kernel-modules-alsa-2.6.32-el-smp-alt27'
Последняя версия kernel-modules-alsa-el-smp#2.6.32-alt27 уже установлена.
Выбрано kernel-modules-bcmwl-el-smp#5.60.48.36-alt1.132640.27 для 'kernel-modules-bcmwl-2.6.32-el-smp-alt27'
Последняя версия kernel-modules-bcmwl-el-smp#5.60.48.36-alt1.132640.27 уже установлена.
Выбрано kernel-modules-drm-el-smp#2.6.32-alt27 для 'kernel-modules-drm-2.6.32-el-smp-alt27'
Последняя версия kernel-modules-drm-el-smp#2.6.32-alt27 уже установлена.
Выбрано kernel-modules-drm-nouveau-el-smp#2.6.32-alt27 для 'kernel-modules-drm-nouveau-2.6.32-el-smp-alt27'
Последняя версия kernel-modules-drm-nouveau-el-smp#2.6.32-alt27 уже установлена.
Выбрано kernel-modules-drm-radeon-el-smp#2.6.32-alt27 для 'kernel-modules-drm-radeon-2.6.32-el-smp-alt27'
Последняя версия kernel-modules-drm-radeon-el-smp#2.6.32-alt27 уже установлена.
Выбрано kernel-modules-ndiswrapper-el-smp#1.56-alt1.132640.27 для 'kernel-modules-ndiswrapper-2.6.32-el-smp-alt27'
Последняя версия kernel-modules-ndiswrapper-el-smp#1.56-alt1.132640.27 уже установлена.
Выбрано kernel-modules-tp_smapi-el-smp#0.37-alt2.132640.27 для 'kernel-modules-tp_smapi-2.6.32-el-smp-alt27'
Последняя версия kernel-modules-tp_smapi-el-smp#0.37-alt2.132640.27 уже установлена.
Выбрано kernel-modules-v4l-el-smp#2.6.32-alt27 для 'kernel-modules-v4l-2.6.32-el-smp-alt27'
Последняя версия kernel-modules-v4l-el-smp#2.6.32-alt27 уже установлена.
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.

И грузится он с 2.6.32-alt27, но все равно не работает :(

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Re: Не работает MASQUERADE
« Ответ #3 : 26.04.2014 15:36:54 »
Так. А если совсем всё сбросить (чтобы не вчитываться):

service iptables stop
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j MASQUERADE

Вот тут вообще всё обязано работать без вариантов. Ну и ядро поменять, всё же. Если el-smp стоит, то можно
update-kernel -t ovz-el
или
update-kernel -t std-def

Честно говоря, я у себя el-smp не использую, на 100% за него не готов поручиться. Но, с другой стороны, если бы что-то было не так, про это бы писалось неоднократно.

Оффлайн oberon

  • Участник
  • *
  • Сообщений: 4
Re: Не работает MASQUERADE
« Ответ #4 : 26.04.2014 15:53:19 »
Да, действительно стоял 2.6.32-el-smp-alt27
Сменил ядро:
update-kernel -t ovz-el
И все заработало, спасибо!

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Re: Не работает MASQUERADE
« Ответ #5 : 26.04.2014 16:07:27 »
Оригинально. А если перегрузиться снова с 2.6.32-el-smp-alt27 ? Может, просто помогла перезагрузка, при которой остатки каких-то правил пропали ? Чудеса, если никто не заметил за столько лет.

Кстати, если посмотреть сюда:
http://packages.altlinux.org/en/Platform6/srpms/kernel-image-el-smp
то в p6/t6 последнее - alt31. Непонятно, почему
Цитировать
Последняя версия kernel-image-el-smp#2.6.32-alt27 уже установлена.

Если есть интерес добить до конца, то что показывает apt-repo (но, вероятно, надо доустановить) ? Или, вместо apt-repo, можно
cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list | grep -v "^#\|^[[:space:]]*$"
« Последнее редактирование: 26.04.2014 16:16:40 от asy »

Оффлайн oberon

  • Участник
  • *
  • Сообщений: 4
Re: Не работает MASQUERADE
« Ответ #6 : 26.04.2014 16:34:04 »
В том-то и дело, что если с 2.6.32-el-smp-alt27 грузиться, то не работает, если с ovz-el-2.6.32, то работает.

Кстати, если посмотреть сюда:
http://packages.altlinux.org/en/Platform6/srpms/kernel-image-el-smp
то в p6/t6 последнее - alt31. Непонятно, почему
Репы не были подключены
Обновился до alt31 и все заработало.

Итого, с:
2.6.32-el-smp-alt27 - не работает MASQUERADE
ovz-el-2.6.32 - работает
2.6.32-el-smp-alt31 - тоже работает