Здравствуйте, уважаемые форумчане!
Есть сервер на CentOS с двумя сетевыми интерфейсами, один смотрит в LAN второй в WAN, на сервере стоит IPtables + NAT.
Так вот клиенты из локальной сети ходят в инет нормально, при этом, если зайти на сам этот сервер (по ssh) и с него попытаться что-то скачать с интернета - ошибка. Если остановить службу IPtables - вроде качает.
Перепробовал уже массу вариантов, перечитал кучу инфы, полдня бьюсь и не могу решить, помогите, пожалуйста.
Конфиг IPtables ниже, заранее благодарен.
Так у вас весь INPUT дропается, а http(s) входящий не разрешается, вот ничего и не качается.
Но разрешается всё через eth2:
-A INPUT -s 192.168.0.0/255.255.254.0 -i eth2 -j ACCEPT
Так у вас весь INPUT дропается, а http(s) входящий не разрешается, вот ничего и не качается.
Но разрешается всё через eth2:
-A INPUT -s 192.168.0.0/255.255.254.0 -i eth2 -j ACCEPT
Спасибо за ответ, но мне входящий http(s) на сервере не нужен. Я по SSH захожу на сервер и качаю (wget http://...) но в ответ тишина.
такое чувство что на localhost не распространяется NAT. TCPdump показывает 192.168.10.1.44607 > 1.1.1.1.ftp затем ответ 1.1.1.1.ftp > 192.168.10.1.44607, т.е. ответ идет, но похоже его рубит файрвол, а вот разрешить его не выходит
surecom_16
Что-то у Вас толсто все получилось.
Давайте так поробуем
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo ! -d 127.0.2.0/24 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 67:68 --dport 67:68 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 123 -j ACCEPT
-A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -j LOG --log-prefix "IN eth0: "
Спасибо за ответ, Вы имеете в виду добавить эти правила?
-A INPUT -i lo ! -d 127.0.2.0/24 -j ACCEPT - здесь имелось в виду 127.0.0.1/24
Заменить свои не могу, т.к. сервер физически находится за 60 км от меня, и если уберу проброс портов, утрачу к нему доступ.
192.168.10.1/24 dev eth0 proto kernel scope link src 192.168.10.10
192.168.0.0/23 dev eth2 proto kernel scope link src 192.168.1.1
169.254.0.0/16 dev eth2 scope link
default via 192.168.10.10 dev eth0
Заменить свои не могу, т.к. сервер физически находится за 60 км от меня, и если уберу проброс портов, утрачу к нему доступ.
Тебе все равно придется добавлять/удалять правила на живом сервере, по этому, чтобы себя подстраховать, поставь в cron скрипт, который будет очищать все правила во всех таблицах и делать всему и вся ACCEPT (или просто возврат к предыдущим правилам), каждые n минут. Таким образом, если накосячишь (а шанс существует), то через n-минут сново попадаешь на сервер, правда иптаблес будет полностью чистый. А когда закончишь с правилами, удалишь из крона запись.
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo ! -d 127.0.2.0/24 -j ACCEPT - здесь имелось в виду 127.0.0.1/24
Это должно идти так, как я Вам написал, в том порядке.
Я Вам написал правила для цепочки филтер - это рабочие правила.
При условии что у Вас интерфейс eth0 - смотрит в интернет.
Дело в том, что в твоих правилах для церпочки инпут НЕТУ правил, разрешающих принимать пакеты по TCP протоколу, только 22 и 53 (ненужный) порт.
Вот поэтому я и предложил свой вариант. Или если хочешь подстраховаться тогда так
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo ! -d 127.0.2.0/24 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 67:68 --dport 67:68 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 53 --dport 53 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 123 --dport 123 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -j LOG --log-prefix "IN eth0: "