最后由 Tabing010102 更新于 2022年11月4日
需求:通过校园网认证,nat(双栈)到路由器,其他设备通过wlan连接路由器上网,且需要端口映射(远程桌面等服务)
背景:目前校园网使用web页面验证,ipv4出口为电信单线(nat,拿到的地址为10.x.0.0/16
内网地址),ipv6出口为教育网(看起来拿到的是/128
公网地址,无分配前缀)
注意:本篇非常不严谨,属于能动就行的水平
下文(伪多播网速叠加):传送门
整体:
网络拓扑?:(网口)<—>Linux VM<—>路由器<—>(其他设备)
认证部分:实际上web网页验证应该可以通过抓包,分析出认证方法和心跳包并进行模拟,但是我懒了,直接在VM上装GUI用浏览器认证了(
此外,由于不知道认证心跳机制,开了一个终端一直ping 223.5.5.5
假装可以保持心跳
转发部分:
Linux VM开启ipv4及ipv6内核参数:
# ipv4 kernel forward
net.ipv4.ip_forward=1
# ipv6 kernel forward
net.ipv6.conf.all.forwarding=1
网络配置:
这里VM认证后仅需转发给路由器,偷懒没有配置dhcpv4,由于只能拿到/128
的ipv6地址,ipv6也只能采用nat66形式
VM网卡 eth0
:连接校园网网口,DHCP获取ip,ipv4为内网地址(10.x.x.x/16
)ipv6为公网地址(2001:250:x::x:x/128
)
VM网卡 eth1
:连接路由器wan
,固定ip(192.168.0.1/24
,fd90:90a4:5a47::1/64
)
路由器wan
:连接VM网卡 eth1
,固定ip(192.168.0.2/24
,fd90:90a4:5a47::2/64
)
VM路由配置:
注意:可能需要将MASQUERADE
规则放到chain末端(不确定
ipv6获取地址后,不知为什么没有下发默认路由,因此需要手动配置ipv6默认路由
ip -6 route add default dev eth0
ipv4 nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
ipv6 nat
ip6tables -t nat -A POSTROUTING -s fd90:90a4:5a47::/64 -j MASQUERADE
ip6tables -A FORWARD -i eth1 -o eth0 -j ACCEPT
路由器配置:
路由器RA和DHCPv6需要设置为server mode
,由于Android手机仅支持SLAAC分配,需要启用SLAAC,否则Android手机将不能使用ipv6网络
开启ipv6 nat
ip6tables -t nat -A POSTROUTING -o wan -j MASQUERADE
效果:
端口转发部分:
路由器需要在Network -> Firewall -> Port Forward中设置端口转发(wan -> lan,对应ip、协议和端口)
VM需要设置DNAT,注意PREROUTING
中需要指定流入网卡,POSTROUTING
在nat中已经设置了MASQUERADE
(或iptables会自动添加对应DNAT的SNAT),可以不再用手动设置SNAT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 4001 -j DNAT --to-destination 192.168.0.2:4001
此为tcp 4001 -> 路由器 tcp 4001,若需要udp或其他协议则需要再做添加
可能产生的问题:
Windows显示ipv6无Internet访问权限或无网络访问权限
进行ipv6 dns查询时,由于ipv4和ipv6出口不同,可能会有部分域名查询出的结果不对,如:imgcache.qq.com
。这里我将ipv6 dns手动设置为::1
、空,暂时解决了此问题
参考:
How to set up a NAT router on a Linux-based computer | How To Wiki | Fandom
Debian Linux 設定 IPv6 NAT | 呆翰工作領域 (dd-han.tw)
OpenWRT/PandoraBox 校园网IPv6-NAT实战 – DragonCave
双网卡Iptables端口转发 – 云上的天涯 – 博客园 (cnblogs.com)
networking – Windows 10, disable auto-configuring DNS servers via IPv6 connection – Super User
Views: 41