Hairpin nat mikrotik – Acesso na intranet não funciona com direcionamento de portas

by https://wiki.mikrotik.com/wiki/Hairpin_NAT

Hairpin NAT
In the below network topology a web server behind a router is on private IP address space, and the router performs NAT to forward traffic to its public IP address to the web server behind it.

The NAT configuration would look like below:

/ip firewall nat
add chain=dstnat dst-address=1.1.1.1 protocol=tcp dst-port=80 \
action=dst-nat to-address=192.168.1.2
add chain=srcnat out-interface=WAN action=masquerade
When a client out on the Internet with IP address 2.2.2.2 establishes a connection to the web server, the router performs NAT as configured.

the client sends a packet with a source IP address of 2.2.2.2 to a destination IP address of 1.1.1.1 on port tcp/80 to request some web resource.
the router destination NATs the packet to 192.168.1.2 and replaces the destination IP address in the packet accordingly. The source IP address stays the same: 2.2.2.2.
the server replies to the client’s request and the reply packet has a source IP address of 192.168.1.2 and a destination IP address of 2.2.2.2.
the router determines that the packet is part of a previous connection and undoes the destination NAT, and puts the original destination IP address into the source IP address field. The destination IP address is 2.2.2.2, and the source IP address is 1.1.1.1.
The client receives the reply packet it expects, and the connection is established.

When a client on the same internal network as the web server requests a connection to the web server’s public IP address, the connection breaks.

the client sends a packet with a source IP address of 192.168.1.10 to a destination IP address of 1.1.1.1 on port tcp/80 to request some web resource.
the router destination NATs the packet to 192.168.1.2 and replaces the destination IP address in the packet accordingly. The source IP address stays the same: 192.168.1.10.
the server replies to the client’s request. However, the source IP address of the request is on the same subnet as the web server. The web server does not send the reply back to the router, but sends it back directly to 192.168.1.10 with a source IP address in the reply of 192.168.1.2.
The client receives the reply packet, but it discards it because it expects a packet back from 1.1.1.1, and not from 192.168.1.2. As far as the client is concerned the packet is invalid and not related to any connection the client previously attempted to establish.

To fix the issue, an additional NAT rule needs to be introduced on the router to enforce that all reply traffic flows through the router, despite the client and server being on the same subnet. The rule below is very specific to only apply to the traffic that the issue could occur with – if there are many servers the issue occurs with, the rule could be made broader to save having one such exception per forwarded service.

/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 \
dst-address=192.168.1.2 protocol=tcp dst-port=80 \
out-interface=LAN action=masquerade
Hairpin nat 4.png

With that additional rule, the flow now changes:

the client sends a packet with a source IP address of 192.168.1.10 to a destination IP address of 1.1.1.1 on port tcp/80 to request some web resource.
the router destination NATs the packet to 192.168.1.2 and replaces the destination IP address in the packet accordingly. It also source NATs the packet and replaces the source IP address in the packet with the IP address on its LAN interface. The destination IP address is 192.168.1.2, and the source IP address is 192.168.1.1.
the web server replies to the request and sends the reply with a source IP address of 192.168.1.2 back to the router’s LAN interface IP address of 192.168.1.1.
the router determines that the packet is part of a previous connection and undoes both the source and destination NAT, and puts the original destination IP address of 1.1.1.1 into the source IP address field, and the original source IP address of 192.168.1.10 into the destination IP address field.
The client receives the reply packet it expects, and the connection is established.

However, the web server only ever sees a source IP address of 192.168.1.1 for all requests from internal clients regardless of the internal client’s real IP address. There is no way to avoid this without either using a router that can do application level DNS inspection and can rewrite A records accordingly, or a split DNS server that serves the internal clients the internal server IP address and external clients the external server IP address.

This is called – among other terms – hair pin NAT because the traffic flow has clients enter the router through the same interface it leaves through, which when drawn looks like a hair pin.

Firebird 1.5 no Windows 10 – Restaurando após atualização que o removeu

por Daniel Pozzebon

Copiar a pasta Firebird 1.5 de uma instalação do firebird 1.5
Deixando a mesma estrutura:
C:\\Program Files (x86)\\Firebird\\Firebird_1_5 (e seus respectivos arquivos)
ou
depois que o windows é atualizado a pasta é movida para C:\\Windows.old\\Program Files (x86)

É só copiar novamente a pasta C:\\Program Files (x86)\\Firebird\\Firebird_1_5

Depois executando o CMD (Prompt do DOS) como administrador realizar os seguintes passos:
Estando no diretório bin do Firebird, devemos instalar o serviço e depois colocá-lo em
execução:
Digite: instsvc i –s –a –g
(este comando cria o serviço do Firebird no Windows.)
instsvc sta (Inicia o serviço)

E por último copiar a DLL GDS32.DLL para a pasta C:\\Windows\\Windows\\SysWOW64
Que também foi movida para C:\\Windows.old\\Windows\\SysWOW64.

Montar volume LVM como slave em linux. ERRO “UNKNOWN FILESYSTEM TYPE ‘LVM2_MEMBER'” –

Por Gabriel Fernande em vivaolinux.com.br

Se você tiver mais de uma distro instalada com discos LVMs e desejar ler o conteúdo da partição LVM da outra versão Linux instalada ou até mesmo para simplesmente ler informações de qualquer HD com partições LVM na sua distro atual, provavelmente você tentaria montar a partição com um comando parecido com este:

# mount /dev/sda1 /media/tmp 

Pois é, eu também fiz isto e me deparei com o tal “unknown filesystem type ‘LVM2_member'”.

Para montarmos estes tipos de volumes lógicos, sem alterar qualquer volume lógico e manter funcionando a outra instalação, devemos seguir algumas simples etapas, segue (use usuário root).

Digite o comando no console:

# pvs 

O comando acima deve ter uma saída parecida com esta, exibindo todos os grupos de volumes configurados:

  PV         VG           Fmt  Attr PSize  PFree
  /dev/sda2  vg_fernandes lvm2 a-   74,33G    0 
  /dev/sdb3  vg_fernandex lvm2 a-   74,63G    0

No meu caso o Grupo de Volume (VG – volume group) da minha outra instalação Linux é o vg_fernandex configurado no Volume Físico (PV – physical volume) em /dev/sdb3.

Agora que sabemos que nosso Grupo de Volume é vg_fernandex, utilizaremos o comando abaixo para listar os Volumes Lógicos (LV – logical volumes). Digite o comando no console:

# lvdisplay vg_fernandex 

Este comando deve ter uma saída próxima a esta abaixo, exibindo todos os Volumes Lógicos e suas propriedades:

  --- Logical volume ---
  LV Name                /dev/vg_fernandex/lv_root
  VG Name                vg_fernandex
  LV UUID                4ZjsBJ-VnKQ-xAN3-O0x7-PD1W-Itc4-1q5pZ0
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                69,72 GB
  Current LE             17849
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Name                /dev/vg_fernandex/lv_swap
  VG Name                vg_fernandex
  LV UUID                aCjfhN-rUi3-uy0n-fXEW-TKNG-pit3-f0IYYV
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                4,91 GB
  Current LE             1256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

Neste caso o Volume Lógico que desejamos montar é o /dev/vg_fernandex/lv_root, para isto vamos executar mais um comando:

# mount /dev/vg_fernandex/lv_root /media/outro_hd 

* (/media/outro_hd: não esqueça de criar este ou outro diretório para o destino da montagem antes de efetuar o comando)

Feito, agora seu hd está disponível na sua outra instalação Linux, sem que qualquer configuração do LVM seja alterada.

Simples configuração de um servidor NTP

Uso homologado: CentOS 7

yum install ntp ntpdate

etc/ntp.conf

driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/

# liberando somente esses ips para consulta em nosso ntp server na nossa lan
restrict 127.0.0.1
restrict ::1
restrict 192.168.2.0 mask 255.255.255.0
restrict 192.168.254.0 mask 255.255.255.0

# onde busco o horário para sincronização.
server a.ntp.br
server b.ntp.br
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor

systemctl enable ntpd

LVM – Aumentando volume de uma partição

Ferramentas para consulta

Antes de irmos em frente, vamos ver mais algumas ferramentas LVM para exibir o status dos nossos dispositivos. Lembre-se de que temos três componentes diferentes que compõem uma partição LVM completa, o volume físico (PV, ou Physical Volume), o grupo de volume (VG, ou Volume Group) e o volume lógico (LV, ou Logical Volume).

Vamos dar uma olhada no volume físico (PV).

# pvdisplay
--- Physical volume ---
PV Name /dev/sde1
VG Name system
PV Size 7.48 GB / not usable 3.79 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 1915
Free PE 1915
Allocated PE 0
PV UUID 7vkgGI-e402-K3hE-XGJz-kl4C-nI7o-oFqwA8

Aqui podemos ver o nome do volume físico (a partição física que criamos), o grupo de volume ao qual a partição foi atribuída (que chamamos de sistema) e outras informações relativas ao tamanho do volume.

Vamos dar uma olhada no grupo de volume (VG).

# vgdisplay
--- Volume group ---
VG Name system
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 7.48 GB
PE Size 4.00 MB
Total PE 1915
Alloc PE / Size 1280 / 5.00 GB
Free PE / Size 635 / 2.48 GB
VG UUID Z6TSXO-0DQ3-7Jiz-67k2-dEkY-dYR2-RNJE85

Aqui temos o nome do grupo de volume (que chamamos de sistema), seu tipo (lvm2), seu espaço total e o espaço que já foi atribuído (lembre-se de que criamos dois volumes lógicos, root e home).

Finalmente, vejamos o volume lógico (LV).

# lvdisplay
--- Logical volume ---
LV Name /dev/system/linux
VG Name system
LV UUID L0qrZu-bwCp-rnEu-uJry-4j3n-XBLB-OWsXVx
LV Write Access read/write
LV Status available
# open 0
LV Size 2.00 GB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Name /dev/system/home
VG Name system
LV UUID AScHe0-q5sJ-F8eH-bYRy-3URL-Nt7m-0UFduW
LV Write Access read/write
LV Status available
# open 0
LV Size 3.00 GB
Current LE 768
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1

Aqui temos as duas partições que criamos, home e Linux. Observe que o volume físico (PV) e o grupo de volume (VG) também possuem um identificador único, que o Linux usa para detectar e controlar os dispositivos.


AUMENTAR O VOLUME DE UMA PARTIÇÃO

Agora que está usando o LVM, se você ficar sem espaço em uma partição, só terá que dizer ao LVM para atribuir mais espaço ao dispositivo em particular e redimensionar o sistema de arquivos. Embora você possa encolher partições, é bem mais seguro aumentá-las. Por isso eu recomendo a você nunca atribuir o tamanho total do volume físico aos volumes lógicos, mas sim começar pequeno e ir aumentando conforme a necessidade. Se estiver usando um sistema de arquivos ext, isso pode ser feito mesmo com as partições montadas (alguns outros sistemas de arquivos também permitem fazer isso).

A situação atual é esta, com 100% de utilização.

# df -h
/dev/mapper/system-linux 2.0G 2.0G 0 100% /media/linux

Primeiro, aumente o volume lógico em 1 GB.

# lvresize -L +1G /dev/system/linux
Extending logical volume linux to 3.00 GB
Logical volume linux successfully resized

Agora que aumentamos o dispositivo, temos que redimensionar o sistema de arquivos

# resize2fs /dev/system/linux
Filesystem at /dev/system/linux is mounted on /media/linux; on-line resizing required
Resizing the filesystem on /dev/system/linux to 786432 (4k) blocks.
The filesystem on /dev/system/linux is now 786432 blocks long.
1

Depois de redimensionar o sistema de arquivos, eis o resultado.

1
# df -h
/dev/mapper/system-linux 3.0G 2.0G 855M 71% /media/linux

Se quiser adicionar outro HD ao computador, basta instalá-lo no computador e repetir as etapas 1 e 2. Como o grupo de volume já existe, não é preciso criá-lo como na etapa 3. Em vez disso, adicione-o ao grupo existente.

# vgextend system /dev/sdf1
Volume group "system" successfully extended

Agora você tem um disco inteiro novinho como espaço LVM adicional, pronto para ser atribuído a qualquer volume lógico que você quiser.
É assim que você pode usar o LVM para expandir e atribuir espaço na mesma hora, sem ter que mover dados ou desligar o computador!

OUTRO EXEMPLO:

[root@server uferes]# /usr/sbin/lvresize  -L +1G /dev/rootvg/root
  Extending logical volume root to 4,00 GB
  Logical volume root successfully resized

[root@server uferes]# /sbin/resize2fs /dev/rootvg/root