1.
准备与环境确认
确认已拿到的
香港原生IP信息(IP、掩码、网关、DNS、VLAN/PPPoE参数)。在路由器或服务器上备份当前配置:sudo ip addr show, ip route show, ip rule show。确保能SSH或控制台访问目标设备并能重启网络服务。
2.
物理/接口配置
将香港链路接入到指定WAN口(或子接口)。示例Linux静态配置:ip addr add 203.x.x.x/24 dev eth1; ip link set eth1 up; ip route add default via 203.x.x.1 dev eth1 table hk。如果是PPPoE,先配置pppoe拨号并确认ppp0的local/peer地址与MTU(常见1492)。
3.
建立策略路由(源地址路由)
用ip rule/ip route把源自内网指定主机或网段的流量走香港链路:ip route add default via 203.x.x.1 dev eth1 table 200; ip rule add from 192.168.1.0/24 table 200 pref 100。这样内网设备源地址在该网段的流量会走表200。
4.
使用iptables做打标与复杂策略
若需按应用或端口分流,先用mangle打标:iptables -t mangle -A PREROUTING -s 192.168.1.100 -p tcp --dport 443 -j MARK --set-mark 0x1。然后用ip rule根据fwmark路由:ip rule add fwmark 1 table 200。注意启用sysctl net.ipv4.conf.all.rp_filter=0以避免反向路由被丢弃。
5.
NAT与DNS配置
如果香港IP为公网IP并希望走原生地址直出,可不做SNAT;若为私有网络或共享出口,设置SNAT:iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE。DNS建议使用香港DNS或内部DNS转发:在dnsmasq或unbound中为指定网络设置上游为ISP DNS,防止DNS泄漏或解析走错误线路。
6.
MTU与分片调整
确认链路MTU:ping -M do -s 1472 8.8.8.8。如果丢包或TCP慢启动,可把接口MTU设为1492或更低(pppoe常1492),或在服务器端设置 tcp_mtu_probing:sysctl -w net.ipv4.tcp_mtu_probing=1。路由器上也可设置 MSS clamping:iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu。
7.
带宽测试与基线测量
用iperf3建立基线:在远端(HK侧)起服务端iperf3 -s,在本地客户端iperf3 -c <香港IP> -P 4 -t 30测试TCP并发吞吐;用udp模式测试丢包与抖动。用mtr或traceroute定位延迟跳点:mtr -r -c 100 <目标IP>。
8.
流量整形:tc HTB + fq_codel实操
在出口接口(eth1)创建HTB根队列并按类分配:tc qdisc add dev eth1 root handle 1: htb default 30; tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit; tc class add dev eth1 parent 1:1 classid 1:10 htb rate 80mbit ceil 100mbit; tc class add dev eth1 parent 1:1 classid 1:20 htb rate 15mbit ceil 20mbit; 为每个类挂fq_codel:tc qdisc add dev eth1 parent 1:10 handle 10: fq_codel; 然后用tc filter匹配fwmark或ip/port分流:tc filter add dev eth1 parent 1: protocol ip handle 1 fw flowid 1:10。
9.
OpenWRT与pfSense的实现要点
OpenWRT可安装sqm-scripts实现fq_codel+cake,配置policy-based-routing包把指定主机或进程指向香港网关;在pfSense里,创建一个Gateway指向香港网关并用Gateway Groups做故障切换,设置Traffic Shaper或Limiters对应上传/下载限制,使用Firewall里规则打tag并在System > Routing里添加策略路由。
10.
多路负载与故障转移
若有多个出口,使用ip rule加metric或使用keepalived/VRRP做网关高可用;在Linux可用ip route replace和脚本监测(使用ping/arp/monit)切换路由表优先级。注意切换需同时调整iptables POSTROUTING以确保SNAT一致。
11.
监控与日志
部署流量监控(ntopng/iftop/prometheus+node_exporter),记录丢包/延迟/利用率。监控规则示例:当香港链路丢包>2%或延迟上升>50ms,触发邮件或切换到备用链路。日志保留iptables conntrack与tc统计便于后续分析。
12.
常见问题与排查流程
如果流量没走香港IP:先用 ip rule list、ip route show table
、iptables -t mangle -L 检查规则,看rp_filter、IP转发(sysctl net.ipv4.ip_forward=1)与NAT是否正确。若速率低,排查MTU、丢包、或链路被限速(联系ISP确认接入带宽)。
13.
问:如何验证某台主机确实走的是香港原生IP?
答:在该主机上运行curl ifconfig.me或在服务器端抓包(tcpdump -i eth1 host <主机IP>)验证出站源IP为香港IP;同时用traceroute或mtr看第一跳是否进HK链路,并在路由器上用 ip rule/iptables 检查命中记录。
14.
问:如何在不影响其他流量的情况下,给重要业务保证带宽?
答:用tc或router的shaper创建优先级队列(HTB+fq_codel或pfSense limiters),为重要业务设较高的rate/ceil并用iptables打标匹配业务流量;同时预留保底带宽和启用burst参数,避免突发占满链路。
15.
问:如果香港IP被封或路由不稳定,怎样快速切换并保持会话?
答:建议提前设置多网关策略(Gateway Group或ip rule多表)并使用Keepalived或HA脚本做ARP/路由切换;对于会话保持,可在应用层使用多路复用或反向代理(例如配置CDN或双出口负载),必要时通过DNS快速切换解析到备用出口。
来源:获取香港原生IP后的路由配置和带宽优化实操指南