В чем разница между PREROUTING и FORWARD в iptables?

Хорошо, это будет шаг за шагом:

Наш виджет будет называться AwesomeTextView, модуль, в котором он находится, будет называться awesome_text_view. Это единственные имена, которые нам нужны.

Виджет поляны состоит из двух частей: модуля и каталога.

Мы создаем каталог awesome_text_view.xml и (как root) сохраняем его в /usr/share/glade3/catalogs/. Это как это выглядит:
<glade-catalog name="awesome_text_view"
    library="gladepython"
    domain="glade-3"
    depends="gtk+">

 <init-function>glade_python_init</init-function>

 <glade-widget-classes>
   <glade-widget-class title="Awesome TextView"
    name="AwesomeTextView"
    generic-name="awesome_text_view"/>
 </glade-widget-classes>

 <glade-widget-group name="python" title="Python">
   <glade-widget-class-ref name="AwesomeTextView"/>
 </glade-widget-group>
</glade-catalog>
Вы должны скопировать и адаптировать этот шаблон, поскольку он работает. :-) Мы создаем модуль awesome_text_view.py и (снова как root) сохраняем его на /usr/lib/glade3/modules/. Вот что это выглядит:
import gobject
import gtk
import pango


class AwesomeTextView (gtk.TextView):

    __gtype_name__ = 'AwesomeTextView'

    def __init__(self):
        gtk.TextView.__init__(self)

    def set_font(self, font_description):
        self.modify_font(pango.FontDescription(font_description))
Теперь он отображается в Glade, и вы можете добавить его в свое приложение. Наконец, вам просто нужно
    export PYTHONPATH="$PYTHONPATH:/usr/lib/glade3/modules/"

Вот и все!

Вот небольшое тестовое приложение, показывающее, как использовать ваш виджет:

import gtk
import awesome_text_view

class App (object):

    builder = gtk.Builder()

    def __init__(self):
        self.builder.add_from_file("test.glade")
        self.builder.connect_signals(self)
        self.builder.get_object("awesome_text_view1").set_font("mono")
        gtk.main()

    def on_window1_destroy(self, widget):
        gtk.main_quit()


App()
1
задан 1 September 2017 в 01:12

1 ответ

PREROUTING: эта цепочка используется для принятия любых связанных с маршрутизацией решений до (PRE) отправки любых пакетов. Всегда помните, что в таблице PREROUTING/POSTROUTING i.e. NAT цели ACCEPT/DROP/REJECT и т.д. таблицы по умолчанию FILTER не будут работать. Таблица NAT используется только для принятия решений о маршрутизации. Вы должны использовать PREROUTING при принятии любых решений о маршрутизации, то есть решениях, которые необходимо предпринять, прежде чем пакет начнет перемещаться по сети. Вот пример, мы перенаправляем любой трафик, который только что достиг сервера на порт 80, на порт 8080:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

PREROUTING : Как следует из названия, The FORWARD Цепочка таблицы FILTER используется для пересылки пакетов из источника в пункт назначения, здесь источник и получатель - это два разных хоста. Итак, как вы можете себе представить, правила FORWARD в основном используются на серверах, где один хост отправляет / получает трафик с другого хоста через сервер. Когда пакет генерируется с сервера, цепочка является OUTPUT, то есть трафик выходит из себя, тогда как цепочка INPUT означает, что пакеты предназначены только для самого сервера. Вот пример цепочки FORWARD, где любой TCP трафик, полученный на порту 80 на интерфейсе eth0, предназначенный для хоста 192.168.0.4, будет принят и отправлен на 192.168.0.4:

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT
3
ответ дан 23 May 2018 в 23:45
  • 1
    Ваше использование «хостов» кажется странным. Какая таблица используется, когда зависит прежде всего от локальных интерфейсов, в которые входит пакет и предназначен для выхода. – guntbert 29 January 2015 в 18:19
  • 2
    какая часть кажется странной? я использовал понятие хостов для указания отправки & amp; принимающих сторон .. – heemayl 29 January 2015 в 18:27
  • 3
    Я говорю о параграфе FORWARD: эта таблица используется, когда пакет, проходящий через один интерфейс, предназначен для другого интерфейса (в отличие от локального хоста) – guntbert 29 January 2015 в 18:34
  • 4
    oh..ok..i получил это .... да, я должен использовать интерфейс .... просто используйте хосты, чтобы упростить изображение. Я изменил бы это, когда я буду infront моего компьютера. – heemayl 29 January 2015 в 18:40
  • 5
    @guntbert: я только что получил голову. не прочитал ваш последний комментарий достаточно тщательно. Я думаю, вы ошибаетесь в контексте двух разных интерфейсов для цепочки FORWARD. Когда пакеты переносятся с одного хоста локальной сети на другой хост локальной сети, пакеты будут проходить через один интерфейс, а используемая цепочка будет FORWARD, хотя здесь сервер (среда) не будет действовать как маршрутизатор в строгий смысл скорее можно рассматривать как коммутатор. – heemayl 29 January 2015 в 19:59

Другие вопросы по тегам:

Похожие вопросы: