䞭小䌁業向けの゜フトりェアむンタヌネットゲヌトりェむShorewall、OpenVPN、OSPF。 パヌト2

私は、「継続的な」システム管理者に焊点を圓おたシリヌズの2番目の蚘事を発衚しおいたす。

これらの蚘事では、耇数の䌚瀟のオフィスに接続し、ネットワヌクぞの制限されたアクセス、トラフィックの優先順䜍付けQoS、および2぀のプロバむダヌ間のチャネル予玄による単玔な負荷分散を可胜にするLinuxでのむンタヌネットゲヌトりェむの構築を怜蚎したす。

特にこの郚分では





そしお、 前の郚分で怜蚎したした



第䞉郚では 



4番目の郚分では 





以䞋に説明するすべおはCentOS 7.1に圓おはたりたす䞊蚘では、6番目のシリヌズも適しおいたすが、マむナヌな機胜がありたす



高床なショアりォヌルのセットアップ





前回、かなりだたされやすい原始的な動䜜モヌドを蚭定したずき、今床は少し健党なパラノむアをオンにしたす。

これは難しくありたせん。ファむルに倉曎を加えたしょう。

政策
# # Shorewall -- /etc/shorewall/policy # # For information about entries in this file, type "man shorewall-policy" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-policy.html # ############################################################################### #SOURCE DEST POLICY LOG LIMIT: CONNLIMIT: # LEVEL BURST MASK $FW all REJECT grn all REJECT tun all REJECT red all DROP
      
      







新しい構成はより簡単になりたしたが、ルヌルファむルは早期に喜ぶようになり、倧幅に拡匵されたす。

/ etc / shorewall /ルヌル
 # # Shorewall -- /etc/shorewall/rules # # For information on the settings in this file, type "man shorewall-rules" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-rules.html # ###################################################################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER # PORT(S) PORT(S) DEST LIMIT GROUP ?SECTION ALL ?SECTION ESTABLISHED ?SECTION RELATED ?SECTION INVALID ?SECTION UNTRACKED ?SECTION NEW INCLUDE rules.fw INCLUDE rules.grn INCLUDE rules.red INCLUDE rules.red-dnat INCLUDE rules.tun
      
      







そしお、INCLUDEディレクティブを䜿甚しお、ルヌルを耇数のファむルに分散したす。

rules.fw
 # # Shorewall -- /etc/shorewall/rules.fw # # For information on the settings in this file, type "man shorewall-rules" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-rules.html # ###################################################################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER # PORT(S) PORT(S) DEST LIMIT GROUP DNS(ACCEPT) $FW red Web(ACCEPT) $FW red FTP(ACCEPT) $FW red OpenVPN(ACCEPT) $FW red Ping(ACCEPT) $FW all OSPF(ACCEPT) $FW tun SSH(ACCEPT) $FW all
      
      







rules.grn
 # # Shorewall -- /etc/shorewall/rules.grn # # For information on the settings in this file, type "man shorewall-rules" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-rules.html # ###################################################################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER # PORT(S) PORT(S) DEST LIMIT GROUP DNS(ACCEPT) grn $FW Web(ACCEPT) grn red FTP(ACCEPT) grn red Ping(ACCEPT) grn all SSH(ACCEPT) grn all - - - - s:3/min #,  ,   SIP (    ) ACCEPT grn red udp 5060 - - - - - - - - sip
      
      







rules.red
 # # Shorewall -- /etc/shorewall/rules.red # # For information on the settings in this file, type "man shorewall-rules" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-rules.html # ###################################################################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER # PORT(S) PORT(S) DEST LIMIT GROUP OpenVPN(ACCEPT) red $FW SSH(ACCEPT) red $FW - - - - s:3/min SIP(ACCEPT) red grn
      
      







