iptables: Como encaminhar pacotes com a porta de destino 80 de eth0 para eth1?

2

Eu tenho tráfego http e https vindo de várias máquinas para minha eth0 em minha máquina Linux, mas quero encaminhar esse tráfego para a eth1 que tem acesso à internet. E faça a operação complementar de tráfego proveniente de 80 e 443 para ser roteada de eth1 para eth0 para que eles atinjam as máquinas que criaram as solicitações da web.

Eu tentei os seguintes comandos do iptables, mas isso não ajudou:

iptables -A FORWARD -p tcp --dport 80 -o eth1 -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -o eth0 -j ACCEPT

Não sei como fazer isso.

=====================

Saída de ip addr show

$ /sbin/ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    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 qlen 1000
    link/ether <mac_address_of_eth0> brd ff:ff:ff:ff:ff:ff
    inet 10.10.12.131/24 brd 10.10.12.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether <mac_address_of_eth1> brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.1/24 brd 172.16.1.255 scope global eth1
    
por Srikanth 15.10.2012 / 12:22

2 respostas

3

Em primeiro lugar, essa é uma pergunta muito parecida com o encaminhamento de iptables entre duas interfaces .

Dito isso, você deseja que seu host se torne um gateway, mas mais específico, apenas para os protocolos HTTP e HTTPS (80/443). Para conseguir isso, você deve:

  1. Poder encaminhar o tráfego entre essas duas interfaces
  2. Encaminhar pacotes com porta de destino 80 (HTTP)
  3. Encaminhar pacotes com porta de destino 443 (HTTPS)
  4. Como iptables ( netfilter ) é um stateless packet filtering system , aceita pacotes que estão voltando
  5. NAT de origem (altere o endereço IP de origem) para o IP do seu host

Traduzido para o iptables:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80  -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED \
   -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Desde que os outros hosts da sua rede usem seu host para acessar a Internet (o que significa que sua caixa do Linux se comporta como um gateway).

    
por 15.10.2012 / 12:43
0

Supondo que a eth1 tenha um endereço de internet público, parece que você deseja que sua caixa do Linux se torne um roteador, provavelmente com a funcionalidade NAT / Masquerade. Veja link para um dos muitos exemplos.

Os IPtables que você deu simplesmente permitem que tráfego HTTP seja encaminhado através de sua caixa Linux, caso eles cheguem, você precisará garantir que seus clientes usem sua caixa Linux como um gateway para fazer isso acontecer.

    
por 15.10.2012 / 13:05