Portál AbcLinuxu, 13. května 2025 10:37

Dotaz: 2 sitovky bez NAT FreeBSD

16.12.2009 13:02 Pavel
2 sitovky bez NAT FreeBSD
Přečteno: 670×
Odpovědět | Admin
Ahoj, potřebuju poradit na FreeBSD 7.2 Potřebuju zprovoznit 2 síťovky. Problém je, že mi ta druhá ne a ne najet, už nevím co s tím. muj /etc/rc.conf:
...
defaultrouter="x.x.x.254"
ifconfig_bge0="inet x.x.x.58 netmask 255.255.255.0"
ifconfig_bge1="inet x.x.x.59 netmask 255.255.255.0"
...
Původně jsem měl zprovozněnu jen jednu síťovku a jede mi na ní webserver. Přidal jsem konektivitu do druhé síťovky, stav je ACTIVE, IP přiřazena a vše se tváří jak má. Obě síťovky jdou do stejného switche u providera. Problém je, že na bge1 si zvenku nepingnu, bge0 funguje ok a služby mi na ní běží. Provider říká, že je vše OK. Chci mít 2 webservery případně jiné služby na jednom PC, které má 2 síťové rozhraní s fyzicky různými IP a potřebuju to rozjet.
Mám i PF, ten je nastaven dobře (po zprovoznění druhé síťovky jsem zkopíroval pravidla pro první síťovku a změnil na druhou, akorát poměnil adresy).
Děkuji moc za rady, nevím už co s tím. NAT nechci, chci mít v podstatě jedno PC s 2 veřejnými adresami.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.12.2009 13:28 Pavel
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jeste posilam svoje konfiguraky. Dekuju moc za radu. Vlastne jde o to, ze chci mit polskou firmu na jedne IP a slovenskou firmu na druhe IP. To vse na jedne masine.

/etc/rc.conf:
# -- sysinstall generated deltas -- # Fri Aug 14 18:31:53 2009
# Created: Fri Aug 14 18:31:53 2009
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
defaultrouter="x.x.x.254"
hostname="jmeno1.firma.pl"
ifconfig_bge0="inet x.x.x.58  netmask 255.255.255.0"
ifconfig_bge1="inet x.x.x.59  netmask 255.255.255.0"
inetd_enable="NO"
keymap="us.iso"
sshd_enable="YES"
# Packet Filter
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""
gateway_enable="NO"
spamd_enable="YES"
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
amavisd_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
sendmail_flags="-bd -q3m"
courier_authdaemond_enable="YES"
courier_imap_pop3d_ssl_enable="YES"
courier_imap_imapd_enable="YES"
courier_imap_imapd_ssl_enable="YES"
postfix_enable="YES"
mysql_enable="YES"
mysql_dbdir="/var/db/mysql"
apache22_enable="YES"
/etc/pf.conf:
## Macros
SYN_ONLY="S/FSRA"
EXT_NIC0="bge0"
EXT_NIC1="bge1"

# Your Internet IP goes in the EXT_IP variable
EXT_IP1="x.x.x.58"
EXT_IP2="x.x.x.59"


## TABLES 


## GLOBAL OPTIONS 


## TRAFFIC NORMALIZATION 
scrub in on $EXT_NIC0 all fragment reassemble
scrub out on $EXT_NIC0 all fragment reassemble random-id no-df
scrub in on $EXT_NIC1 all fragment reassemble
scrub out on $EXT_NIC1 all fragment reassemble random-id no-df

## QUEUEING RULES


## TRANSLATION RULES (NAT)


## FILTER RULES 

# Block everything (inbound AND outbound on ALL interfaces) by default (catch-all)
block all