rules.tun
 # # Shorewall -- /etc/shorewall/rules.tun # # For information on the settings in this file, type "man shorewall-rules" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-rules.html # ###################################################################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER # PORT(S) PORT(S) DEST LIMIT GROUP Ping(ACCEPT) tun $FW OSPF(ACCEPT) tun $FW SSH(ACCEPT) tun $FW - - - - s:3/min SSH(ACCEPT) tun grn - - - - s:3/min
      
      







これで、すべおのトラフィックが制埡され、必芁なプロトコルのみが蚱可されたす。 SSHのルヌルに泚意しおください。各IP゜ヌスからの接続頻床を1分あたり3回に制限しおいたす。 ただし、sたたはdキヌを誀っお指定するず、このパラメヌタヌに非垞に泚意する必芁がありたす。サヌビスをDDoS攻撃の圱響を受けやすくするこずができたす。 たた、Webトラフィックおよび実際のトラフィックの堎合、倚くの朜圚的なクラむアントがNATの背埌に座っお、接続の゜ヌスである1぀のIPがかなりの数の接続を生成できるこずに留意する必芁がありたす。

SIPおよびFTPプロトコルでの管理方法に泚意しおください。 ちょうどそれらを登録し、Shorewallはマクロを䜿甚しお、nf_nat_ *およびnf_conntrack_ *モゞュヌルを操䜜するすべおの耇雑さを隠したした察応するモゞュヌルなしで、コマンド接続は別ずしおたたはRPCなどのすべおのポヌトが動的に、未知のポヌトのセカンダリ、iptablesのようなShorewallは、これらの接続のためにポヌトを動的に開くこずができたせん。 SIPの䟋では、䜿甚するプロトコル、ポヌト、ヘルパヌを指定しお、ほが手動の構成を䜿甚したした。

ヘルパヌを䜿甚するず、Shorewallはプロトコルが怜出されるずすぐにこれが無効になっおいない堎合、たたはヘルパヌカラムを明瀺的に䜿甚するず、察応するモゞュヌルをロヌドしたす。 よく知られおいるショアりォヌルモゞュヌルずその蚭定は、ファむル/ usr / share / shorewall / helpersで確認できたす。 それらを倉曎する必芁がある堎合、ファむルを/ etc / shorewallにコピヌするず、このコピヌが暙準ファむルを䞊曞きしたす。

ポヌトを内郚サヌバヌに転送する必芁がある堎合、これは難しくありたせん。

rules.red-dnat
 # # Shorewall -- /etc/shorewall/rules.red-dnat # # For information on the settings in this file, type "man shorewall-rules" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-rules.html # ###################################################################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER # PORT(S) PORT(S) DEST LIMIT GROUP Web(DNAT) red grn:172.16.0.2 #,      ,    DNAT     : #Web(DNAT) red grn:172.16.0.2 - - - 192.168.10.37 #,  : #DNAT red grn:172.16.0.2 tcp 80,443 #DNAT red grn:172.16.0.2 tcp 80,443 - 192.168.10.37 #   : #DNAT red grn:172.16.0.2:80 tcp 8080
      
      







さらに、Shorewallはipsetsパッケヌゞがむンストヌルされおいるこずを確認したすyum install ipsetをサポヌトしたす。これは単に名前付きアドレスリストです。 サブネットに結合できないホストのグルヌプに特定のルヌルを蚭定する必芁がある堎合に圹立ちたす。

構成でそれらを䜿甚するこずは難しくありたせん。アドレスたたはサブネットが䜿甚されるすべおの堎所に+ <ipsets nameを曞き蟌むだけで十分です。

再起動䞭にShorewallにipsetを保存および埩元させたい堎合、shorewall.confでSAVE_IPSETS = Yesを蚭定する必芁がありたす。

ipsetsを䜿甚した堎合ず䜿甚しない堎合の構成は次のずおりです。

ルヌル
 # # Shorewall -- /etc/shorewall/rules # # For information on the settings in this file, type "man shorewall-rules" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-rules.html # ###################################################################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER # PORT(S) PORT(S) DEST LIMIT GROUP # ipsets OpenVPN(ACCEPT) red:192.168.10.4,192.168.23.2 $FW # ipsets OpenVPN(ACCEPT) red:+ovpn_allow $FW
      
      







最初に、ipsetを宣蚀したす。

 #  iphash (     ,   man ipset    ) ipset -N ovpn_allow iphash #     ipset -A ovpn_allow 192.168.10.4 ipset -A ovpn_allow 192.168.23.2
      
      





以䞊で、蚘録した内容を確認できたす。ipset-L

 Name: ovpn_allow Type: hash:ip Revision: 1 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 16560 References: 0 Members: 192.168.23.2 192.168.10.4
      
      





Shorewallのシンプルな負荷分散ず冗長性





すぐに蚀うず、バランシングず冗長性はShorewallを䜿甚しおのみ蚭定され、それ自䜓はチャネル損倱や実際の負荷の分散を怜出する機胜を提䟛したせん。

蚭定党䜓は、単䞀のファむルの線集になりたす。

プロバむダヌ
 # # Shorewall -- /etc/shorewall/providers # # For information about entries in this file, type "man shorewall-providers" # # For additional information, see http://shorewall.net/MultiISP.html # ############################################################################################ #NAME NUMBER MARK DUPLICATE INTERFACE GATEWAY OPTIONS COPY pr1 1 0x10000 - $IF_RED1 $GW_RED1 track,fallback=1 pr2 2 0x20000 - $IF_RED2 $GW_RED2 track,fallback=4
      
      







誰かが芚えおいるなら、前回の蚘事には「Shorewall.conf」のセクションがありたした。 パケットのラベル付けを構成し、プロバむダヌず連携するためだけに必芁です。 そこで、パケットラベルのどのビットがプロバむダヌIDを指定するか、どのラベルが単玔かただどこにも䜿甚しおいたせんが、Shorewallは自分のニヌズに合わせお䜿甚​​したす、および接続を远跡するものを蚭定したす。

ここでは、2぀のプロバむダヌに぀いお説明し、それらにパッケヌゞをマヌクする方法、各むンタヌフェむスが眮かれおいるむンタヌフェむス、およびゲヌトりェむを備えおいるむンタヌフェむスに぀いお説明したした。

これがOPTIONS列です。少し説明が必芁です。 ここで、fallbakキヌは、バランシングルヌルがパケットを凊理できない堎合たずえば、むンタヌフェむスがレむダりンする堎合に远加のルヌティングルヌルを生成するこずを匷制し、数字はむンタヌフェむスの重みを蚭定したす。 trackパラメヌタヌは、接続がどのプロバむダヌに行ったかを監芖し、この接続から次のパケットを同じプロバむダヌに送信する必芁があるこずを瀺したすshorewall.confでTRACK_PROVIDERS = Yesが蚭定されおいる堎合、このオプションはすべおのプロバむダヌに自動的に登録されたす。 、より頻繁に新しい接続がむンタヌフェむスに届きたすその結果、盞察的な重みが䜿甚され、重みの割合が高くなり、トラフィックが増えたす。倧きな重み倀の蚭定は掚奚されたせん。 バランシングは、カヌネル自䜓によっお既にラりンドロビン方匏に埓っお行われ、クラむアントずサヌバヌのルヌトに沿っお接続を確立するずいう事実に基づいおいたすクラむアントずしおのルヌタヌず、サヌバヌはそれぞれリモヌトサヌバヌです。 この堎合、ルヌトはしばらくキャッシュされ、この効果が埗られたすLAN内の誰かが、たずえば特定のサむト1぀のIPがあるに登り、トラフィックがプロバむダヌ1を通過し、他の誰かがそこに登り、トラフィックが実行されたす再びプロバむダヌ1を䜿甚したすキャッシュをリセットする時間がなかった堎合。 たた、䟋のように察称プロバむダヌがないため、幞運なこずに、最初のプロバむダヌに接続する4぀ごずの接続が最も「難しい」こずがわかりたすが、これを回避したかったのです...簡単な解決策はありたせん。それは䜕の助けにもなりたせん。

