背景

  1. 刚入门时买了两台RN DC2的机器用于建站,这两台机器网络处于能用这个阶段,但是如果需要ssh做一些操作时可能会经常会出现卡顿,时延也相对较高
  2. 后面又买了DMIT美西的机器,走的是cn2,使用起来明显体验好很多,因此想到使用DMIT做端口转发

现状

  1. 本地PingRN的机器,结果如下:
    dc2
  2. 本地PingDMIT的机器,结果如下:
    dmit
  3. DMITPingRN的结果如下:
    dmit-dc2
  4. 从上面可以简单的看出,通过DMIT会有更好的体验,除了ping的区别,RN还会有丢包的情况,所以体验不会太好

解决方法

  1. 预期网络拓扑图:
    流量图

iptables端口转发

  1. 设置iptables支持ip转发
vim /etc/sysctl.conf
...
net.ipv4.ip_forward=1
...
  1. 开启系统NAT模块
iptables -t nat -A POSTROUTING -j MASQUERADE
  1. 设置转发规则
# 1. 设置入规则
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 14822 -j DNAT --to-destination 148.135.*.*:22
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 7422 -j DNAT --to-destination 74.*.*.*:22

# 2. 设置出规则
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 14822 -d 148.135.*.* -j SNAT --to-source 154.17.*.*
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 7422 -d 74.12.*.* -j SNAT --to-source 154.17.*.*
  1. 测试ssh是否可行
  • 148 节点
    148

  • 74 节点
    74

  1. 持久化iptables
sudo sh -c "iptables-save > /etc/iptables/rules.v4"

最后

因为平时会使用nvim进行coding所以,ssh的提升,对整个开发体验还是不错的,在vps上不用担心github和这种源不通,编译好了也能高速的国际互联。