# Default TCP policy
block return-rst in log on $EXT_NIC0 proto TCP all
block return-rst in log on $EXT_NIC1 proto TCP all
pass in log quick on $EXT_NIC0 proto TCP from any to $EXT_IP1 port 8086 flags $SYN_ONLY keep state
pass in log quick on $EXT_NIC1 proto TCP from any to $EXT_IP2 port 8086 flags $SYN_ONLY keep state
# pass in log quick on $EXT_NIC proto TCP from any to $EXT_IP port 113 flags $SYN_ONLY keep state
# pass in log quick on $EXT_NIC proto TCP from any to $EXT_IP port 110 flags $SYN_ONLY keep state
# pass in log quick on $EXT_NIC proto TCP from any to $EXT_IP port 143 flags $SYN_ONLY keep state
pass in log quick on $EXT_NIC0 proto TCP from any to $EXT_IP1 port 25 flags $SYN_ONLY keep state
pass in log quick on $EXT_NIC1 proto TCP from any to $EXT_IP2 port 25 flags $SYN_ONLY keep state
pass in log quick on $EXT_NIC0 proto TCP from any to $EXT_IP1 port 995 flags $SYN_ONLY keep state
pass in log quick on $EXT_NIC1 proto TCP from any to $EXT_IP2 port 995 flags $SYN_ONLY keep state
# SMTPS? pass in log quick on $EXT_NIC proto TCP from any to $EXT_IP port 465 flags $SYN_ONLY keep state
pass in log quick on $EXT_NIC0 proto TCP from any to $EXT_IP1 port 443 flags $SYN_ONLY keep state
pass in log quick on $EXT_NIC1 proto TCP from any to $EXT_IP2 port 443 flags $SYN_ONLY keep state
# MYSQL  pass in log quick on $EXT_NIC proto TCP from any to $EXT_IP port 3306 flags $SYN_ONLY keep state
# AMAVISD pass in log quick on $EXT_NIC proto TCP from any to $EXT_IP port 10024 flags $SYN_ONLY keep state
antispoof for $EXT_NIC0 inet
antispoof for $EXT_NIC1 inet

# Default UDP policy
block in log on $EXT_NIC0 proto udp all
block in log on $EXT_NIC1 proto udp all
   # It's rare to be hosting a service that requires UDP (unless you are hosting 
   # a dns server for example), so there typically won't be any entries here.

# Default ICMP policy
block in log on $EXT_NIC0 proto icmp all
   pass in log quick on $EXT_NIC0 proto icmp from any to $EXT_IP1 icmp-type 0 keep state
   pass in log quick on $EXT_NIC0 proto icmp from any to $EXT_IP1 icmp-type 8 keep state
block in log on $EXT_NIC1 proto icmp all
   pass in log quick on $EXT_NIC1 proto icmp from any to $EXT_IP2 icmp-type 0 keep state
   pass in log quick on $EXT_NIC1 proto icmp from any to $EXT_IP2 icmp-type 8 keep state
block out log on $EXT_NIC0 all
   pass out log quick on $EXT_NIC0 from $EXT_IP1 to any keep state
block out log on $EXT_NIC1 all
   pass out log quick on $EXT_NIC1 from $EXT_IP2 to any keep state   

# Allow the local interface to talk unrestricted
pass in quick on lo0 all
pass out quick on lo0 all

/etc/hosts:
::1			localhost localhost.firma.pl
127.0.0.1		localhost localhost.firma.pl
x.x.x.58		jmeno1.firma.pl jmeno1
x.x.x.58		jmeno1.firma.pl.

# nema tady byt jeste toto?
x.x.x.59		jmeno2.firma.sk jmeno2
x.x.x.59		jmeno2.firma.sk.
ifcfg output:
bge0: flags=8843< UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST > metric 0 mtu 1500
	options=9b< RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM >
	ether aa:aa:aa:aa:aa:32
	inet x.x.x.58 netmask 0xffffff00 broadcast x.x.x.255
	media: Ethernet autoselect (100baseTX < full-duplex >)
	status: active
bge1: flags=8843< UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST > metric 0 mtu 1500
	options=9b< RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM >
	ether aa:aa:aa:aa:aa:33
	inet x.x.x.59 netmask 0xffffff00 broadcast x.x.x.255
	media: Ethernet autoselect (100baseTX < full-duplex >)
	status: active
lo0: flags=8049< UP,LOOPBACK,RUNNING,MULTICAST > metric 0 mtu 16384
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 
	inet6 ::1 prefixlen 128 
	inet 127.0.0.1 netmask 0xff000000 
pflog0: flags=141< UP,RUNNING,PROMISC > metric 0 mtu 33160
cynic_asshole avatar 16.12.2009 14:24 cynic_asshole | skóre: 28
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak nač tam máš dvě síťovky? Stačí jedna, a tu druhou IP adresu si nastav jako alias.
Neznáš nějakou linuxovou distribuci pro Windows?
16.12.2009 14:31 chsajarsa | skóre: 16 | blog: V_hlouby_destneho_pralesa | Lovosice(Praha)
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Odpovědět | | Sbalit | Link | Blokovat | Admin
Neni to proste tim, ze server na pingi odpovida z jineho zarizeni nez na ktere prisli ?

Pokud mate sitovky ve stejnem switchy nebylo by elegantnejsi pouzit nejaky ether channel(LACP nebo i round robin) a dat druhou ip jako virtualni ? V prapade vypadku jedne sitovky vam pobezi veskery provoz.
~ QED ~
16.12.2009 16:50 zvoxjr
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
No, jde o to, ze chci mit webserver SSL a nechci, aby museli klienti pouzivat SNI-kompatibilni prohlizece. Cili jedna IP jedna domena, nic vic na tom serveru nepobezi. Jde to nejak spravne nastavit nebo vidite v nastaveni chybu?
16.12.2009 19:13 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Ano, lze to správně nastavit i s jedinou síťovou kartou. Počet IP nebo doménových adres opravdu nemá co dělat s počtem síťových rozhraní.
16.12.2009 20:30 zvoxjr
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Ano, lze, pres VirtualHost SSL. Problem je, ze ne vsechny prohlizece podporuji TLS Extensions resp. SNI a pak se v prohlizeci ukazuje chyba certifikatu u koncoveho uzivatele. Zkonfigurovano to mam pres jedinou sitovku, to mi jede, potrebuju to akorat rozhodit na dve sitovky. Jde mi o to v podstate, jak nastavim jinou gateway pro kazdou sitovou kartu, protoze v rc.conf je pouze defaultrouter 1x a nevim jak priradit jinou branu pro druhou sitovku. diky
16.12.2009 23:01 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Nepotřebujete SNI, když vysvětlíte HTTPS serveru, aby vybral certifikát a virtual host podle cílové IP adresy. Mám dojem, že Apache to umí. V nejhorším případě si pustíte dva servery a každý nabindujete na vlastní adresu.
17.12.2009 10:37 MMichal | skóre: 21
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Apache to urcite umi, pouzivali jsme to.

Michal
23.12.2009 17:09 ash
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Doporucuji procist dokumentaci na http://www.freebsd.org/doc/en/books/handbook/network-routing.html. Vyber routy na fbsd (a i jinde) funguje zhruba takto:
When the local system needs to make a connection to a remote host, it checks the routing table to determine if a known path exists. If the remote host falls into a subnet that we know how to reach (Cloned routes), then the system checks to see if it can connect along that interface.

If all known paths fail, the system has one last option: the “default” route. This route is a special type of gateway route (usually the only one present in the system), and is always marked with a c in the flags field. For hosts on a local area network, this gateway is set to whatever machine has a direct connection to the outside world (whether via PPP link, DSL, cable modem, T1, or another network interface).
Defaultnich cest muze byt i vic, ale pokud jsou vsechny interface v jednom subnetu, tak se stejne pouzije prvni match. Pak uz zbyva jedine pohrat si se statickym routovanim a pridat net / host / interface routy podle potreby. Nebo se na to cele vykaslat a nepouzivat druhy interface.

K otazce - v rc.conf jde dat jenom jednu default routu (defaultrouter), dalsi zaznamy pak pridavat bud rucne nebo persistentne pres static_routes a route_[neco] v rc.conf.
24.12.2009 22:33 mato
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
nie je pravda - default GW moze byt len jedna, prave preto sa vola default .. dokonca je tak pisane i v odseku co si sam pastoval:
If all known paths fail, the system has one last option: the “default”
2 sietovky do toho isteho subnetu spominanym sposobom nemaju zmysel .. tak ako spravne petr_p spomenul hore, pocet IPciek a NW adapterov nema nic spolocne .. na hore spominanu konfiguraciu by bolo najvhodnejsie spravit link agregaciu a priradit obe IPcky virtualnemu adapteru + pohrat sa s nastavenim apache-u aby docielil to, co potrebuje
24.12.2009 22:54 JMP | skóre: 30
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
ono to ale pokracuje...
This route is a special type of gateway route (usually the only one present in the system)

Pokud vsechny zname cesty selzou, pak ma system posledni moznost: "defaultni cestu". Tato cesta je specialni typ cesty - brana (obvykle je v systemu takova cesta jedina) ...

Vim, ze tohle problem neresi, jen je dobre vedet, ze default gateway opravdu nemusi byt v systemu pouze jedna (byt obvykle jedina byva) - nekdy se to muze hodit ...

24.12.2009 23:37 mato
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
pravda .. toto by aj davalo zmysel v pripade connectu od viacerych ISP (teda nie v pripade ako je pisana tato issue) .. to by som cakal pri konfiguracii routra, nie servera ako takeho ..

ale mas pravdu

25.12.2009 10:53 ash
Rozbalit Rozbalit vše Re: 2 sitovky bez NAT FreeBSD
Je to tak, vic default cest je moznych. Pokud mate 2 interface (fyzicke ci virtualni) v 2 ruznych subnetech, tak se pomoci 2 default route a bindovani na adresu (tj. ne na *) da dobre fungovat. Nebo mit management subnet pro box a druhy verejny subnet pro jaily atp.

Dva interface v jedne vlan bych spojil pres lagg do failoveru (idealne 2 ruzne switche) nebo pouzil agregaci (to se ale musi nastavit aktivni prvek). Na lagg if pak nastavit ip + N aliasu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.