История изменений
Исправление Pinkbyte, (текущая версия) :
Средствами одного iptables задача нерешаема, потому что iptables работает на 3 уровне модели OSI и не может знать о всех протоколах более высокого уровня(HTTP, IM и т.д.).
То есть, для того чтобы «англоязычная википедия и, видимо, викимедия, чтобы грузились иллюстрации к статьям.» - данная задача уже подразумевает как минимум знания о DNS(ну или регулярное ручное слежение за обновлением IP-адресов вышеуказанных ресурсов = костыль).
Конкретно эта задача(доступ только по определенным доменным именам по HTTP) решается с помощью прокси-сервера(можно - в прозрачном режиме), например Squid.
Как оставить возможность пользоваться торрентами, IM (Telegram, jabber) и «прочим»?
Определись что такое «прочим» и если устраивает открытие определенных портов - открой их. Но только ты учти, что, например, если есть служба на 80 порту - то это не значит что там будет 100% HTTP. Кстати, обход файрволов, которые полагаются на это правило именно так и делается.
P.S. Нужно ли добавлять DNS сервера, чтобы не вводить ip адреса вручную?
Если ты укажешь DNS-имя в правиле iptables, то оно будет разрешено в первый доступный IP при загрузке правил. Если у ресурса несколько IP - это никак не будет отражено в правилах. Как я уже сказал - iptables ничего не знает о структуре DNS и оперирует именно IP-адресами.
В общем случае твоя задача решается через DPI, но это - совсем не «домашний» уровень.
Исправление Pinkbyte, :
Средствами одного iptables задача нерешаема, потому что iptables работает на 3 уровне модели OSI и не может знать о всех протоколах более высокого уровня(HTTP, IM и т.д.).
То есть, для того чтобы «англоязычная википедия и, видимо, викимедия, чтобы грузились иллюстрации к статьям.» - данная задача уже подразумевает как минимум знания о DNS(ну или регулярное ручное слежение за обновлением IP-адресов вышеуказанных ресурсов = костыль).
Конкретно эта задача(доступ только по определенным доменным именам по HTTP) решается с помощью Squid.
Как оставить возможность пользоваться торрентами, IM (Telegram, jabber) и «прочим»?
Определись что такое «прочим» и если устраивает открытие определенных портов - открой их. Но только ты учти, что, например, если есть служба на 80 порту - то это не значит что там будет 100% HTTP. Кстати, обход файрволов, которые полагаются на это правило именно так и делается.
P.S. Нужно ли добавлять DNS сервера, чтобы не вводить ip адреса вручную?
Если ты укажешь DNS-имя в правиле iptables, то оно будет разрешено в первый доступный IP при загрузке правил. Если у ресурса несколько IP - это никак не будет отражено в правилах. Как я уже сказал - iptables ничего не знает о структуре DNS и оперирует именно IP-адресами.
В общем случае твоя задача решается через DPI, но это - совсем не «домашний» уровень.
Исходная версия Pinkbyte, :
Средствами одного iptables задача нерешаема, потому что iptables работает на 3 уровне модели OSI и не может знать о всех протоколах более высокого уровня(HTTP, IM и т.д.).
То есть, для того чтобы «англоязычная википедия и, видимо, викимедия, чтобы грузились иллюстрации к статьям.» - данная задача уже подразумевает как минимум знания о DNS(ну или регулярное ручное слежение за обновлением IP-адресов вышеуказанных ресурсов = костыль).
Конкретно эта задача(доступ только по определенным доменным именам по HTTP) решается с помощью Squid.
Как оставить возможность пользоваться торрентами, IM (Telegram, jabber) и «прочим»?
Определись что такое «прочим» и если устраивает открытие определенных портов - открой их. Но только ты учти, что, например, если есть служба на 80 порту - то это не значит что там будет 100% HTTP. Кстати, обход файрволов, которые полагаются на это правило именно так и делается.