-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup-ip-tv-from-cn.html
305 lines (267 loc) · 13.5 KB
/
setup-ip-tv-from-cn.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
<!DOCTYPE html>
<!--[if IE 8 ]><html class="ie ie8" lang="ru"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="ru">
<!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="author" content="Косолапов Дмитрий">
<meta name="google-site-verification" content="yJ35ns77j5pUPUutyBdAd5CwjqK3TGn5prTlyf2LlSo">
<title>Косолапов Дмитрий: мысли умные и не только. - Настройка IP телевидения от "Электронного Города"</title>
<link href="https://dicos.ru/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Косолапов Дмитрий: мысли умные и не только. Full Atom Feed" />
<link href="https://dicos.ru/feeds/all.rss.xml" type="application/rss+xml" rel="alternate" title="Косолапов Дмитрий: мысли умные и не только. Full RSS Feed" />
<!-- CSS -->
<link rel="stylesheet" href="https://dicos.ru/theme/css/style.css">
<!-- Custom CSS -->
<link rel="stylesheet" href="https://dicos.ru/theme/css/colors/blue.css" id="colors">
<!-- Code highlight color scheme -->
<link href="https://dicos.ru/theme/css/code_blocks/darkly.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<meta property="og:locale" content="">
<meta property="og:site_name" content="Косолапов Дмитрий: мысли умные и не только.">
<meta property="og:type" content="article">
<meta property="article:author" content="">
<meta property="og:url" content="https://dicos.ru/setup-ip-tv-from-cn.html">
<meta property="og:title" content="Настройка IP телевидения от "Электронного Города"">
<meta property="og:description" content="">
<meta property="og:image" content="https://dicos.ru/images/guilherme-toti.jpg">
<meta property="article:published_time" content="2011-01-02 13:21:00+06:00">
</head>
<body>
<header id="header">
<!-- Container -->
<div class="container">
<!-- Logo / Mobile Menu -->
<div class="nine.columns columns">
<div id="logo">
<h1><a href="https://dicos.ru/">Косолапов Дмитрий: мысли умные и не только.</a></h1>
</div>
</div>
<!-- Navigation
================================================== -->
<div class="seven columns">
<nav id="navigation" class="menu">
<ul id="responsive">
<li><a href="https://dicos.ru/">Главная</a></li>
<li><a href="https://dicos.ru/about.html">Обо мне</a></li>
</ul>
</nav>
</div>
</div>
<!-- Container / End -->
</header>
<!-- Header / End -->
<div id="content-wrapper">
<section id="titlebar">
<!-- Container -->
<div class="container">
<div class="sixteen columns">
<nav id="breadcrumbs">
<ul>
<li>Текущее нахождение:</li>
<li><a href="https://dicos.ru/">Главная</a></li>
<li><a href="https://dicos.ru/category/sisadminstvo.html">сисадминство</a></li>
<li>Настройка IP телевидения от "Электронного Города"</li>
</ul>
</nav>
</div>
</div>
<!-- Container / End -->
</section>
<div class="container">
<div class="twelve alt columns">
<article class="post" style="margin: 0; border: 0;">
<section class="post-content">
<header class="meta">
<h2><a href="https://dicos.ru/setup-ip-tv-from-cn.html">Настройка IP телевидения от "Электронного Города"</a></h2>
<ul>
<li>By <a href="https://dicos.ru/author/admin.html">admin</a></li>
<li>Вс 02 Январь 2011</li>
</ul>
</header>
<p>У нас имеется шлюз, раздающий интернет. В качестве шлюза был взят
немного устаревший компьютер, в качестве ОС установлена убунта 10.10.
Чтобы избежать недомолвок сообщаю, о том, что интернет этот компьютер
уже разадавал</p>
<p>Для начала нужно установить
<a class="reference external" href="http://sourceforge.net/projects/igmpproxy/">igmpproxy</a>:</p>
<blockquote>
<div class="line-block">
<div class="line">качаем:</div>
<div class="line">wget
<a class="reference external" href="http://downloads.sourceforge.net/project/igmpproxy/igmpproxy/0.1/igmpproxy-0.1.tar.gz">http://downloads.sourceforge.net/project/igmpproxy/igmpproxy/0.1/igmpproxy-0.1.tar.gz</a></div>
<div class="line">распаковываем:</div>
<div class="line">tar -xvf igmpproxy-0.1.tar.gz</div>
<div class="line">заходим в каталог:</div>
<div class="line">cd igmpproxy-0.1/</div>
<div class="line">запускаем скрипт для поиска необходимых библиотек.</div>
<div class="line">./configure</div>
<div class="line">у меня на этом этапе появилась ошибка о том, что нет компилятора C++. Текст ошибки не помню, эту запись пишу по памяти. Устанавливаем:</div>
<div class="line">aptitude install gcc</div>
<div class="line">еще раз запускаем ./configure</div>
<div class="line">запускаем процесс компиляции:</div>
<div class="line">make</div>
<div class="line">устанавливаем:</div>
<div class="line">make install</div>
</div>
</blockquote>
<p>После успешного выполнения команд, настраиваем то, что установили:
nano /usr/local/etc/igmpproxy.conf
Содержимое моего файла такое:</p>
<blockquote>
<div class="line-block">
<div class="line">quickleave</div>
<div class="line">phyint eth0 upstream ratelimit 0 threshold 1</div>
<div class="line">altnet 10.0.0.0/8</div>
<div class="line">altnet 178.0.0.0/8</div>
<div class="line">altnet 238.0.0.0/8</div>
<div class="line">altnet 239.0.0.0/8</div>
<div class="line">altnet 224.0.0.0/8</div>
<div class="line">phyint eth1 downstream ratelimit 0 threshold 1</div>
<div class="line">altnet 192.168.1.0/24</div>
<div class="line">phyint eth2 disabled</div>
</div>
</blockquote>
<p>eth0 -- интерфейс, в который "воткнут" интернет
eth1 -- интерфейс, в котором "воткнута" локальная сеть</p>
<p>Пробуем запустить: /usr/local/sbin/igmpproxy
/usr/local/etc/igmpproxy.conf&
Проверяем: sysctl -a | grep forward | grep v4
результат п римерно должен быть таким:</p>
<blockquote>
<div class="line-block">
<div class="line">net.ipv4.conf.all.forwarding = 1</div>
<div class="line">net.ipv4.conf.all.mc_forwarding = 1</div>
<div class="line">net.ipv4.conf.default.forwarding = 1</div>
<div class="line">net.ipv4.conf.default.mc_forwarding = 0</div>
<div class="line">net.ipv4.conf.lo.forwarding = 1</div>
<div class="line">net.ipv4.conf.lo.mc_forwarding = 0</div>
<div class="line">net.ipv4.conf.eth0.forwarding = 1</div>
<div class="line">net.ipv4.conf.eth0.mc_forwarding = 1</div>
<div class="line">net.ipv4.conf.eth1.forwarding = 1</div>
<div class="line">net.ipv4.conf.eth1.mc_forwarding = 1</div>
<div class="line">net.ipv4.ip_forward = 1</div>
</div>
</blockquote>
<p>Далее, настраиваем правила для фаервола (сети не самый мой лучший конек,
возможно что-то сделано неоптимально):</p>
<blockquote>
<div class="line-block">
<div class="line">iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT</div>
<div class="line">iptables -A INPUT -i lo -j ACCEPT</div>
<div class="line">iptables -A INPUT -p igmp -j ACCEPT</div>
<div class="line">iptables -A FORWARD -s 178.49.xxx.xxx/24 -p udp -j ACCEPT</div>
<div class="line">iptables -A INPUT -s 192.168.1.0/255.255.255.0 -i eth1 -j ACCEPT</div>
<div class="line">iptables -A FORWARD -s 192.168.1.0/24 -p udp -j ACCEPT</div>
<div class="line">iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j MASQUERADE</div>
</div>
</blockquote>
<p>Проверяем, все должно работать. Если нет, то ищем проблемы, что сделано
не так :-)
Если все заработало, то создаем скрипт запуска нашего igmpproxy:</p>
<blockquote>
<div class="line-block">
<div class="line">touch /etc/init.d/igmpproxy</div>
<div class="line">nano /etc/init.d/igmpproxy</div>
</div>
</blockquote>
<p>у нас должен открыться редактор, в него вписываем:</p>
<blockquote>
<div class="line-block">
<div class="line">#!/bin/sh</div>
<div class="line">/usr/local/sbin/igmpproxy /usr/local/etc/igmpproxy.conf&</div>
</div>
</blockquote>
<p>Перезагружаем шлюз, все должно работать.
Если ни чего не получается, то запускаем igmpproxy в режиме
отладки: /usr/local/sbin/igmpproxy /usr/local/etc/igmpproxy.conf -d
Должны появиться такие сообщения:</p>
<blockquote>
<div class="line-block">
<div class="line">The source address 178.49.131.35 for group 239.1.1.2, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.35 for group 239.1.1.2, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.35 for group 239.1.1.2, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.35 for group 239.1.1.2, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.35 for group 239.1.1.2, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.52 for group 239.1.1.3, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.35 for group 239.1.1.2, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.52 for group 239.1.1.3, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.35 for group 239.1.1.2, is not in any valid net for upstream VIF.</div>
<div class="line">The source address 178.49.131.52 for group 239.1.1.3, is not in any valid net for upstream VIF.</div>
</div>
</blockquote>
<p>Тогда в файле /usr/local/etc/igmpproxy.conf дописываем появившийся ip адрес: altnet 239.0.0.0/8 ко всем прочим altnet-ам</p>
<div class="sharing">
</div>
<hr>
</section>
<div class="clearfix"></div>
</article>
</div>
<!-- Sidebar -->
<div class="four columns">
</div>
</div>
<!-- Container / End -->
</div>
<!-- Content Wrapper / End -->
<div id="footer-bottom">
<!-- Container -->
<div class="container">
<div class="eight columns">Blog powered by <a href="http://getpelican.com">Pelican</a></div>
<div class="eight columns">
<ul class="social-icons-footer">
<li>
<a href="#" class="tooltip top" title="You can add links in your config file">
<i class="icon-you can add links in your config file"></i>
</a>
</li>
<li>
<a href="#" class="tooltip top" title="Another social link">
<i class="icon-another social link"></i>
</a>
</li>
<li><a href="https://dicos.ru/feeds/all.atom.xml" class="tooltip top" title="RSS"><i class="icon-rss"></i></a></li>
</ul>
</div>
</div>
<!-- Container / End -->
</div>
<!-- Footer Bottom / End -->
<!-- Javascripts -->
<script src="https://dicos.ru/theme/js/jquery.min.js"></script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter14462131 = new Ya.Metrika({
id:14462131,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
} catch(e) { }
});
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = "https://mc.yandex.ru/metrika/watch.js";
if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/14462131" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --> </body>
</html>