下一页 上一页 目录

6. Linux 下的配置

在本节中,我将假设使用西门子兼容的卡,例如 Hauppage WinTV DVB 卡。对于此类卡,您可以从 LinuxTVLinux 下的 DVB-s PCI 卡 下载驱动程序。

不幸的是,(目前)Linux 尚无适用于 SkyStar2(Netsystem 卡)的驱动程序!

6.1 驱动程序安装

下载驱动程序后,您必须将其解压到一个目录,进入该目录并键入 “make” 和 “make insmod”。为此,您需要拥有实际的内核源代码,位于 /usr/src/linux 下(除非您从 https://linuxkernel.org.cn 下载并重新编译它们)。

执行 “make insmod” 后,您的系统应该已加载 DVB 模块。要卸载它们,只需键入 “make rmmod”。

6.2 设置 /etc/dvbd.conf

/etc/dvbd.conf 文件用于设置您的 DVB 卡的数据链路参数。以下是主要设置:

示例

------------------------------------------

# DVB 接收器配置文件,(c) 2000 data planet international

# 标准位置在 /etc

# LNB 电源 开=1/关=0

power 1

# 符号率 [符号/秒]

symbolrate 22000000

# ASTRA TR 114

frequency 12640000

# 22 kHz 信号 开=1/关=0

ttk 1

# diseqc 开=1/关=0

diseqc 0

# AFC 开=1/关=0

AFC 1

# 极化 H=1/V=0

polarisation 1

# MPE 过滤器的设置,PID 和 MAC 过滤,有效的 MAC 字节

filter_0 512

filter_1 785 00:D0:5C:1E:96:01 48

filter_2 786 00:D0:5C:1E:96:01 48

filter_3 1041 00:D0:5C:1E:96:01 48

-----------------------------------------

filter_0 没有 MAC 和 位过滤器值,因为正确的 MAC 地址是从 IP 地址计算出来的(参见附录 A)。我们将看到此设置仅对某些 ISP 有效,对于其他 ISP,我们将不得不更改 dvbd.c。

6.3 Dvbd 守护进程

一旦您的 /etc/dvbd.conf 文件配置正确,您就可以启动 dvbd 应用程序,如果执行时不带 -d 选项,则会将信号质量级别写入 stdout。

除非您从卫星接收效果不佳(检查电缆和/或天线指向)。

注意

也许您需要在 dvbd.h 中更改这一行

#define network_device "eth0"

改为

#define network_device "ppp0"

具体取决于您用于连接 Internet 的接口,是 eth0 还是 ppp0:键入 “make” 以更新二进制文件并重启 dvbd。

6.4 如何配置 EON 服务

现在您有了良好的信号,您可以尝试使用一些卫星服务。

对于 EON,请转到 Netscape 首选项中的 “proxy” 设置,并在 HTTP 和 FTP 下设置

proxy.xxx.europeonline.net

并在 “port” 中设置 8080,FTP 代理的 “port” 设置为 8090。

其中 xxx 是您正在使用的转发器编号(103、113、114 或 115)(更多信息请参见附录 B)。

现在您应该可以随意浏览了.... 祝您导航愉快。

要与多个客户端共享 EON 服务,您可以使用 Squid 代理 应用程序,启用到 EON 代理的级联。

有关更复杂的 EON 使用,例如更复杂的级联代理或用户共享,请参阅 EON Linux Masquering FAQ Page

6.5 如何使用 Netsystem 服务

Netsystem 服务在 Linux 下比 EON 稍微复杂一些,因为除了 EON 之外,您还需要设置

  1. VPN 连接
  2. pppd 的补丁(仅在使用 pppd <= 2.4.0 时需要)
  3. 带有简单脚本的路由设置
  4. dvbd.c 的补丁
  5. 测试它
  6. 获得更好的性能
  7. 与多个客户端共享 Netsystem

VPN 连接

首先,您需要下载 VPN PPTP 客户端应用程序

解压、编译并安装后,您应该在您的 /etc/ppp/pap-secrets 和 /etc/ppp/chap-secrets 文件中添加一个条目,如下所示

“login” * “password” *

其中 “login” 和 “password” 与 Netsystem 注册 中的相同。

pppd 的补丁

PPTP 描述 中所述,您需要修补您的 pppd 守护进程以支持与 Netsystem VPN 服务器(Linux 服务器)的连接。

警告:使用 pppd 版本 >= 2.4.0,您不需要 pppd 补丁。

所以您必须

  1. 下载 最新的 pppd 版本
  2. 此处 下载并解压 pppd 的对应补丁
  3. 将 pppd 解压到一个目录中
  4. 键入 “patch -p0 < patch_name”
  5. 进入 pppd 目录
  6. 键入 “make”、“make install”

路由设置

现在您的 pppd 将能够与

“pptp vpn.netsystem.com debug user <login>”

一起工作,其中 <login> 是您在 Netsystem 中的登录帐户:您应该在日志文件 (/var/log/messages) 中看到 ppp1 连接调试信息。

如果一切正常,您应该使用 “ifconfig” 命令看到 ppp1 接口。

如果您仍然遇到身份验证问题,请在您的 /etc/ppp/options 文件中添加 “noauth” 行。

一旦 ppp1 接口启动,您应该执行以下操作

  1. 键入 “ifconfig ppp1” 并找到 “P-t-P:” 字符串右侧的 IP 地址(我将其称为 IP)。
  2. 使用 “route del IP” 从路由表中删除它
  3. 使用 “route add IP dev ppp0” 将其添加到 ppp0 接口
  4. 使用 “route del default” 从 ppp0 中删除默认网关
  5. 使用 “route add default dev ppp1” 将默认网关添加到 ppp1

请求第 1-3 点是因为点对点接口在 Linux 下进行管理时,会将网关添加到新接口(在这种情况下这不是一个好主意):除非这样做,否则您将遇到无限循环,因为您的数据包将不断地自身封装。

第 4、5 点用于使 “所有互联网请求” 都通过 ppp1 接口,因此我们将通过使用 VPN 连接来访问 “世界”:这在某些情况下可能不是最优的,例如对于 DNS 查询,可以将其直接发送以避免不必要的卫星延迟时间。

您可以尝试使用以下小程序来代替手动设置路由配置

“netsystem.on” 脚本

______________________________________________________________________

route add IP_DNS1 dev ppp0

route add IP_DNS2 dev ppp0

route add -net 212.31.242.0 netmask 255.255.255.0 dev ppp0

pptp vpn.netsystem.com user <login>

/bin/sleep 5

route add default dev ppp1

______________________________________________________________________

“netsystem.off” 脚本

______________________________________________________________________

route del IP_DNS1 dev ppp0

route del IP_DNS2 dev ppp0

route del -net 212.31.242.0 netmask 255.255.255.0 dev ppp0

kill -9 `ps x|grep "pppd"|grep "<login>"|grep -v "ps"|tr " " "\n"|head -n 2`

rm --force /var/lock/LCK..tty*

rm --force /var/run/pptp/*

rm --force /var/run/ppp1.pid

killall -9 pptp

______________________________________________________________________

IP_DNS1 和 IP_DNS2 是您的 dns 服务器的 ip 地址(主服务器和辅助服务器)。

<login> 是您的 Netsystem 帐户的登录名。

我在 kernel 2.4.6 RedHat 7.1 下进行了测试,它工作得非常好(没有任何关于 ppp1 无限循环或类似问题)。

这一行

kill -9 `ps x|grep "pppd"|grep "<login>"|grep -v "ps"|tr " " "\n"|head -n 2`

用于查找与 VPN 服务器(ppp1 接口)通信的 pppd 进程的 PID:请注意,您不能只键入 “killall pppd”,因为您的 ppp0 接口也会关闭。

dvbd.c 的补丁

在解决了 PPTP 相关问题后,您必须更改 dvbd.c 中的某些行,靠近文件末尾

if (strcmp (v, "filter_0") == 0) { if (s != NULL) { unsigned char ip[4];
dvbcfg[0].status = ON ;
dvbcfg[0].filter.data[0] = 0x3eff ;
dvbcfg[0].filter.pid = (__u16) atoi (s) ;
dvbcfg[0].filter.mode = 0x0c ;
if (ipget (ip, network_device)) { fprintf(stderr,"Can't get local ip address. Stop.\n") ; return -1 ; }
syslog (LOG_NOTICE, "Local ip is %u:%u:%u:%u\n", ip[0], ip[1], ip[2], ip[3]);
dvbcfg[0].filter.data[1] = (ip[3] << 8) | 0x00ff ; 
dvbcfg[0].filter.data[2] = (ip[2] << 8) | 0x00ff ; 
dvbcfg[0].filter.data[6] = (ip[1] << 8) | 0x00ff ; 
dvbcfg[0].filter.data[7] = (ip[0] << 8) | 0x00ff ; 
dvbcfg[0].filter.data[8] = (0x02 << 8) | 0x00ff ; 
dvbcfg[0].filter.data[9] = (0x00 << 8) | 0x00ff ;
setmac (ip) ; }
else { dvbcfg[1].status = OFF ; } }

现在,以下行

dvbcfg[0].filter.data[1] = (ip[3] << 8) | 0x00ff ;

dvbcfg[0].filter.data[2] = (ip[2] << 8) | 0x00ff ;

dvbcfg[0].filter.data[6] = (ip[1] << 8) | 0x00ff ;

dvbcfg[0].filter.data[7] = (ip[0] << 8) | 0x00ff ;

dvbcfg[0].filter.data[8] = (0x02 << 8) | 0x00ff ;

dvbcfg[0].filter.data[9] = (0x00 << 8) | 0x00ff ;

将被更改为

dvbcfg[0].filter.data[1] = (MAC[5] << 8) | 0x00ff ;

dvbcfg[0].filter.data[2] = (MAC[4] << 8) | 0x00ff;

dvbcfg[0].filter.data[6] = (MAC[3] << 8) | 0x00ff ;

dvbcfg[0].filter.data[7] = (MAC[2] << 8) | 0x00ff ;

dvbcfg[0].filter.data[8] = (MAC[1] << 8) | 0x00ff ;

dvbcfg[0].filter.data[9] = (MAC[0] << 8) | 0x00ff ;

其中 MAC[0]:MAC[1]:MAC[2]:MAC[3]:MAC[4]:MAC[5] 是我们的 MAC 地址(根据 Netsystem 注册)。

例如,使用地址 00:d0:d0:d0:d0:d0,我们将得到

dvbcfg[0].filter.data[1] = (0xd0 << 8) | 0x00ff ;

dvbcfg[0].filter.data[2] = (0xd0 << 8) | 0x00ff;

dvbcfg[0].filter.data[6] = (0xd0 << 8) | 0x00ff ;

dvbcfg[0].filter.data[7] = (0xd0 << 8) | 0x00ff ;

dvbcfg[0].filter.data[8] = (0xd0 << 8) | 0x00ff ;

dvbcfg[0].filter.data[9] = (0x00 << 8) | 0x00ff ;

注意十六进制表示法 0x??

之后,您必须键入 “make” 并使用新创建的 dvbd。

注意:要成功修补 dvbd.c,您需要使用 dvb 驱动程序版本 >= 0.8.2,因为旧版本存在一些不稳定性问题。

测试它

最后,我们可以在 Linux 下测试 Netsystem。我们可以 “ping www.somehostpingable.com” 并检查响应时间:应该在 400 到 2000 毫秒之间。

如果您仍然有问题,您应该检查 VPN 接口是否一切正常

  1. 打开您首选的网络嗅探器(例如 Ethereal)并开始分析 “ppp0” 接口(是 ppp0,不是 ppp1!!)
  2. 执行 ping 命令

如果 VPN 正常,您应该每秒看到 2 个(或可能 1 个)GRE 封装的数据包,无休止地持续。如果您看不到任何内容,则说明您的 VPN 工作不正常:停止它并重新启动它。

获得更好的性能

一旦您设置好所有内容,您就**需要**使用(特别是对于 Netsystem 服务)一些 “下载加速器” 以获得更好的性能:更多信息请参见附录 A。

与多个客户端共享 Netsystem

为此,您可以启用 “IP 伪装”,允许您的客户端像使用普通 Internet 接口一样使用 VPN;主要问题是我们的卫星连接非常适合下载,但在浏览网页(或其他比下载更具交互性的服务)方面的性能较差。

您可以考虑使用 Squid 代理Socks 代理,但这并不能解决您的问题,因为即使现在,您的所有请求仍将被转发到同一接口,即 VPN。

解决方案是使用 2 个路由表,一个使用直接线路接口,另一个使用 VPN 接口。您可以这样做

  1. 确保已安装 “iproute2” 命令(例如在 shell 中键入 “ip” 并检查它是否提示任何内容),更多信息请参见 Linux 2.4 高级路由 HOWTO
  2. 确保已启动 Netsystem 服务并注释 ppp1 接口 IP 地址,我们将其称为 LOCALIP。
  3. 键入:“echo "210 sat" >> /etc/iproute2/rt_tables”,为了更方便地将 “sat” 规则称为 210
  4. 键入:“ip rule add from LOCALIP table sat”,以创建与来自 LOCALIP IP 地址的所有请求相关的 “sat” 表。
  5. 键入:“ip route add default dev ppp1 table sat”,将所有 “sat” 请求(见上文)发送到 ppp1 接口。
  6. 如果您使用 Socks 代理,请确保在 sockd.conf 文件中将 “external” 设置为 LOCALIP。
  7. 如果您使用 Squid 代理,请确保在 squid.conf 文件中将 “tcp_outgoing_address” 设置为 LOCALIP。

完成所有这些操作后,您将注意到有两种工作方式:在没有任何代理的情况下,您的客户端将请求直接线路,而通过使用代理(squid 或 sockd),请求将被转发到 VPN 接口,并最终到达卫星。

请注意,您可能希望使用 sockd 而不是 squid,因为卫星请求通常用于下载(而 squid 通常用于浏览...)。

iproute2 命令的作用是,当您向 sockd 或 squid 请求地址时,相应的代理(使用 IPLOCAL IP 地址,在运行时由代理网络守护进程绑定)请求进入 TCP/IP 协议栈,内核会将它转发到 sat 表(感谢上面的第 4 点),并最终(通过使用第 5 点)转发到 ppp1 接口。所有其他规则将被转发到经典的默认路由(我的意思是通过 ppp0 接口或任何其他用于直接 Internet 连接的接口)。

6.6 如何使用 Sat Node 服务

您必须按照与 Netsystem 相同的所有说明进行操作。

在启用 VPN 连接之前,您需要键入

与 Netsystem 真正不同的是,我们没有在 ppp0 接口上强制 VPN 网关(212.56.224.34,ppp1 接口中 “P-t-P” 右侧的 IP),而是强制另一个 IP(212.56.224.36)。所有其他事项都应该保持不变。

感谢 Ricardo Santiago Mozos 和 Norberto Garcia Prieto。

6.7 Linux 下的 OpenSky 服务

  1. 您需要在 Opensky 注册站点 注册。您将在几天内收到一封确认电子邮件,其中包含登录名和密码。
  2. 之后,您必须转到 https://sdr.eutelsat.net 并输入登录名和密码数据进行连接。
  3. 设置代理:“proxy.eutelsat.net:8080”。

强烈建议使用下载器应用程序(更多信息请参见附录 A)以获得更好的性能。

OpenSky 是最新的卫星服务,每月提供 300 MB 的免费流量。

配置与 EON 服务非常相似,您必须使用从 LinuxTV 下载的 0.8.2 西门子驱动程序,然后您**需要**修补 dvbd 应用程序。

要应用补丁并测试 OpenSky,您可以在以下位置找到有用的信息


下一页 上一页 目录