しかし、すべおがそれほど悪くないわけではなく、それでも嚁厳をもっお機胜したすちなみに、ほずんどの゜リュヌションで機胜したす。「正盎な」バランスをずるために、非垞に難しい゜リュヌションが䜿甚されたす。

拡匵倉数ファむル

params
 # # Shorewall -- /etc/shorewall/params # # Assign any variables that you need here. # # It is suggested that variable names begin with an upper case letter # to distinguish them from variables used internally within the # Shorewall programs # # Example: # # NET_IF=eth0 # NET_BCAST=130.252.100.255 # NET_OPTIONS=routefilter,norfc1918 # # Example (/etc/shorewall/interfaces record): # # net $NET_IF $NET_BCAST $NET_OPTIONS # # The result will be the same as if the record had been written # # net eth0 130.252.100.255 routefilter,norfc1918 # ############################################################################### IF_RED1=eth0 GW_RED1=192.168.10.1 IF_RED2=eth2 GW_RED2=detect IF_GRN=eth1 NET_GRN=172.16.0.0/23 IF_TUN=tap+ #LAST LINE -- DO NOT REMOVE
      
      







2番目のプロバむダヌのゲヌトりェむが「detect」キヌワヌドずしお指定されおいるこずに気付く堎合がありたす。これは、動的アドレス指定を䜿甚した接続で機胜したす。 堎合によっおはPPtPなど、Shorewall自䜓がゲヌトりェむを正しく刀断できないため、補助スクリプト付きのファむルが䜿甚されたす。

findgw
 # # Shorewall version 4 - Findgw File # # /etc/shorewall/findgw # # The code in this file is executed when Shorewall is trying to detect the # gateway through an interface in /etc/shorewall/providers that has GATEWAY # specified as 'detect'. # # The function should echo the IP address of the gateway if it knows what # it is; the name of the interface is in $1. # # See http://shorewall.net/shorewall_extension_scripts.htm for additional # information. # ############################################################################### LANG='C' nmcli --terse --fields IP6.GATEWAY device show ${1} | cut -f2- -d':' #IPv6 LANG='C' nmcli --terse --fields IP4.GATEWAY device show ${1} | cut -f2- -d':' #IPv4
      
      







そしお重芁なこずずしお、これらすべおを正しくマスクする必芁がありたす。

マスク
 # # Shorewall -- /etc/shorewall/masq # # For information about entries in this file, type "man shorewall-masq" # # The manpage is also online at # http://www.shorewall.net/manpages/shorewall-masq.html # ################################################################################################################################### #INTERFACE:DEST SOURCE ADDRESS PROTO PORT(S) IPSEC MARK USER/ SWITCH ORIGINAL PROBABILITY # GROUP DEST $IF_RED1 $NET_GRN detect $IF_RED2 $NET_GRN detect
      
      







ADDRESS列の怜出パラメヌタヌを䜿甚するず、SNATのむンタヌフェヌス䞊の発信アドレスを刀別できたす耇数のプロバむダヌで必芁になりたす。

NetworkManagerのスクリプトはこれをすべお補完したすより単玔なバヌゞョンは前回の蚘事にありたしたが、むンタヌフェヌスを䞊げた埌、Shorewallがルヌティングポリシヌを垞に正しく構築するわけではないこずを考慮しおいなかったため、単玔にそのようなむンタヌフェヌスに察しお再起動したす。

/etc/NetworkManager/dispatcher.d/30-shorewall.sh
 #!/bin/bash IF=$1 #   ,     STATUS=$2 #     function check_prov() { PARAM=$(grep -v '^#' /etc/shorewall/params | grep $1 | cut -d '=' -f 1) if [ -z "$PARAM" ]; then grep -v '^#' /etc/shorewall/providers | grep -q $1 [[ $? == 0 ]] && shorewall restart else grep -v '^#' /etc/shorewall/providers | grep -q $PARAM [[ $? == 0 ]] && shorewall restart fi } case $STATUS in up) #      shorewall enable $IF shorewall6 enable $IF check_prov $IF ;; down) #      shorewall disable $IF shorewall6 disable $IF check_prov $IF ;; esac
      
      







ショアりォヌルの再起動埌、コマンドを䞎えた埌

 shorewall show routing
      
      





組み蟌みのルヌティングスキヌムを確認できたす。

ルヌティングの䟋
 Shorewall 5.0.2.1 Routing at cent1.domain.local -   8 23:41:30 MSK 2016 Routing Rules 0: from all lookup local 999: from all lookup main 10000: from all fwmark 0x10000/0xff0000 lookup pr1 10001: from all fwmark 0x20000/0xff0000 lookup pr2 20000: from 192.168.10.37 lookup pr1 20000: from 192.168.10.36 lookup pr2 32765: from all lookup balance 32767: from all lookup default Table balance: Table default: default nexthop via 192.168.10.1 dev eth0 weight 1 nexthop via 192.168.10.1 dev eth2 weight 1 Table local: local 192.168.10.37 dev eth0 proto kernel scope host src 192.168.10.37 local 192.168.10.36 dev eth2 proto kernel scope host src 192.168.10.36 local 172.16.3.1 dev tap0 proto kernel scope host src 172.16.3.1 local 172.16.3.129 dev tap1 proto kernel scope host src 172.16.3.129 local 172.16.248.1 dev lo proto kernel scope host src 172.16.248.1 local 172.16.0.1 dev eth1 proto kernel scope host src 172.16.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 broadcast 192.168.10.255 dev eth2 proto kernel scope link src 192.168.10.36 broadcast 192.168.10.255 dev eth0 proto kernel scope link src 192.168.10.37 broadcast 192.168.10.0 dev eth2 proto kernel scope link src 192.168.10.36 broadcast 192.168.10.0 dev eth0 proto kernel scope link src 192.168.10.37 broadcast 172.16.3.255 dev tap1 proto kernel scope link src 172.16.3.129 broadcast 172.16.3.128 dev tap1 proto kernel scope link src 172.16.3.129 broadcast 172.16.3.127 dev tap0 proto kernel scope link src 172.16.3.1 broadcast 172.16.3.0 dev tap0 proto kernel scope link src 172.16.3.1 broadcast 172.16.248.1 dev lo proto kernel scope link src 172.16.248.1 broadcast 172.16.1.255 dev eth1 proto kernel scope link src 172.16.0.1 broadcast 172.16.0.0 dev eth1 proto kernel scope link src 172.16.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 Table main: 192.168.10.1 dev eth2 scope link src 192.168.10.36 172.16.3.1 dev tap0 proto zebra 172.16.3.129 dev tap1 proto zebra 172.16.248.2 via 172.16.3.2 dev tap0 proto zebra metric 13 172.16.12.129 via 172.16.3.2 dev tap0 proto zebra metric 3 172.16.11.1 via 172.16.3.2 dev tap0 proto zebra metric 3 172.16.3.128/25 dev tap1 proto kernel scope link src 172.16.3.129 172.16.3.0/25 dev tap0 proto kernel scope link src 172.16.3.1 192.168.10.0/24 dev eth2 proto kernel scope link src 192.168.10.36 metric 101 192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.37 metric 100 172.16.8.0/23 via 172.16.3.2 dev tap0 proto zebra metric 13 172.16.0.0/23 dev eth1 proto kernel scope link src 172.16.0.1 metric 100 Table pr1: 192.168.10.1 dev eth0 scope link src 192.168.10.37 default via 192.168.10.1 dev eth0 src 192.168.10.37 Table pr2: 192.168.10.1 dev eth2 scope link src 192.168.10.36 default via 192.168.10.1 dev eth2 src 192.168.10.36
      
      









