Вчера я получил новый компьютер в качестве домашнего сервера - HP Proliant Microserver. На нем установлен Arch Linux с версией ядра 3.2.12.
После установки iptables (1.4.12.2 - текущая версия AFAIK) и изменения net.ipv4.ip_forward
ключ к 1 и включение пересылки в файле конфигурации iptables (и перезагрузка), система не может использовать ни один из своих сетевых интерфейсов. Пинг не работает с
Ping: sendmsg: operation not permitted
Если я полностью удалю iptables, с сетью все в порядке, но мне нужно использовать подключение к Интернету в локальной сети.
eth0 - wan NIC, встроенный в материнскую плату (Broadcom NetXtreme BCM5723).
eth1 - LAN NIC в слоте pci-express (Intel 82574L Gigabit Network)
Поскольку он работает без iptables (сервер может получить доступ к Интернету, а я могу войти в систему с помощью ssh из внутренней сети), я предполагаю, что это как-то связано с iptables. У меня нет большого опыта работы с iptables, поэтому я использовал их как ссылку (конечно, отдельно друг от друга ...):
wiki.archlinux.org/index.php/Simple_stateful_firewall#Setting_up_a_NAT_gateway
revsys.com/writings/quicktips/nat.html
На моем предыдущем сервере я использовал руководство revsys для настройки nat, работало отлично.
Кто-нибудь испытывал подобное раньше? Что я делаю не так?
Сообщение об ошибке:
Ping: sendmsg: operation not permitted
означает, что вашему серверу не разрешено отправлять ICMP-пакеты. Вам необходимо разрешить серверу отправлять трафик через один или несколько настроенных интерфейсов. Вы можете сделать это:
Устанавливать OUTPUT
цепная политика ACCEPT
чтобы разрешить весь исходящий трафик из вашего ящика:
sudo iptables -P OUTPUT ACCEPT
OUTPUT
цепная политика DROP
а затем разрешите выборочно нужный тип трафика.Это касается всех цепочек, а не только OUTPUT
цепь. INPUT
цепочка контролирует трафик, получаемый вашим ящиком. FORWARD
цепочка обрабатывает трафик, пересылаемый через ящик.
Мне на Debian 9 помогло просто переустановить ping
:
apt-get install --reinstall iputils-ping
Если вы поддерживаете правильный набор iptables, вам необходимо разрешить исходящий пинг:
# Allow outgoing ping
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT