Халыққа Интернет керек (Ubuntu шлюз)
Виндоус анау, виндоус мынау деп жатудың қажеті жоқ шығар, қолымызда убунту орнатылған сервер, бір интерфейсіне (сетевая карта) провайдерден Интернет келіп тұрса, келесі интерфейсі офис желісіне қосылған. Жалпы дәл мынадай болады деп жазу мүмкін емес, себебі әр сервер өзіне жүктелген қызметке байланысты сәйкесінше бапталады. Біздің мысалда тек жалпылама баптау, одан әрі түрлендіру өз еріктеріңізде.
Сервердің eth0 интерфейсіне интернет келіп тұрсын, IP адресі x.x.x.x болсын,
eth1 интерфесі локалды желіге қосылған болсын, ip адресі 192.168.0.1, желіміз 192.168.0.0/24 болсын.
Алдымен бұрыннан бар ережелерді (правила дегенді осылай алдым) тазалаймыз
INPUT, OUTPUT, FORWARD – пакеттер жүретін негізгі тізбектер, яғни кіру, шығу, интерфейстен интерфейске өту.
Бұдан соң әдеткі ережелерді көрсету керек, олар екеу ғана DROP, ACCEPT, яғни пакеттерді қабылдайды, не қабылдамайды.
Біз бәрін жауып, тек қана керек порттарды ғана ашамыз. Өзіміздің қашықтан жұмыс жасап отырғанымызды ескерсек, алдымен SSHты ашып алуымыз керек.
SSH әдеткі 22 портта жұмыс істеп тұр деп есептейміз.
Енді әдеткі ережелерді жазамыз
Біртіндеп керек порттарды ашамыз:
SMTP, DNS, HTTP, POP3, HTTPS
серверде жұмыс істеп тұрған сервистер порттарын /etc/services файлынан қарап алуға болады.
Бәрін (керегін) аштық, бірақ пошта мен ДНС істемей тұр. Себебі ДНС серверге запрос кез келген порттан кетеді де қашықтағы сервер жауабын сол портқа қайтарады. Ал біздің жағдайымызда ол порттар жабық. Ия ашып қояр едік қой, бірақ біз нақты қай портты пайдаланатынын білмейміз. Сондықтан былай істейміз:
loopback тұйықталған желісін (аударма менікі) ашамыз
Іштен орнатылған байланыстарды рұхсат етеміз
Локалды желіден сыртқа қатынауды рұхсат етеміз:
Енді ең маңызды қадам маскарадинг. Маскарадинг – шлюз арқылы өткен пакеттерді өңдеу тәсілі. Шлюз іштен сыртқа шыққан пакеттерді кейін жауап беру үшін белгілейді, нәтижесінде шлюз арқылы ішкі желідегі бірнеше машина сыртқы Интернет желісіне қатынай алады. Маскарадинг NATпен байланысты, адресті трансляциялаған кезде пакеттерді маскалайды, кейін маска арқылы жауабын тек қана сол адреске жолдайды.
Ол үшін интерфейстер арасында пакет алмасу үшін форвардингті қосып, адресті трансляциялаймыз:
Осымен интернет ашылды.
PS: Жоғарыда жазылғандарды скрипт ретінде бір файлға жазып, автоматты жүктелетін етуге болады.
Сервердің eth0 интерфейсіне интернет келіп тұрсын, IP адресі x.x.x.x болсын,
eth1 интерфесі локалды желіге қосылған болсын, ip адресі 192.168.0.1, желіміз 192.168.0.0/24 болсын.
Алдымен бұрыннан бар ережелерді (правила дегенді осылай алдым) тазалаймыз
iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD
INPUT, OUTPUT, FORWARD – пакеттер жүретін негізгі тізбектер, яғни кіру, шығу, интерфейстен интерфейске өту.
Бұдан соң әдеткі ережелерді көрсету керек, олар екеу ғана DROP, ACCEPT, яғни пакеттерді қабылдайды, не қабылдамайды.
Біз бәрін жауып, тек қана керек порттарды ғана ашамыз. Өзіміздің қашықтан жұмыс жасап отырғанымызды ескерсек, алдымен SSHты ашып алуымыз керек.
SSH әдеткі 22 портта жұмыс істеп тұр деп есептейміз.
iptables -t filter -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Енді әдеткі ережелерді жазамыз
iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP
Біртіндеп керек порттарды ашамыз:
SMTP, DNS, HTTP, POP3, HTTPS
iptables -t filter -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT iptables -t filter -A INPUT -p udp -m udp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -t filter -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT iptables -t filter -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
серверде жұмыс істеп тұрған сервистер порттарын /etc/services файлынан қарап алуға болады.
Бәрін (керегін) аштық, бірақ пошта мен ДНС істемей тұр. Себебі ДНС серверге запрос кез келген порттан кетеді де қашықтағы сервер жауабын сол портқа қайтарады. Ал біздің жағдайымызда ол порттар жабық. Ия ашып қояр едік қой, бірақ біз нақты қай портты пайдаланатынын білмейміз. Сондықтан былай істейміз:
iptables -t filter -A INPUT -p tcp -m tcp --sport 25 -j ACCEPT iptables -t filter -A INPUT -p udp -m udp --sport 53 -j ACCEPT
loopback тұйықталған желісін (аударма менікі) ашамыз
iptables -A INPUT -i lo -j ACCEPT
Іштен орнатылған байланыстарды рұхсат етеміз
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state NEW -i !eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
Локалды желіден сыртқа қатынауды рұхсат етеміз:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
Енді ең маңызды қадам маскарадинг. Маскарадинг – шлюз арқылы өткен пакеттерді өңдеу тәсілі. Шлюз іштен сыртқа шыққан пакеттерді кейін жауап беру үшін белгілейді, нәтижесінде шлюз арқылы ішкі желідегі бірнеше машина сыртқы Интернет желісіне қатынай алады. Маскарадинг NATпен байланысты, адресті трансляциялаған кезде пакеттерді маскалайды, кейін маска арқылы жауабын тек қана сол адреске жолдайды.
Ол үшін интерфейстер арасында пакет алмасу үшін форвардингті қосып, адресті трансляциялаймыз:
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
Осымен интернет ашылды.
PS: Жоғарыда жазылғандарды скрипт ретінде бір файлға жазып, автоматты жүктелетін етуге болады.
-
+7
осының орнына, тек
дей салу жеткілікті емес па? man бетті қарап отсам солай деп тұр.
iptables қарап отырмын, бірақ мына жерде не болғанын әлі де толық түсіне қойған жоқпын :)