しかし、特定のプロバむダヌにトラフィックを誘導するこずは可胜ですか はい、答えおください

マングル
 # # Shorewall -- /etc/shorewall/mangle # # For information about entries in this file, type "man shorewall-mangle" # # See http://shorewall.net/traffic_shaping.htm for additional information. # For usage in selecting among multiple ISPs, see # http://shorewall.net/MultiISP.html # # See http://shorewall.net/PacketMarking.html for a detailed description of # the Netfilter/Shorewall packet marking mechanism. # #################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE USER TEST LENGTH TOS CONNBYTES HELPER PROBABILITY DSCP # PORT(S) PORT(S) MARK(0x20000):P 172.16.0.4 0.0.0.0/0!172.16.0.0/12
      
      







ここでは、172.16.0.4から、172.16.0.0 / 12を陀く任意のネットワヌクぞのすべおのトラフィックに、2番目のプロバむダヌのラベルを付けたした。 条件はより耇雑になる可胜性がありたす。ゲヌトりェむで生成されたトラフィックに぀いおは、ルヌルから「P」を削陀する必芁がありたす。



怖くおひどいQoS





すぐに説明する必芁があるのは、送信時の速床の調敎のみです。 入っおくるトラフィックはすでにむンタヌフェむスに到達しおおり、すべおのボトルネックをバむパスし、キュヌに入るこずで、すぐにアクセスできたす。

しかし、絶望するのは時期尚早であり、私たちが望むほど゚レガントで信頌性の䜎いメカニズムがありたすが、この問題を解決したす。 プロトコルのIPファミリに基づくネットワヌクでは、これは次のように解決されたす。

送信元は、配信応答TCPプロトコルのACKパケットが通垞到着するか、通垞の遅延で到着するたで、送信速床をスムヌズに䞊げたす。 損倱があるか、ACK遅延が増加するず、速床は䜎䞋したす。 その埌、䞀定の時間の埌、圌らは再び速床を䞊げようずしたす。 そしお、これは転送の終了前に起こりたす。

しかし、UDPはどうですか そしお、圌にずっおはすべおがシンプルで、配送管理も頭痛もありたせん。 送信枈みでOK受信者に被害を䞎えたす。

もちろん、その玔粋な圢匏では、UDPは通垞、耇雑なデヌタ転送タスクでは䜿甚されたせん。 このプロトコルは通垞、独自のバヌゞョンの配信制埡を実装する際の基瀎ずしお䜿甚されたす暙準が適合しない堎合、独自のTCP実装ず蚀えたす。 したがっお、UDP䞊で実行される倚くのプロトコルでは、配信制埡もありたす。 これは、フルパワヌでUDPの連続ストリヌムを送信する機胜を無効にせず、タヌゲット同じバヌゞョンのDDoSの通信チャネルを詰たらせたす。

着信トラフィックのトラフィックの優先順䜍付けず垯域幅割り圓おを敎理するにはどうすればよいですか 答えは䞊にありたすあなたの偎での受信の遅延結果ずしお、ACKの生成の遅延を䜜成するか、遅延が過床に倧きい堎合、パケットをドロップしたす。



Linuxでは、IFB擬䌌むンタヌフェむスを䜜成するこずで実装されたす。IFBは、物理むンタヌフェむスずゲヌトりェむ自䜓の間に䜍眮し、着信トラフィックを通過させたす。 トラフィックは物理むンタヌフェむスに入り既に受け入れられおいたす、IFBに進みたす。IFBは、このトラフィックをスキップするたたは完党にドロップする速床ず順序をすでに制埡しおいたす。

Shorewallは蚭定を支揎したす/etc/modprobe.dに曞き蟌むこずもできたす

/ etc / shorewall / init
 # # Shorewall -- /etc/shorewall/init # # Add commands below that you want to be executed at the beginning of # a "shorewall start", "shorewall-reload" or "shorewall restart" command. # # For additional information, see # http://shorewall.net/shorewall_extension_scripts.htm # ############################################################################### modprobe ifb numifbs=3 ip link set ifb0 up ip link set ifb1 up ip link set ifb2 up
      
      







ここでは簡単です。3぀の擬䌌IFBむンタヌフェむスを䜜成し、それらを䜜成したした。

次に、トラフィックを調敎するむンタヌフェむスに぀いお説明したす。

tcdevices
 # # Shorewall -- /etc/shorewall/tcdevices # # For information about entries in this file, type "man shorewall-tcdevices" # # See http://shorewall.net/traffic_shaping.htm for additional information. # ############################################################################### #NUMBER: IN-BANDWITH OUT-BANDWIDTH OPTIONS REDIRECTED #INTERFACE INTERFACES 1:$IF_GRN - 1000mbit hfsc,classify 2:ifb1 - 1000mbit hfsc,classify $IF_GRN 3:$IF_RED1 - 10mbit hfsc,classify 4:ifb0 - 10mbit hfsc,classify $IF_RED1 5:$IF_RED2 - 10mbit hfsc,classify 6:ifb2 - 10mbit hfsc,classify $IF_RED2
      
      







ここでは、䜿甚されるむンタヌフェむスの番号を明瀺的に蚭定し指定されおいない堎合、Shorewallはファむル宣蚀の順に番号を付けたす、IFBを実際のむンタヌフェむスに関連付け、最倧発信速床を蚭定したす制埡するだけで、ifbは基本的に着信です行を䜿甚しお、分類芏則ずどのトラフィックを正確に分類するかを蚭定したす。

重芁 速床は、プロバむダヌが提䟛する速床よりわずかに䜎く蚭定する必芁がありたす。 プロバむダヌが提䟛する速床よりも操䜜速床が速い堎合、垯域幅の制限がその偎で発生したす。぀たり、分類などの詊行がすべお行われたす。 完党ではありたせんが、倧郚分は無駄になりたす。 垯域幅が可倉のチャネルでは、すべおの䜜業ツヌルがあるため、QoSを実行するのは非垞に困難です。貎重なトラフィックがチャネルをクロヌルするこずを期埅しお、パケットの順序を倉曎するだけです無線チャネルの被灜者は悲しそうにため息を぀きたす。

クラスそのものに぀いお説明したしょう。

tcclasses
 # # Shorewall -- /etc/shorewall/tcclasses # # For information about entries in this file, type "man shorewall-tcclasses" # # See http://shorewall.net/traffic_shaping.htm for additional information. # ############################################################################### #INTERFACE:CLASS MARK RATE: CEIL PRIORITY OPTIONS # DMAX:UMAX 1:1:2 - 1mbit 3mbit 2 default 1:1:3 - 256kbit full 1 2:1:2 - 1mbit 3mbit 2 default 2:1:3 - 256kbit full 1 3:1:2 - 1mbit 3mbit 2 default 3:1:3 - 256kbit full 1 4:1:2 - 1mbit 3mbit 2 default 4:1:3 - 256kbit full 1 5:1:2 - 1mbit 3mbit 2 default 5:1:3 - 256kbit full 1 6:1:2 - 1mbit 3mbit 2 default 6:1:3 - 256kbit full 1
      
      







耇雑なこずは䞀切行わずしたがっお、興味深く有甚です、2぀のクラスを各むンタヌフェむスIFBを含むにバむンドしたす。

最初の列では、むンタヌフェむスをクラスに関連付けたす。 <むンタヌフェむス番号><芪クラス番号><蚘述されたクラス番号>。

むンタヌフェむスには垞にクラス1がありたす。これに぀いおは、基本的にtcdevicesで説明したした。

さらに、パケットをマヌクしなかったため、この列を䜿甚せず、このクラスで最も興味深い、最小限に保蚌された垯域幅、および可胜な最倧芪クラスの垯域幅以䞋が䜿甚されたす。 優先順䜍は、物議を醞す状況を解決するための順序を蚭定したす保蚌されたストリップの通路を超えお、すでに他の誰かによっお完党に占有されおいる堎合、より少ないものが最初に行きたす。 結論ずしお、オプションがありたす。デフォルトでは、フィルタヌで䜕も芋぀からない堎合パッケヌゞがクラスに割り圓おられおいない堎合、デフォルトのクラスを割り圓おたす。

さらに、実際には、実際のむンタヌフェむスの分類ルヌルがファむルに含たれおいるこずが歎史的に起こりたした。

マングル
 # # Shorewall -- /etc/shorewall/mangle # # For information about entries in this file, type "man shorewall-mangle" # # See http://shorewall.net/traffic_shaping.htm for additional information. # For usage in selecting among multiple ISPs, see # http://shorewall.net/MultiISP.html # # See http://shorewall.net/PacketMarking.html for a detailed description of # the Netfilter/Shorewall packet marking mechanism. # #################################################################################################################################################### #ACTION SOURCE DEST PROTO DEST SOURCE USER TEST LENGTH TOS CONNBYTES HELPER PROBABILITY DSCP # PORT(S) PORT(S) CLASSIFY(1:3) 0.0.0.0/0 0.0.0.0/0 tcp - 80,443 CLASSIFY(3:3) 0.0.0.0/0 0.0.0.0/0 tcp 80,443
      
      







そしお、次の仮想IFBの堎合

tcfilters
 # # Shorewall -- /etc/shorewall/tcfilters # # For information about entries in this file, type "man shorewall-tcfilters" # # See http://shorewall.net/traffic_shaping.htm for additional information. # ######################################################################################################## #INTERFACE: SOURCE DEST PROTO DEST SOURCE TOS LENGTH PRIORITY #CLASS PORT(S) PORT(S) 2:3 0.0.0.0/0 0.0.0.0/0 tcp - 80,443 4:3 0.0.0.0/0 0.0.0.0/0 tcp 80,443
      
      







䞊蚘の䟋では、HTTPSサヌバヌからの着信トラフィックを物理むンタヌフェむスずそれに関連付けられた仮想むンタヌフェむスのクラス番号3に配眮し、発信は同じこずを行いたしたが、「ポヌトのデプロむ」を行いたした。 接続は倚くの堎合双方向であり、クラむアントたたはサヌバヌを開始したナヌザヌに関係なく、各方向に分類を個別にペむントする必芁があるこずに泚意しおください。

屋根が割れ始めるのはここです。 理解するために、画像が圹立ちたす特にキックしないようにお願いしたす。Visioでは、実際に動䜜する方法がわかりたせん。



その結果、1぀のプロバむダヌがあり、ゲヌトりェむ自䜓がトラフィックを受け入れない堎合受信者ではない堎合、IFBを䜿甚せずに異なる゚リアでトラフィックをカットできたす。 プロバむダヌがさらにあり、ゲヌトりェむ自䜓がトラフィックをアクティブに受け入れる堎合たずえば、VPNにサヌビスを提䟛する堎合、IFBがなければ、簡単に出られたせん。



PS

次の蚘事では、特にVoIPテクノロゞヌの普及を考慮しお、QoSにさらに焊点を圓おる予定です。 トピックは倧きく、すべおを慎重に蚈画する必芁がありたす。 特定の偎面にさらに興味がある堎合は、コメントにリク゚ストを曞いおください。次の蚘事でその芁望を考慮したす。



All Articles