找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11|回复: 0
打印 上一主题 下一主题
收起左侧

在Debian12将随身4G棒NAT转有线网络,支持ipv4和ipv6

[复制链接]
跳转到指定楼层
楼主
背景
    在新的公司控制比较严格,连接公司的局域网很多站都上不了,对于程序开发有很多不方便的地方,有必要搭建自己的个人私有网络。下图是网络的组成:
4G棒
    4G棒需要支持usb网卡功能,插到Debian工控机可以自动生成usb网卡。有些4G棒带wifi功能,可以通过wifi连接,这里不推荐直接用4g棒的wifi,因为wifi功能比较弱,网络稳定性不如专业wifi路由器。现在4G棒支持ipv4和ipv6
工控机
    这里用的工控机是Debian系统,Debian系统支持apt安装各种网络工具,系统比较稳定,适合长期不断电运行。要求工控机至少带一个有线RJ45网口,方便将usb网卡nat转有线网卡。
wifi路由器
    普通路由器即可,但是为了支持ipv6,要选择带ipv6功能的路由器。一般商业路由器带一个WAN口和若干LAN口,其中WAN口连接工控机的网口,进行静态ip上网。
实施方法
1、工控机通过4B棒上网
    将4G棒插入到工控机的USB口,用ifconfig命令查看当前的USB网卡。
    可以看到4G棒已经通过生成usb0网卡,并且分配了ipv4和ipv6,工控机具备连接外网的能力。
2.usb0通过NAT转有线网卡enP3p49s0
    有线网卡需要具备dhcp服务器功能,既要支持ipv4又要支持ipv6,需要安装两个工具dnsmasq和radvd,执行sudo apt install dnsmasq radvd,然后修改/etc/dnsmasq.conf,添加内容如下:
  1. # 监听接口
  2. interface=enP3p49s0
  3. no-dhcp-interface=lo,usb0,enP4p65s0,wlP2p33s0

  4. # IPv4 DHCP
  5. dhcp-range=192.168.123.100,192.168.123.200,24h
  6. dhcp-option=option:router,192.168.123.1
  7. dhcp-option=option:dns-server,192.168.123.1

  8. # IPv6 - 禁用DHCPv6,让RADVD处理SLAAC
  9. # dhcp-range=fd00::100,fd00::200,64,24h

  10. # DNS设置
  11. server=8.8.8.8
  12. server=2001:4860:4860::8888
  13. cache-size=1000
复制代码
然后编辑/etc/radvd.conf,添加内容如下:
  1. interface enP3p49s0
  2. {
  3.     AdvSendAdvert on;
  4.     AdvManagedFlag off;
  5.     AdvOtherConfigFlag on;
  6.    
  7.     # 路由通告间隔
  8.     MinRtrAdvInterval 3;
  9.     MaxRtrAdvInterval 10;
  10.    
  11.     # 前缀配置
  12.     prefix fd00::/64
  13.     {
  14.         AdvOnLink on;
  15.         AdvAutonomous on;
  16.         AdvRouterAddr off;
  17.     };
  18.    
  19.     # DNS服务器配置(不使用弃用的preference参数)
  20.     RDNSS fd00::1
  21.     {
  22.         # 移除弃用的AdvRDNSSPreference参数
  23.     };
  24. };
复制代码
然后需要设置debian支持usb0到enP3p49s0的ipv4和ipv6转发功能,脚本如下:
  1. #!/bin/bash
  2. echo "========== usb0共享ipv4和ipv6到网卡enP3p49s0配置 =========="
  3. echo "清除所有 IPv4/IPv6 地址:"
  4. sudo ip addr flush dev enP3p49s0 &&
  5. sleep 2s
  6. echo "关闭 enP3p49s0 网卡"
  7. sudo ip link set enP3p49s0 down &&
  8. sleep 2s
  9. echo "设置ipv4地址"
  10. sudo ip addr add 192.168.123.1/24 broadcast 192.168.123.255 dev enP3p49s0 &&
  11. sleep 2s
  12. echo "设置ipv6地址"
  13. sudo ip -6 addr add fd00::1/64 dev enP3p49s0 &&
  14. sleep 2s
  15. sudo ip -6 addr add fe80::c0:74ff:fe2b:ff1b/64 dev enP3p49s0 &&
  16. sleep 2s
  17. echo "查看网卡"
  18. ip addr show enP3p49s0 &&
  19. sleep 1s
  20. echo "启动网卡"
  21. sudo ip link set enP3p49s0 up &&
  22. sleep 4s
  23. echo "添加ipv4转发"
  24. sudo iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE &&
  25. sleep 1s
  26. sudo iptables -A FORWARD -i enP3p49s0 -o usb0 -j ACCEPT &&
  27. sleep 1s
  28. sudo iptables -A FORWARD -i usb0 -o enP3p49s0 -m state --state RELATED,ESTABLISHED -j ACCEPT &&
  29. sleep 1s
  30. sudo iptables-save | sudo tee /etc/iptables/rules.v4 &&
  31. sleep 1s
  32. echo "添加ipv6转发"
  33. sudo ip6tables -t nat -A POSTROUTING -o usb0 -j MASQUERADE &&
  34. sleep 1s
  35. sudo ip6tables -A FORWARD -i enP3p49s0 -o usb0 -j ACCEPT &&
  36. sudo ip6tables -A FORWARD -i usb0 -o enP3p49s0 -m state --state RELATED,ESTABLISHED -j ACCEPT &&
  37. sleep 1s
  38. sudo ip6tables -A INPUT -p icmpv6 -j ACCEPT &&
  39. sleep 1s
  40. sudo ip6tables -A FORWARD -p icmpv6 -j ACCEPT &&
  41. sleep 1s
  42. sudo ip6tables -A INPUT -p udp --dport 546 -j ACCEPT &&
  43. sleep 1s
  44. sudo ip6tables -A INPUT -p udp --dport 547 -j ACCEPT &&
  45. sleep 1s
  46. sudo ip6tables-save | sudo tee /etc/iptables/rules.v6 &&
  47. sleep 1s
  48. echo "重启dnsmasq服务"
  49. sudo systemctl restart dnsmasq &&
  50. sleep 2s
  51. echo "重启radvd服务"
  52. sudo systemctl restart radvd &&

  53. sleep 10s

  54. echo "========== 网络诊断 =========="
  55. echo ""
  56. echo "1. 接口状态:"
  57. ip addr show enP3p49s0
  58. echo ""
  59. ip addr show usb0
  60. echo ""

  61. echo "2. IPv6路由:"
  62. ip -6 route
  63. echo ""

  64. echo "3. IPv6转发状态:"
  65. sysctl net.ipv6.conf.all.forwarding net.ipv6.conf.default.forwarding net.ipv6.conf.enP3p49s0.forwarding net.ipv6.conf.usb0.forwarding
  66. echo ""

  67. echo "4. 服务状态:"
  68. systemctl status radvd --no-pager | head -20
  69. echo ""
  70. systemctl status dnsmasq --no-pager | head -20
  71. echo ""

  72. echo "5. 防火墙规则:"
  73. sudo ip6tables -L -vn
  74. echo ""
  75. sudo ip6tables -t nat -L -vn
  76. echo ""

  77. echo "6. 测试连通性:"
  78. echo "从主机ping外部IPv6:"
  79. ping6 -c 2 2001:4860:4860::8888
  80. echo ""
  81. echo "从enP3p49s0 ping自己:"
  82. ping6 -I enP3p49s0 -c 2 fd00::1
复制代码
执行一下脚本,即可进行网络nat转换。

可以看到有线网卡enP3p49s0已经有ipv4和ipv6。
设置wif路由器
这里用小米路由器AX1500,将小米路由器的WAN口和工控机有线网口连接,让工控机给小米路由器分配ipv4和ipv6,登陆小米路由器web上网设置页面,设置如下:
                                 
设置完成后,等待路由器连接到有线网络,直到出现ipv4地址和ipv6地址,说明网络连接成功。

测试ipv6连接
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

出现以下测试结果说明ipv6已经支持

打开中国科学技术大学测速网站:https://test6.ustc.edu.cn/

运营商之间ipv6速度问题
    虽然三大运营商都是支持ipv6,但是存在跨运营商限制速问题。如果打算用ipv6连接家里的网络和自搭建公司个人网络互通,最好是用同一家运营商,这样不存在速度问题,基本都能拉满。家里面用的是联通光纤送了动态公网ipv6,通过软路由PPPOE拨号上网,用DDNS-Go进行动态域名解析到ipv6地址。
debian工控机的其他用途
    除了上述nat转换功能,还可以用工控机来做其他事情,下面列举几个
1.网络协议和数据分析:由于所有网络都是经过工控机nat转换,所有网络请求都是经过工控机,安装wireshark后,可以用来抓所有的网络包;
2.工程代码托管:,比如安装gitea后,就可以像github那样来托管代码;
3.个人博客托管:,比如安装typecho后,可以在后端编辑文章,记录自己的技术分享;
4.代码测试:linux系统有很多工具,很方便安装各种软件库,然后再借助vscode的remote开发,随时连接到服务器进行代码学习开发验证;
5.资料备份:不像收费的云服务器实例有容量限制,个人服务器自己加装固态硬盘,可以把使用频率低的问题拷贝到服务器备份。

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表