Gee*_*gus 2 networking ip route
我有一台 Gentoo Linux 服务器。服务器连接到两个网络:内部和外部。
Internal network ip: 192.168.1.200
External network ip: 192.168.0.2
Run Code Online (Sandbox Code Playgroud)
如果我试图从服务器向自身发出请求,它会使用外部网络 IP。使用 Wget 连接到 nginx 给了我这个日志记录:
server ~ # tail -n 1 /var/log/nginx/error_log
192.168.0.2 - - [27/Aug/2014:19:04:42 +0300] "GET / HTTP/1.1" 200 5 "-" "Wget/1.14 (linux-gnu)"
Run Code Online (Sandbox Code Playgroud)
尽管如此,我还是直接连接到 192.168.1.200:
server ~ # wget http://192.168.1.200/
Run Code Online (Sandbox Code Playgroud)
路由表(外部网络上的度量更高,但似乎被忽略了): ip route show
server ~ # ip route
192.168.0.0/30 dev wan scope link metric 20
192.168.1.0/24 dev lan scope link metric 10
Run Code Online (Sandbox Code Playgroud)
ip 路由获取:
server ~ # ip route get 192.168.1.200
local 192.168.1.200 dev lo src 192.168.1.200
cache <local>
Run Code Online (Sandbox Code Playgroud)
如何让这台机器使用 192.168.1.200 而不是 192.168.0.2 连接到自身?
如果你运行的每个程序都有这个问题,你应该检查你的服务器防火墙规则。确保它仅NAT用于外部目的地。如果你有一个广泛的NAT规则,你的路由表就没有意义。
修复防火墙规则后,对于wget,您可以使用--bind-addressoption 选择要使用的接口:
wget --bind-address=192.168.1.200 http://192.168.1.200/
Run Code Online (Sandbox Code Playgroud)
从wget 文档:
'--绑定地址=地址'
在建立客户端 TCP/IP 连接时,绑定到本地计算机上的 ADDRESS。ADDRESS 可以指定为主机名或 IP 地址。如果您的机器绑定到多个 IP,此选项会很有用。
您可以使用.wgetrc文件使其永久化。
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |