GNU/Linux >> Belajar Linux >  >> Linux

Routing Kebijakan Berbasis Sumber &NAT (DNAT/SNAT) alias Multi WAN di CentOS 5

Baiklah...

Setelah ribuan jam debugging, mencoba pengaturan yang berbeda dan 72 jam pengujian berat dalam produksi, saya dapat menemukan solusi/penyiapan yang benar, masalahnya ada di aturan iptables (bagian mangle) paket tampaknya ditandai tepat ketika mereka masuk tetapi ketika mereka keluar tidak ada paket untuk dnat'ted, bagaimanapun ini adalah solusi terakhir saya untuk masalah saya:

/etc/sysconfig/iptables :

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# Basic Rules
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT

# SSH
-A INPUT -i eth0 -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth2 -m tcp -p tcp --dport 22 -j ACCEPT

# OpenVPN
-A INPUT -i eth0 -m udp -p udp --dport 1194 -j ACCEPT
-A INPUT -i eth2 -m udp -p udp --dport 1194 -j ACCEPT

# Allow everything from LAN
-A INPUT -i eth1 -j ACCEPT

# Allow everything from the VPN
-A INPUT -i tun0 -j ACCEPT

# Default Drop on everything else
-A INPUT -j DROP

# Allow forwarding from LAN and VPN
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT

# Allow all outbound traffic
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# DNAT to Developer Box (SSH Server)
-A PREROUTING -i eth0 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 10.0.0.200:2222
-A PREROUTING -i eth2 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 10.0.0.200:2222

# SNAT
-A POSTROUTING -o eth0 -j SNAT --to-source 10.0.1.1
-A POSTROUTING -o eth2 -j SNAT --to-source 10.0.2.1
COMMIT

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# CONNMARK Source Based Routing
-A PREROUTING -i eth0 -m state --state NEW,RELATED,ESTABLISHED -d 10.0.1.1 -j CONNMARK --set-mark 0x2
-A PREROUTING -i eth2 -m state --state NEW,RELATED,ESTABLISHED -d 10.0.2.1 -j CONNMARK --set-mark 0x3
-A PREROUTING -i eth1 -m connmark --mark 0x2 -j CONNMARK --restore-mark
-A PREROUTING -i eth1 -m connmark --mark 0x3 -j CONNMARK --restore-mark
-A OUTPUT -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
COMMIT

Jelas ditambah semua pengaturan sebelumnya yang terkait dengan iproute dan gwping (untuk link load balancing &fail-over), solusinya dimungkinkan berkat sumber [1] &[2], keduanya mengarahkan saya ke bagian yang berbeda (Luca Gibelli untuk bagian PREROUTING dan Karl Bowden untuk bagian OUTPUT) dari solusi, juga saya tinggal di sini beberapa sumber lagi untuk situs web lain yang mengarahkan saya ke arah yang benar untuk mencari. Semoga ini membantu sysadmin lain di masa mendatang.

Salam Hormat

Sumber:

[1]www.nervous.it/2010/09/dnat-and-ip-source-routing-woes/
[2]blog.khax.net/2009/12/01/multi-gateway-balancing-with-iptables/
[3]home.regit.org/netfilter-en/links-load-balancing/
[4]mailman.ds9a.nl/pipermail/lartc/2006q2/018964.html
[5]web.archive.org/web/20120320115329/http://versa.net.au/index.php?option=com_content&task=view&id=21&Itemid=34

Perbarui 10/10/2013

OpenVPN memerlukan direktif konfigurasi tambahan untuk bekerja dengan beberapa pengaturan wan (seperti yang sebelumnya), jadi tambahkan saja opsi multihome di server.conf Anda (OpenVPN>=2.1, untuk versi yang lebih rendah cukup ubah direktif lokal untuk hanya mendengarkan di ip tertentu) dan Anda siap melakukannya.


Linux
  1. Benang:Alat Sumber Terbuka untuk Membuat Game dengan Kata-kata, alias Fiksi Interaktif

  2. Linux:perutean berdasarkan nama domain

  3. IPv6 dan NAT, merutekan ke beberapa ISP

  1. Perutean Sumber Linux, Model Sistem Akhir yang Kuat / Model Host yang Kuat?

  2. Konfigurasi Postfix Untuk Menerima Email Dari Dua Wans?

  3. IPTables Flush:Hapus / Hapus Semua Aturan Di RedHat dan CentOS Linux

  1. Cara Menginstal Apache 2.4.2 dari Sumber di CentOS 6.2 dengan SSL

  2. Cara Menginstal Apache CouchDB di CentOS 6 (dari Sumber dan EPEL)

  3. 7 Langkah Membangun Paket RPM dari Sumber di CentOS / RedHat