Kezdőlap › Fórumok › Debiannal kapcsolatos kérdések › Debian Sarge-os gateway, UDP broadcast forwarding
- This topic has 1 hozzászólás, 2 résztvevő, and was last updated 18 years, 5 months telt el by
Gyuszk.
-
SzerzőBejegyzés
-
2007-01-21-21:06 #2085691
Üdv! Mivel nem kaptam választ, válaszolok magamnak.
A megoldás:
udp broadcast relay nevü program.http://www.joachim-breitner.de/udp-broadcast-relay/
A válasz a Gentoo Discussion Forums oldalon érkezett.
2009-12-04-19:58 #1885338Üdv! A következő a helyzet:
Van egy Debian Sarge i386 -os szervergépem két db hálókártyával (eth0, eth1).eth0 Link encap:Ethernet HWaddr 00:04:E2:EB:8E:56
inet addr:193.xxx.xxx.31 Bcast:193.xxx.xxx.255 Mask:255.255.255.0
inet6 addr: fe80::204:e2ff:feeb:8e56/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1eth1 Link encap:Ethernet HWaddr 00:48:54:6E:B3:EA
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::248:54ff:fe6e:b3ea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1A fenti módon mennek. Az eth0 csatlakozik a kolis LAN-ra (bár tulajdonképpen az internetre, mivel saját fix publikus IP-t kapunk), az eth1 pedig a saját belső LAN-omra. A kettő között iptables-el történő NAT /Masquerading van, + tűzfal.
A probléma az, hogy a két desktop gépem a belső lLAn-omon lóg, és CS-zni szeretnék egy olyan szerverhez csatlakozva ami a kolis lanon fut.
A szerverhez tudnék csatlakozni, mert kifelé mindenféle kapcsolatot engedélyeztem, azonban a szervert nem találja meg a játék szerverböngészője ami LAN-os szervereket keres. A LAN-on a CS (illetve a Half Life Dedicated Server) amikor szervert keres, akkor a játékkliens a 255.255.255.255 -re broadcastol UDP csomagokat (source port random, destination port 27015-27020). Ezek a broadcastelések azonban nem jutnak el a másik szobában levő CS szerverhez (ez a kolis lanon van).
Átmeneti workaround lenne ha a debianos átjárón futtatnánk a CS szervert, de egyelőre túl gyík ahhoz, procicsere kell (most P2, vettünk hozzá P3-at).A probléma tehát az lenne, hogy a gépem (192.168.0.2) felől érkező, 255.255.255.255 irányú UDP broadcastolás eljusson az eth1 által elérhető kolis LAN-ra is. Alább csatolom a jelenleg futtatott iptables konfigurációt, amiben kiemelem azt a részt, amelyikkel ezt meg próbálom oldani.
Lehetséges hogy ezen kivül valamilyen visszaigazolást is kell küldenie a szervernek (amiben a nevét, az ip cimét, az aktuális pályát és játékosok számát és egyéb információt küld el) a kliens felé, ezt még wireshark-al megsniffelem.
Netfilter konfiguráció:
# A $SYSCTL valtozo uresbe tetele, igy nem a sysctl programot fogja a kernel beallitasara hasznalni, hanem echo-kkal a /proc-on keresztul
SYSCTL=””# A netfilter rendszer userspace-beli vezerloprogramjainak eleresi utvonalai
IPT=”/sbin/iptables”
IPTS=”/sbin/iptables-save”
IPTR=”/sbin/iptables-restore”# Kulso (internet) interfesz
INET_IFACE=”eth0″# Belso (LAN) interfesz
LOCAL_IFACE=”eth1″
LOCAL_IP=”192.168.0.1″
LOCAL_NET=”192.168.0.0/8″
LOCAL_BCAST=”255.255.255.0″# Loopback (127.0.0.1) interfesz
LO_IFACE=”lo”
LO_IP=”127.0.0.1″if [ „$1” = „save” ]
then
echo -n „Tuzfal elmentese: /etc/netfilter/iptables … „
$IPTS > /etc/netfilter/iptables
echo „done”
exit 0
elif [ „$1” = „restore” ]
then
echo -n „Tuzfal visszaallitasa /etc/netfilter/iptables … „
$IPTR /proc/sys/net/ipv4/ip_forward
echo „1” > /proc/sys/net/ipv4/conf/all/rp_filterecho „Tuzfalszabalyok resetelese …”
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT$IPT -F
$IPT -t nat -F
$IPT -t mangle -F$IPT -X
$IPT -t nat -X
$IPT -t mangle -Xif [ „$1” = „stop” ]
then
echo „A tuzfal minden szabalya defaulton, igy jelenleg nincs semmifele tuzfal.”
exit 0
fi
echo „A tuzfal mindenfele ki, be, illetve athalado csomagot eldob. Teljes vedelem.”
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
echo „.. sikerult. Ezekutan minden tevekenyseg csak kulon engedellyel lehetseges.”echo „Sajat chain-ok letrehozasa …”
$IPT -N bad_packets
$IPT -N bad_tcp_packets
$IPT -N icmp_packets
$IPT -N udp_inbound
$IPT -N udp_outbound$IPT -N tcp_inbound
$IPT -N tcp_outbound# Egyeni chainok feltoltese
# bad_packets chain
# Minden INVALID csomag azonnali eldobasa$IPT -A bad_packets -p ALL -m state –state INVALID -j LOG –log-prefix „Hibas csomag:”
$IPT -A bad_packets -p ALL -m state –state INVALID -j DROP# A TCP csomagok tovabbi ellenorzese
$IPT -A bad_packets -p tcp -j bad_tcp_packets# Minden oke, tehat visszateres
$IPT -A bad_packets -p ALL -j RETURN# bad_tcp_packets chain
#
# Minden TCP csomag at fog kelni ezen a chainon.
# Minden uj kapcsolat elvileg egy syn csomaggal kezdodik.
# Ha megsem, akkor valami mas lesz, peldaul port scanneles.
# Minden ilyen NEW csomagot eldobunk, ami nem syn.# Visszarakas az eredeti chainba, akkor ha a rossz csomag
# egy belso interfeszrol erkezett. Ez akkor biztonsagos, ha
# a tuzfal egy jol megbizhato belso halozatot ved.$IPT -A bad_tcp_packets -p tcp -i $LOCAL_IFACE -j RETURN
$IPT -A bad_tcp_packets -p tcp ! –syn -m state –state NEW -j LOG –log-prefix „Uj kapcsolat, nem syn:”
$IPT -A bad_tcp_packets -p tcp ! –syn -m state –state NEW -j DROP# Minden oke, visszateres:
$IPT -A bad_tcp_packets -p tcp -j RETURN# icmp_packets chain
# A kovetkezo sort enabledre kell tenni, ha pingelheto hostot akarunk:
$IPT -A icmp_packets -p ICMP -s 0/0 –icmp-type 8 -j ACCEPT# Time Exceeded
$IPT -A icmp_packets -p ICMP -s 0/0 –icmp-type 11 -j ACCEPT# Not matched, so return so it will be logged
$IPT -A icmp_packets -p ICMP -j RETURN# udp_inbound chain
#
# Ez a chain tartalmazza a bejovo UDP csomagokat.
# Ez az internet/kifele nezo interfesz INPUT -jara vonatkozik.
# A NetBIOS (Windows) csomagokat kerdezes nelkul droppolja.$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 3997 -j ACCEPT
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 3998 -j ACCEPT
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 27005 -j ACCEPT
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 27007 -j ACCEPT
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 27015 -j ACCEPT
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 27025 -j ACCEPT$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 137 -j DROP
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 138 -j DROP# Network Time Protocol (NTP) Server
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 123 -j ACCEPT# DNS Server
# Configure the server to use port 53 as the source port for requests
# Note, if you run a caching-only name server that only accepts queries
# from the private network or localhost, you can comment out this line.
$IPT -A udp_inbound -p UDP -s 0/0 –destination-port 53 -j ACCEPT# $IPT -A udp_inbound -p UDP -s 0/0 –source-port 53 -j ACCEPT
# Dynamic Address
# If DHCP, the initial request is a broadcast. The response
# doesn’t exactly match the outbound packet. This explicitly
# allow the DHCP ports to alleviate this problem.
# If you receive your dynamic address by a different means, you
# can probably comment this line.
$IPT -A udp_inbound -p UDP -s 0/0 –source-port 67 –destination-port 68 -j ACCEPT$IPT -A udp_inbound -p UDP -j RETURN
# udp_outbound chain
#
# This chain is used with a private network to prevent forwarding for
# UDP requests on specific protocols. Applied to the FORWARD rule from
# the internal network. Ends with an ACCEPT# Nincs talalat, tehat elfogadva (ACCEPT)
$IPT -A udp_outbound -p UDP -s 0/0 -j ACCEPT# tcp_inbound chain
#
# Ez a bejovo, kulso internet felol erkezo
# TCP csomagok helye. Alapban minden tiltva, a lenti
# szolgaltatasok kivetelevel.# HTTP
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 80 -j ACCEPT# HTTPS (Secure Web Server)
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 443 -j ACCEPT# FTP Server (Control)
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 21 -j ACCEPT# FTP Client (Data Port for non-PASV transfers)
$IPT -A tcp_inbound -p TCP -s 0/0 –source-port 20 -j ACCEPT# Email Server (SMTP)
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 25 -j ACCEPT# Email Server (POP3)
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 110 -j ACCEPT# sshd
$IPT -A tcp_inbound -p TCP -s 0/0 –destination-port 22 -j ACCEPT# Not matched, so return so it will be logged
$IPT -A tcp_inbound -p TCP -j RETURN# tcp_outbound chain
# No match, so ACCEPT
$IPT -A tcp_outbound -p TCP -s 0/0 -j ACCEPTecho „Process INPUT chain …”
# Minden engedelyezese kintrol
$IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT# Hibas csomagok eldobalasa
$IPT -A INPUT -p ALL -j bad_packets# Rules for the private network (accessing gateway system itself)
$IPT -A INPUT -p ALL -i $LOCAL_IFACE -s $LOCAL_NET -j ACCEPT
$IPT -A INPUT -p ALL -i $LOCAL_IFACE -d $LOCAL_BCAST -j ACCEPT# Internet felol bejovo szabalyok
# Bejovo kapcsolatok elfogadasa
$IPT -A INPUT -p ALL -i $INET_IFACE -m state –state ESTABLISHED,RELATED -j ACCEPT# Route the rest to the appropriate user chain
$IPT -A INPUT -p TCP -i $INET_IFACE -j tcp_inbound
$IPT -A INPUT -p UDP -i $INET_IFACE -j udp_inbound
$IPT -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets# Drop without logging broadcasts that get this far.
# Cuts down on log clutter.
# Comment this line if testing new rules that impact
# broadcast protocols.
$IPT -A INPUT -p ALL -d 255.255.255.255 -j DROP# Log packets that still don’t match
$IPT -A INPUT -m limit –limit 3/minute –limit-burst 3 -j LOG –log-prefix „INPUT packet died: „echo „Process FORWARD chain …”
# Used if forwarding for a private network
# Drop bad packets$IPT -A FORWARD -p ALL -j bad_packets
# Accept TCP packets we want to forward from internal sources
$IPT -A FORWARD -p tcp -i $LOCAL_IFACE -j tcp_outbound# Accept UDP packets we want to forward from internal sources
$IPT -A FORWARD -p udp -i $LOCAL_IFACE -j udp_outbound# If not blocked, accept any other packets from the internal interface
$IPT -A FORWARD -p ALL -i $LOCAL_IFACE -j ACCEPT# Deal with responses from the internet
$IPT -A FORWARD -i $INET_IFACE -m state –state ESTABLISHED,RELATED -j ACCEPT# Log packets that still don’t match
$IPT -A FORWARD -m limit –limit 3/minute –limit-burst 3 -j LOG –log-prefix „FORWARD packet died: „echo „Process OUTPUT chain …”
# A kifele valo kapcsolodas engedelyezese
# Azonban a hibas kimeno ICMP csomagokat el kell dobni!
$IPT -A OUTPUT -m state -p icmp –state INVALID -j DROP# Local host
$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT# A belso halozat fele
$IPT -A OUTPUT -p ALL -s $LOCAL_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LOCAL_IFACE -j ACCEPT# Az internet fele
$IPT -A OUTPUT -p ALL -o $INET_IFACE -j ACCEPT# Azon csomagok naplozasa amik meg mindig nem feleltek meg:
$IPT -A OUTPUT -m limit –limit 3/minute –limit-burst 3 -j LOG –log-prefix „OUTPUT csomag meghalt: „echo „Szabalyok betoltese a NAT tablazatbol …”
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
# !!!!!!!!!!
# Probalkozas az UDP csomagok broadcastjere
# !!!!!!!!!!EXTIP=”193.225.227.255″ // ez a ketto nem konkret ip cim hanem broadcast
PORTFWIP=”192.168.0.255″$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27015 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27015 -j DNAT –to $PORTFWIP:27015$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27016 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27016 -j DNAT –to $PORTFWIP:27016$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27017 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27017 -j DNAT –to $PORTFWIP:27017$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27018 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27018 -j DNAT –to $PORTFWIP:27018$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27019 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27019 -j DNAT –to $PORTFWIP:27019$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27020 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27020 -j DNAT –to $PORTFWIP:27020$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 3997 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 3997 -j DNAT –to $PORTFWIP:3997$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 3998 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 3998 -j DNAT –to $PORTFWIP:3998$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27005 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27005 -j DNAT –to $PORTFWIP:27005$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27007 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27007 -j DNAT –to $PORTFWIP:27007$IPT -A FORWARD -i eth1 -o eth0 -p udp –dport 27025 -j ACCEPT
$IPT -A PREROUTING -t nat -p udp -d $EXTIP –dport 27025 -j DNAT –to $PORTFWIP:27025A válaszokat előre is köszönöm!
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz