设置卫星互联网连接

来自 Alpine Linux
此材料已过时...

现代大多数卫星互联网连接都使用 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 和其他类型的数据,防止未经授权的抓取,试图嗅探个人邮件、电子地址和其他信息。

更多信息