1.
准备与前提
- 确认VPS提供商允许你按需配置网络(阅读服务条款)。
- 准备好SSH账号与私钥(例如:ssh -i ~/.ssh/id_rsa user@vps_ip)。
- 备份当前配置:sudo cp -r /etc/netplan /root/netplan.bak && sudo iptables-save > /root/iptables.bak。
2.
登录并检查当前网络环境
- 登录:ssh user@VPS_IP。
- 查看接口与IP:ip addr show;查看路由表:ip route show;查看默认网关:ip route | grep default。
- 测试外网:curl -s https://ifconfig.co 或 ping 8.8.8.8 来确认能否访问互联网。
3.
配置网络接口(Netplan 示例)
- 在Ubuntu 18.04+ 使用netplan:sudo ls /etc/netplan;编辑文件 sudo nano /etc/netplan/01-netcfg.yaml。
- 示例静态IP(根据你的网络适配):network: {version: 2, renderer: networkd, ethernets: {eth0: {addresses: [203.0.113.10/24], gateway4: 203.0.113.1, nameservers: {addresses: [8.8.8.8,8.8.4.4]}}}}。
- 应用配置:sudo netplan try (验证无误后)sudo netplan apply;如果是systemd-networkd或ifupdown,相应修改 /etc/network/interfaces 并重启网络服务。
4.
配置防火墙基础(UFW 与 iptables 示例)
- 推荐先用UFW做初步规则:sudo ufw default deny incoming; sudo ufw default allow outgoing;允许SSH:sudo ufw allow 22/tcp;开启:sudo ufw enable。
- 若使用iptables做细粒度控制:sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT;sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT;保存规则:sudo iptables-save > /etc/iptables/rules.v4。
5.
设置NAT 与端口转发(常见的拨号VPS场景)
- 若VPS作为网关需要做SNAT/MASQUERADE:sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE。
- 单端口转发示例(外网端口转到内网IP):sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.50:80;并在FORWARD链允许转发。
- 保存并持久化:安装iptables-persistent并保存规则,或使用netfilter-persistent保存。
6.
策略路由(Policy Routing)用于多虚拟IP或多出口
- 查看现有路由表:ip route show table main。
- 为指定源IP使用独立路由表:sudo ip rule add from 203.0.113.10/32 table 100;sudo ip route add default via 203.0.113.1 dev eth0 table 100。
- 验证:ip rule show;测试从该源发出的流量是否走指定出口(可用 curl --interface 203.0.113.10 ifconfig.co 测试)。
7.
流量限制与带宽控制(tc 简单示例)
- 安装 iproute2(通常已装):sudo apt install iproute2。
- 简单限速示例:sudo tc qdisc add dev eth0 root tbf rate 5mbit burst 32kbit latency 400ms(限制整个接口上行速率)。
- 更复杂的按IP限速可结合tc + iptables标记(tc filter)实现,建议在测试环境反复验证参数。
8.
持久化配置与开机生效
- netplan/ifupdown 的配置文件本身开机生效。
- iptables/nftables 规则持久化:sudo apt install iptables-persistent 并在 /etc/iptables/rules.v4 保存;或使用 nftables 的配置文件 /etc/nftables.conf 并 systemctl enable nftables。
- tc 与 ip rule 可写入 /etc/rc.local 或 systemd service 脚本以确保开机后执行。
9.
日志与监控:及时发现网络异常
- 开启系统日志:使用 rsyslog/journald 查看连接被拒或DROP记录(sudo journalctl -u ufw 或 sudo tail -f /var/log/syslog)。
- 部署简单监控:使用 pingdom/uptime-kuma/zabbix 监测端口与延迟;使用 vnStat 或 iftop 查看带宽使用。
- 建议配置告警(CPU/带宽/端口不可用)及时触发自动化脚本或通知。
10.
常见故障排查步骤
- 若无法连通,依次检查:接口状态(ip addr),路由表(ip route),防火墙规则(iptables -L -n / nft list ruleset),NAT规则(iptables -t nat -L -n)。
- 使用 tcpdump 抓包:sudo tcpdump -i eth0 host 1.2.3.4 -nn -vv 观察包是否到达或被阻塞。
- 回滚到备份:如果配置导致网络中断,恢复备份并在控制台或云面板上修复。
11.
合规与安全注意事项
- 遵守当地法律与服务提供商协议,不要用于非法活动或规避监管。
- 保持SSH安全(更换默认端口、使用密钥认证、禁用密码登录、安装fail2ban)。
- 定期更新系统:sudo apt update && sudo apt upgrade,并审计开放端口和服务。
12.
问:如何把VPS上的某个端口永久地映射到内网机器?
- 回答:使用iptables的DNAT规则并允许FORWARD,然后持久化规则。示例步骤:1) sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.50:80;2) sudo iptables -A FORWARD -p tcp -d 192.168.0.50 --dport 80 -j ACCEPT;3) sudo apt install iptables-persistent && sudo netfilter-persistent save。
13.
问:如何限制单个IP的上行带宽以防止滥用?
- 回答:可使用tc结合iptables mark来对单IP限速。步骤概览:1) sudo iptables -t mangle -A PREROUTING -s 203.0.113.50 -j MARK --set-mark 10;2) sudo tc qdisc add dev eth0 root handle 1: htb default 30;3) sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 1mbit;4) sudo tc filter add dev eth0 protocol ip parent 1:0 handle 10 fw flowid 1:10。测试并根据需要调整rate。
14.
问:如何提高拨号VPS的可用性与快速故障切换?
- 回答:建议结合监控与自动化脚本或使用keepalived做VRRP主备切换。基本思路:1) 在两台VPS上部署相同服务并使用keepalived配置虚拟IP与健康检查;2) 配置监控(如Uptime-kuma)检测关键端口并触发脚本重启或切换;3) 在DNS上设置短TTL以便快速切换外部访问(注意DNS缓存)。此外,使用配置管理工具(Ansible)与基础镜像可以快速恢复服务。
来源:配置教程一步步教会你管理柬埔寨拨号vps的网络策略