设置卫星互联网连接
![]() 现代大多数卫星互联网连接都使用 USB、802.3 或 802.11 连接到计算机,这意味着无需使用 DVB-S 相关软件... 此外,linuxtv-dvb-apps 不在当前版本的 Alpine 中,可以使用 v4l-utils-dvbv5 代替吗? (讨论) |
卫星互联网连接指南
简介
本文档简要解释了卫星技术、其工作原理、您需要的设备、配置以及如何在多个客户端之间共享它。主要重点是互联网连接,即不包括卫星电视。
它是如何工作的?
首先,我们(使用陆地互联网连接)向卫星服务器发出请求,通常通过隧道。它将从互联网检索我们的信息并将其发送到卫星。最终,我们将使用抛物面天线和卫星卡从卫星接收数据到我们的家。
卫星非常适用于具有小请求数据大小和更大响应大小的协议。大的响应延迟是卫星互联网服务的最大问题。这可能会阻止使用 VoIP 等交互式服务。延迟是由卫星与地球表面之间的距离引起的,通常为 36000 公里。平均总延迟时间为 300-400 毫秒。
要安装卫星系统,我们需要
- DVB-S 卡
- 抛物面天线(卫星天线罩)
- LNB 数字转换器
技术信息
卫星链路与有线链路非常不同。它可能会导致其他问题,例如可达性、隐私等。也可能存在与天气相关的问题,尤其是在下雪或下雨的情况下。
天线 / 转换器
抛物面天线具有非常高的增益。卫星转发器频率为 11 GHz 至 12.7 GHz。数字转换器将其转换为 1-2 GHz,并通过长达 30-40 公里的同轴电缆将信号发送到 DVB-S 卡接收器。本文档假定您的抛物面天线已正确安装和对准,并且使用了适当的转换器(通常为 Ku 波段)。
DVB-S 接收卡
DVB-S 卡通过同轴电缆接收模拟信号,并将其转换为类似于以太网上的数字信号。之后,操作系统将其转换为 TCP/IP 数据包。
DVB 设置
安装 DVB-S 卡并检查系统是否识别
注意:在大多数情况下,您需要 PCI 版本 2.1 或更高版本(检查您的 DVB 卡规格),即奔腾 III 或更新的系统。
lspci
确保内核模块已加载
您必须使用 Alpine 1.7.10 或更高版本,它应该在启动时为 DVB 卡加载适当的内核模块。要检查 DVB 设备是否已安装,请运行
ls -la /dev/dvb*
安装 LinuxTV 应用程序
apk_add linuxtv-dvb-apps
创建和编辑文件 channels.conf
channels.conf 包含您正在使用的每个卫星的设置。例如,卫星Sirius-4 Nordic Beam 具有以下参数
- 频率 - 12322Mhz
- 极化 - 垂直
- 符号率 - 27.654711Ms/s
- FEC -7/8。
您需要从您的 ISP 获取参数或在互联网上找到它们。以下示例适用于“Sirius-4 Nordic Beam”
echo "Sirius4-Nord:12322:v:0:27500:0:0:0" >> /etc/channels.conf
调谐 DVB 接收器
检查配置的频道
szap -c /etc/channels.conf -q
调谐到频道号 001
szap -c /etc/channels.conf -n 1
在某些情况下,您可能需要永久在后台运行此命令,因为某些 dvb 卡的内核模块中存在错误。
- 选项 A
szap -c /etc/channels.conf -n 1 > /dev/null 2>&1 &
- 选项 B
start-stop-daemon --start --background --exec /usr/bin/szap -- -c /etc/channels.conf -n 1
设置 DVB 网络接口
您的 ISP 为您提供 PID,用于从同一频率上的许多信号中选择特定传输。
dvbnet -a 0 -p $PID
ifconfig dvb0_0 hw ether $MAC ifconfig dvb0_0 $IP netmask 255.255.255.255 up
这里 $IP 是任何与您的网络上的任何地址不匹配的 IP 地址。您在此处指定的 $MAC 通常是您的 DVB 卡的 MAC 地址,在某些情况下,ISP 会为您提供 MAC 地址。在任何情况下,ISP 都只为注册的 MAC 地址发送数据。
由于卫星连接的性质,DVB 接口接收到的数据包来自其他来源,通常来自陆地互联网连接,或者在大多数情况下,来自虚拟隧道设备。为了接收此类数据包,应在 dvb0_0 接口上禁用源验证。
echo "0" > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter
实现此目的的另一种方法是允许 shorewall 使用 ROUTE_FILTER 和 routefilter 参数来控制它。
测试卫星接口是否正在接收数据
您应该看到许多来自您的 ISP 的其他客户端的数据包。
apk add tcpdump
tcpdump -n -i dvb0_0
与 ISP 认证
在您通过卫星接收数据之前,您的 ISP 应该验证您是否是其注册客户端。有几种常用的技术
- 一些 ISP 使用“代理身份验证”。当您使用他们的代理时,您还需要提供登录名和密码才能继续请求。完成后,ISP 会使用您的 IP 地址计算您的 MAC 地址,并将答案发送到该 MAC 地址。
- 其他 ISP 要求您首先建立 VPN 连接(使用您的登录名和密码),然后他们将控制您的注册帐户(他们在其中检索您的 MAC 地址)并将数据发送到您的卡(您的 MAC 地址)。
- 如果您有静态公共 IP,那么也许最方便的方式是 ISP 建议建立 GRE/IPIP 隧道,该隧道用于向 ISP 的卫星服务器发送经过身份验证的请求。随后,ISP 通过您连接的卫星发送回复。
以下是设置与 ISP 的 GRE 隧道的示例
创建静态路由
所有对您的陆地 ISP 的 DNS 服务器的查询都应通过陆地线路进行。
route add $DNS1 gw $DEFAULT_LAND_GATEWAY
route add $DNS2 gw $DEFAULT_LAND_GATEWAY
GRE 数据包应始终通过陆地默认网关。
route add $SAT_ISP_GRE_IP gw $DEFAULT_LAND_GATEWAY
假设 $DEFAULT_LAND_GATEWAY 是陆地 ISP 提供的默认网关,$DNSx 是您的陆地 ISP 提供的 DNS 服务器,$SAT_ISP_GRE_IP 是卫星 ISP 的 GRE 隧道的远程 IP。
默认路由的更改将在创建隧道接口后进行。
创建 GRE 隧道并设置隧道接口
apk_add iproute2
modprobe ip_gre
modprobe tun
ip tunnel add tun0 mode gre local $MY_STATIC_IP remote $SAT_ISP_GRE_IP ttl 250
ifconfig tun0 $LOCAL_TUN_IP pointopoint $REMOTE_TUN_IP up
隧道参数,例如 $SAT_ISP_GRE_IP、$LOCAL_TUN_IP 和 $REMOTE_TUN_IP 由卫星 ISP 提供。
现在创建一个使用隧道接口的新默认路由。大多数请求将通过 GRE 隧道发送到卫星 ISP,源 IP 为 $LOCAL_TUN_IP。预期通过 DVB 接口接收目标 IP 为 $LOCAL_TUN_IP 的回复。
route del default
route add default dev tun0
测试卫星互联网连接
ping wiki.alpinelinux.org
tcpdump -n -i tun0
tcpdump -n -i dvb0_0 host $LOCAL_TUN_IP
共享卫星互联网连接
假设我们需要与通过第二个以太网接口连接到卫星互联网机器的本地网络中的客户端共享卫星互联网。这需要启用 IP 转发并设置简单的 SNAT 地址伪装和流量过滤规则。最简单的方法是为此目的使用 Shorewall。
安装 shorewall
apk add shorewall
设置 shorewall.conf
IP_FORWARDING=yes ROUTE_FILTER=No CLAMPMSS=Yes # See RFC2923
设置 zones
inet ipv4 loc ipv4 tun ipv4 dvb ipv4
设置 interfaces
loc eth1 detect routefilter inet eth0 detect norfc1918,routefilter tun tun0 - norfc1918,routefilter dvb dvb0_0 -
设置 policy
loc all REJECT info dvb all REJECT info all all DROP info
在 masq 中设置 SNAT 地址伪装
tun0 eth1
设置 params
#This IP address are provided by the satellite ISP SAT_ISP_GRE_IP= LOCAL_TUN_IP=
设置 rules
SECTION ESTABLISHED REJECT dvb fw:!$LOCAL_TUN_IP
SECTION RELATED REJECT dvb fw:!$LOCAL_TUN_IP SECTION NEW DNS/ACCEPT fw inet Ping/ACCEPT fw inet
#Allow Web/FTP queries via GRE tunnel to ISP # Answers come as RELATED/ESTABLISHED traffic via DVB Web/ACCEPT fw tun Web/ACCEPT loc tun FTP/ACCEPT fw tun FTP/ACCEPT loc tun Ping/ACCEPT fw tun Ping/ACCEPT pr tun
设置 tunnels
gre inet $SAT_ISP_GRE_IP
结论
本文档回顾了如何设置和共享卫星互联网连接的基本思路。Alpine Linux 的后续版本将包含启动和配置脚本(请参阅邮件列表)。请注意,更高级的流量路由超出了本文档的范围。
另一个超出范围的高级主题是如何使用远程代理/VPN 服务来保护/加密您的卫星流量,以防止抓取者。此配置可以保护 HTTP/POP3 和其他类型的数据,防止未经授权的抓取,试图嗅探个人邮件、电子地址和其他信息。